Skip to content
This repository has been archived by the owner on Sep 1, 2021. It is now read-only.

OysteinAmundsen/gymsystems

Repository files navigation

GymSystems

Greenkeeper badge Build Status Dependency Status devDependency Status Known Vulnerabilities GitHub issues Twitter

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.

Table of contents

Installation

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

Development

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.

Server

yarn build:server
yarn start:server

OR take a look at the instructions under ./server for details on i.e. debugging.

Client

yarn build:client
yarn start:client

OR take a look at the instructions under ./client for details on i.e. debugging.

Database

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.

DB Model

For a detailed explanation of the different models, please refer to JS Docs inline in the actual server/model files.