Leaderboards for your local community gym.
Go to file
Andrew Lalis ba4a0c16d6 Improved main project readme. 2023-05-17 11:38:26 +02:00
design Added icons, better navigation, and working translation. 2023-01-24 19:53:01 +01:00
gymboard-api Add account deletion, data requests, and more. 2023-03-31 19:02:46 +02:00
gymboard-app Add account deletion, data requests, and more. 2023-03-31 19:02:46 +02:00
gymboard-cdn Added content-length protections. 2023-03-29 09:26:38 +02:00
gymboard-cli Added more docs 2023-03-26 13:33:10 +02:00
gymboard-search Redirect to main user page after follow or unfollow. 2023-03-27 19:05:51 +02:00
gymboard-uploads Added logging config. 2023-04-02 12:33:05 +02:00
.gitignore Added build script. 2023-04-02 12:05:07 +02:00
README.md Improved main project readme. 2023-05-17 11:38:26 +02:00
build_apps.d Improved main project readme. 2023-05-17 11:38:26 +02:00
docker-compose.yml Added start of cdn implementation. 2023-01-31 15:00:56 +01:00

README.md

Gymboard

Leaderboards and social lifting for your local community gym.

Gymboard is a platform for sharing videos of your gym lifts with the world, from your local gym to the world's stage.

Architecture Overview

Gymboard is designed as a sort of hybrid architecture combining the best of microservices and monoliths. Here's a short list of each project that makes up the Gymboard ecosystem, and what they do:

Project Type Description
💻 gymboard-app TS, VueJS, Quasar A front-end web application for users accessing Gymboard.
🧬 gymboard-api Java, Spring The main backend service that the app talks to. Includes auth and most business logic.
🔍 gymboard-search Java, Lucene An indexing and searching service that scrapes data from gymboard-api to build Lucene search indexes.
🗂 gymboard-cdn Java, Spring A minimal content-delivery service that manages general file storage, including video processing.
🛠 gymboard-cli D WIP command-line-interface for managing all services for development and deployment.
📸 gymboard-uploads D, Handy-Httpd WIP dedicated service for video upload processing, to extract functionality from gymboard-cdn.

Development

Gymboard is comprised of a variety of components, each in its own directory, and with its own project format. Follow the instructions in the README of the respective project to set that one up.

A docker-compose.yml file is defined in this directory, and it defines a set of services that may be used by one or more services. Install docker on your system if you haven't already, and run docker-compose up -d to start the services.

WIP: A build_apps.d script is available to try and build all projects and collect their artifacts in a build/ directory for deployment.

Eventually, this functionality will be merged into gymboard-cli.

Local Environment

The requirements to develop each project depend of course on the type of project. But in general, the following software recommendations should hold:

Type Requirements
Java Latest LTS version, latest Maven version
VueJS Vue 3, with a recent version of NodeJS and NPM or similar.
D D toolchain (compiler + dub) for D version >= 2.103, DMD recommended compiler

Docker is recommended for running local dependencies like DB, mail server, message queues, etc.