Giter VIP home page Giter VIP logo

education-backend's Introduction

CI Maintainability Test Coverage

Django-based production project, integrated with Tinkoff, zoom.us, Dashamail, Postmark, S3 and telegram. Frontend is built on vue.js in the separate repo.

Configuration

Configuration is stored in src/app/.env, for examples see src/app/.env.ci

Installing on a local machine

This project requires python 3.11. Python virtual environment should be installed and activated.
Deps are managed by pip-tools with requirements stored in pyproject.toml.

Install requirements:

pip install --upgrade pip pip-tools
make

Configure postgres and redis. It's convenient to use docker and docker-compose:

docker-compose up -d

If you don't have access to de-anonymized db image use postgres:13.6-alpine in docker-compose.yml instead:

postgres:
    image: postgres:13.6-alpine
    ...

Run the server:

cd src && cp app/.env.ci app/.env  # default environment variables
./manage.py migrate
./manage.py createsuperuser
./manage.py runserver

Testing:

# run lint
make -C .. lint

# run unit tests
make -C .. test

Backend Code requirements

Style

  • 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.

Code organisation

  • KISS and DRY.
  • Obey django best practices
  • 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.

education-backend's People

Contributors

renovate[bot] avatar f213 avatar dependabot-preview[bot] avatar da-maltsev avatar dependabot[bot] avatar nkiryanov avatar grepto avatar igoose1 avatar abdujabbar avatar drakulavich avatar withshubh avatar hnthh avatar juzexe avatar metheoryt avatar tvojamamalama avatar sobolevn avatar nvo87 avatar taranovskiy avatar inerv avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.