Structure
Folders structure
< PROJECT ROOT >
|
|-- .github/ # GitHub workflows
| |-- ...
|
|-- ci/ # CI related files
| |-- docker-compose.yml # Run test environment
|
|-- docker/ # Files to build docker image
| |-- nginx # Nginx files
| | |-- nginx.conf # Nginx config
| | |-- uwsgi_params # Include file for uwsgi params
| |
| |-- server # Server command scripts
| | |-- backend.sh # Run django
| | |-- celery_beat.sh # Run celery beat
| | |-- celery_worker.sh # Run celery worker
| | |-- flower.sh # Run flower
| |
| |-- .dockerignore.production # Docker ignore files for production image. Exclude tests
| |-- Dockerfile # Dockerfile to test, production image build
|
|-- locale/
| |-- ... # Locale files
|
|-- scripts/ # Tools
| |-- lint.sh # Lint script
|
|-- server/
| |-- apps/ # Django apps
| | |-- core # Core utils
| | | |-- ...
| | | ...
| |
| |-- settings/ # Application settings
| | |-- components/ # Settings grouped by components. Use `split_settings` library
| | | |-- ...
| | |
| | |-- environments/ # Specific settings for envs
| | | |-- build.py # Docker build settings
| | | |-- development.py.example # Draft for local development settings (should be cloned to development.py and updated to your environment)
| | | |-- production.py # Production settings
| | | |-- test.py # CI tests settings
| | |
| |-- celery_app.py # Celery entrypoint
| |-- urls.py # Django routing
| |-- wsgi.py # WSGI app server entrypoint
| |-- asgi.py # ASGI app server entrypoint
|
|-- tests/ # Tests folder
| |-- ...
|
|-- ...
|-- .pre-commit-config.yaml # Pre commit config. To install run: "make install_pre_commit"
|-- pyproject.toml # Poetry deps, tools settings
|-- setup.cfg # Tools settings
|-- Makefile # Useful scripts. To use run: "make <command>"
|-- ...
Django application structure
< APP ROOT >
|
|-- admin/ # admin panel related modules
| |-- inlines/ # inlines
| | | ...
| |-- ...
|
|-- api/ # api related modules
| |-- routes/ # routes declarations
| | |-- ...
| |
| |-- serializers/ # serializers
| | |-- ...
| |
| |-- views/ # views
| | |-- ...
| |
| |-- urls.py # urls registration based on routes
|
|-- logic/ # business layer logic
| |-- commands/
| | |-- ...
| | |-- main.py # commands registration
| |
| |-- queries/
| | |-- ...
| | |-- main.py # queries registration
| |
| |-- services/
| | |-- ... # business layer services
| |
| |-- interfaces/
| | |-- ... # business layer interfaces
|
|-- management/ # django commands
| |-- ...
|
|-- migrations/ # django database migrations
| |-- ...
|
|-- models/ # models
| |-- managers/ # models managers
| | |-- ...
| |-- enums/ # enums
| | |-- ...
| |
| |-- ...
|
|-- pages/ # django views modules
| |-- views/ # views
| | |-- ...
| |
| |-- urls.py # urls routing registration
|
|-- services/
| |-- ... # infrastructure layer services
|
|-- tasks/
| |-- ... # async tasks
|
|-- apps.py # application config