Backend for education.borshev.com
Django-based production project, integrated with Tinkoff, zoom.us, Mailchimp, Postmark, S3 and telegram. Frontend is built on vue.js in the separate repo.
Configuration is stored in src/app/.env
, for examples see src/app/.env.ci
This project requires python3.8 and sqlite.
Install requirements:
cd src && pip install -r requirements.txt
cp app/.env.ci app/.env # default environment variables
./manage.py migrate
./manage.py createsuperuser
Testing:
# run unit tests
$ pytest
Development servers:
# run django dev server
$ ./manage.py runserver
- Obey django's style guide.
- Configure your IDE to use flake8 for checking your python code. For running flake8 manualy, do
cd src && flake8
- Prefer English over your native language in comments and commit messages.
- Commit messages should contain the unique id of issue they are linked to (refs #100500)
- Every model and a model method should have a docstring.
- KISS and DRY.
- Obey [django best practices](http://django-best-practices.readthedocs.io/en/latest/index.html
- If you want to implement some business logic — make a service for that. Service examples: UserCreator, OrderCreator
- No logic is allowed within the views or templates. Only services and models.
- Use PEP-484 type hints when possible.
- Prefer Manager methods over static methods.
- Do not use signals for business logic. Signals are good only for notification purposes.
- No l10n is allowed in python code, use django translation.