This is a complete web based system for managing the secretariat for Team Gymnastic sports. There are not many proffesional scoring or managing systems available, and therefore we saw the need for creating one. And since these minority sports are typically not funded, and therefore prone to voluntary work, we wanted this system to be a community open-source project as well. We will therefore never ask for money for this system, but instead wecome improvements through pull-requests.
We are hosting the system under gymsystems.no, but you are welcome to host this yourself. Please read the installation guide below for detailed instructions on how to set this up.
We've developed a comprehensive users manual over at our wiki. This should describe in depth how the system is to be used. If you feel that the manual is missing some information, feel free to open a new issue, and we will add or clarify.
This system is written entirely in Typescript. It is intended to be run in a docker container, but it is flexible enough to setup any which way you want. Install on your own docker-cloud container stack using this button, or follow the manual installation guide below.
In order to install and setup the system manually, you need to install the following first:
We are also using yarn
as the package manager for this system. This is optional, but highly recommended.
For a production ready deployment, do this:
yarn install
yarn start:docker
The start:docker
script will setup both the application docker container and the database container.
They're put together using docker-compose
and should be available on port 80 of you docker-machine.
If all you want to do is startup this project, your pretty much done now. The application should be available on http://[docker-machine]
<- which usually is localhost
We welcome pull-requests to our system. We therefore want you to be able to setup a development environment quickly and easily. The information below should be all you as a developer require to get up and running quickly, and make all the changes you want.
As a contributer, you should study our Contribution guidelines before making pull-requests.
This repository is a monorepo workspace, which means that we've split the server/client parts into completelly separate systems. You can control them from this root folder, but they can also run standalone from their own subfolder.
yarn build:server
yarn start:server
OR take a look at the instructions under ./server for details on i.e. debugging.
yarn build:client
yarn start:client
OR take a look at the instructions under ./client for details on i.e. debugging.
For development, you don't need a docker container for the application. You only need a database. The following will build out a docker container for your database:
yarn start:db
The docker container shoud be setup with a volume mounted from your local file system, so that data will be persisted even if the docker container goes down, is rebuilt or, for whatever other reason, dissapears.
TypeORM
is inspired by large scale ORM solutions like Hibernate
, which means it supports both schema synchronisation and migrations. This is great as we keep all our structure in code instead of relying on sql
scripts for setup.
For a detailed explanation of the different models, please refer to JS Docs inline in the actual server/model files.