API and admin interface for itdagene.no & admin.itdagene.no
- GraphQL API with django-graphene
- Python 3.6 with Django
- Postgres for persistant storage
- Celery (with redis-broker) for async tasks
- CircleCI for continuous integration
- yarn and webpack for admin panel
First make sure that you have the following software installed on your system:
Setup python environment
$ python3 -m venv venv $ source venv/bin/activate $ pip install -r requirements/base.txt $ echo "from itdagene.settings.dev import *" > itdagene/settings/local.py $ docker-compose up -d # This starts the database & redis
Install and build frontend dependencies:
$ yarn $ yarn build
Starting the app
$ docker-compose up -d $ source venv/bin/activate $ python manage.py runserver
Since celery doesn't support python 3.7 yet, run
./fix-celery.sh to fix it.
In order to setup a new dev environment you have to create a superuser. Every time there are new migrations, you have to apply them. If you don't, the
runserver command will give you a warning.
$ python manage.py migrate $ python manage.py createsuperuser
Have you changed a model? Then you have to make and apply migrations. Migrations should always be committed to the repo in the same commit/PR as the model change.
$ python manage.py makemigrations $ python manage.py migrate
In order to execute the tests, you have to install
tox. The tests are always run in the continuous integration server, and no code that doesn't pass all the tests (including linting) should not be merged into the master branch.
$ pip install tox $ tox
$ isort -rc itdagene # Fix isort errors $ black itdagene # Fix code formatting $ tox -e isort -e flake8 -e yapf # Verify code style
$ celery worker -A itdagene # worker $ celery beat -A itdagene # beat $ celery flower -A itdagene --address="127.0.0.1" --port=5555 # flower