Loading repository dataβ¦
Loading repository dataβ¦
alefeans / repository
Production-ready modern Python template featuring Clean Architecture, DDD, and FastAPI π
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Production-ready modern Python template featuring Clean Architecture, Domain-Driven Design (DDD), and FastAPI. It demonstrates how to structure applications with proper separation of concerns, comprehensive testing, and type safety.
This template provides a solid foundation that can be easily extended for any domain. It features:
π Documentation:
While it's possible to run the application locally just using Python, it's highly recommended to install Docker to keep your local environment clean and facilitate the use of all the features.
The application uses environment variables for configuration. You can check all the available options here. You can create and fill a .env file using the .env.example file as a reference, or set them manually like this:
export DB_URL="<database_url>"
export JWT_SECRET_KEY="<my_super_secret_key>"
...
If using Docker, just edit the environment variables on docker-compose.yml.
Activate your Python virtual environment and run:
poetry install
# or
pip install .
mypy app tests
ruff check .
ruff format app tests/
The template uses pre-commit hooks to automatically run linting, formatting, and type checking before commits:
# Install pre-commit hooks (run once after cloning)
make pre-commit-install
# Run all pre-commit hooks manually
make pre-commit-run
# Hooks will run automatically on git commit
# To bypass hooks temporarily: git commit --no-verify
β οΈ If not using Docker, remember to run the init.sql in your local database before running the application.
# Local development (requires local PostgreSQL)
alembic upgrade head && poetry run app
# or
alembic upgrade head && python -m app
# with Docker - Production build (optimized image)
docker compose up app pg-db -d
# with Docker - Development build (with hot reload and dev dependencies)
docker compose up app-dev pg-db -d
# Using Make commands
make docker-up # Production Docker setup
make docker-up-dev # Development Docker setup with hot reload
Then, open the browser on http://localhost:8080/docs to see the OpenAPI docs:
# to run all the tests
pytest
# to run only the unit tests
pytest tests/unit/
# to run only the integration tests
pytest tests/integration/
# with Docker
docker compose up tests
By default, hot reload is configured independently of whether you're using Docker or not, so you can have faster development feedback like this:
Tests can also be triggered automatically whenever a test file is modified due to the use of pytest-watch, which leads to a nice and efficient TDD workflow:
For other options, you can use:
# to watch all project tests (using dev image with dependencies)
docker compose up watch
# to watch only unit tests
docker compose up watch-unit
# to watch only integration tests
docker compose up watch-integration
# without Docker
ptw -w -c tests/
ptw -w -c tests/unit/
ptw -w -c tests/integration/
# Using Make commands for local development
make watch-tests # Watch all tests
make watch-unit-tests # Watch unit tests only
make watch-integration-tests # Watch integration tests only
This project is licensed under the MIT License - see the LICENSE file for details.