/ksicht

This is the KSICHT annual chemistry competition website that allows elementary and high schools students to show off theirs skills on a challenging tasks.

Primary LanguagePythonGNU Affero General Public License v3.0AGPL-3.0

What is this?

This is the KSICHT chemistry competition website that allows elementary and high schools students to show off theirs skills on a series of challenging tasks.

The competition takes place annually and consist of 4 quaterly series that loosely follow the general school year, e.g. starts on autumn and finishes at late spring. Each series has approx. 5 tasks to complete and contenders will receive points for each task separately. They can also receive bonus badges for various acheievements. The contestant to receive the most points in total, wins.

Tech details

This app is built with Python powered by Django with the usual bells and whitles. Styling is based on the Bulma CSS framework. We use PostgreSQL as the database.

Development

Please make sure you have NVM installed first.

Installing

Activate NVM:

nvm use

There is a Makefile to simplify tasks. Start by creating your Python virtual env:

make init-env && source .env/bin/activate

Next, install dependencies including the dev and test stuff:

make install && make install-dev && make install-test

You will also need to boostrap your database. By default, a PostgreSQL database named ksicht is expected to exist on your local machine. This can be modified by overriding the DATABASE_DSN env variable when running the app.

First though, you'll need the database to exist:

createdb ksicht

Once there, initialize the database by issuing:

make migrate

This will run Django migrations & will create all the necessary tables.

Running the app

Just run this:

make run

Running tests

Again, use the Makefile:

make test

Building & deploying

This app is distributed as a Docker container and hosted on Docker Hub. Makefile provides all the necessary commands:

make build && make push

# Shortcut to the above:
make release