I'm python developer for many years. I'm working with many frameworks and libraries. Always project structure is my important point. After using Django and drf and Flask and FastAPI I'm trying to create a template for python project. With all experience I'm trying to create a template for python project. You can use this template for your project and suggest me what you can improve. Tnx a lot.
dev
(development)test
prod
(production)
with split docker and requirements and config files
__init__
: just import in init fileservices
is contain any external service (for microservices)- using
semver
method withbumb version
tools for versioning (read here and see here) - using
git strategy
for branches management system (read here and see here) - using commit message template e.g.
[type]:[module]-[desc]
for more readable commit messages - using a standard linter for code quality and readability (pylint, flake8, pep8, black) -> suggest to use
pep8
(here) - using
Sphinx
documentation (here) - using
pytest
for tests (here) - using documentation for your project (here) -> suggest to use numpydoc
- add new section
- improve existing section
- introduce new structure in a section
/project
├── /src
│ ├── __init__.py
│ ├── __main__.py
│ ├── wsgi.py
│ ├── /migrations
│ ├── /main
│ │ ├── __init__.py
│ │ ├── /db
│ │ │ ├── connector.py
│ │ │ ├── session.py
│ │ │ └── base_model.py
│ │ ├── /utils
│ │ │ ├── encrypt
│ │ │ └── http
│ │ ├── /exceptions
│ │ ├── /templates
│ │ │ └── swagger.html
│ │ ├── /model
│ │ │ ├── models.py
│ │ │ ├── schemas.py
│ │ │ └── enums.py
│ │ ├── /views
│ │ │ └── swagger.py
│ │ ├── /services
│ │ │ ├── base_service.py
│ │ │ └── [service].py
│ │ ├── /translation
│ │ ├── /log
│ │ │ ├── handlers.py
│ │ │ └── helpers.py
│ │ ├── bootstrap.py
│ │ ├── urls
│ │ ├── settings.py
│ │ ├── deps
│ │ ├── celery-app.py
│ │ └── celery-conf.py
│ ├── /module1
│ │ ├── /exceptions
│ │ ├── app.py
│ │ ├── /views
│ │ ├── /templates
│ │ ├── /models
│ │ ├── /translation
│ │ ├── urls
│ │ ├── /services
│ └── /module2
│ └── ...
├── /logs
│ ├── app
│ ├── db
│ ├── celery
├── /statics
│ ├── css
│ ├── js
│ ├── img
├── /media
│ ├── img
├── /fixture
├── /tests
│ ├── pytest.ini
│ ├── conftest.py
│ ├── /test_api
│ ├── /test_model
│ ├── /logic
├── /docs
│ ├── docker-cmopose.yml
├── /config
│ ├── base
│ ├── dev
│ ├── prod
│ └── test
├── /docker
│ ├── /base
│ │ ├── Dodkerfile
│ │ └── docker-cmopose.yml
│ ├── /dev
│ │ ├── Dodkerfile
│ │ └── docker-cmopose.yml
│ ├── /prod
│ │ ├── Dodkerfile
│ │ └── docker-cmopose.yml
│ └── /test
│ ├── Dodkerfile
│ └── docker-cmopose.yml
├── /scripts
├── /requirements
│ ├── req-base.txt
│ ├── req-dev.txt
│ ├── req-prod.txt
│ └── req-test.txt
├── Readme.md
├── CHANGELOG.md
├── TODOLIST.md
├── AUTHORS.md
├── LICENSE
├── /.run
├── .gitignore
├── .dockerignore
├── .editorconfig
├── .bumpversion.cfg
├── .env
├── .coveraterc
└── .pre-commit-config.yaml