# blog.pyaqa.ru [![status-badge](https://cicd.pyaqa.ru/api/badges/2/status.svg)](https://cicd.pyaqa.ru/repos/2) Блог pyaqa - FastAPI приложение для блога. ## Features - FastAPI REST API - Python 3.13+ - Async/await support - Type hints throughout - Comprehensive testing - Auto-generated documentation ## Requirements - Python 3.13+ - uv package manager ## Installation ```bash uv sync ``` ## Usage ```bash uv run python -m app.main ``` Server runs on `http://0.0.0.0:8000` API documentation: - Swagger UI: http://localhost:8000/docs - ReDoc: http://localhost:8000/redoc ## Available Commands | Command | Description | |---------|-------------| | `uv sync` | Install dependencies | | `uv run python -m app.main` | Start development server | | `uv run pytest --cov=app --cov-fail-under=70` | Run tests with coverage | | `uv run ruff check . --fix` | Run linters | | `uv run ruff format .` | Format code | | `uv run isort . --profile black --filter-files` | Sort imports | | `uv run mypy .` | Type checking | | `uv run mkdocs build` | Build documentation | | `uv run mkdocs serve` | Serve documentation locally | ## Dependencies ### Runtime - dishka>=1.0.0 - fastapi>=0.136.0 - pydantic-settings>=2.7.0 - uvicorn>=0.44.0 ### Development - **Tests**: httpx>=0.28.1, mimesis>=13.0.0, pytest-asyncio>=1.3.0, pytest-cov>=7.1.0, pytest>=9.0.3 - **Lint**: black>=23.7.0, isort>=8.0.1, ruff>=0.15.11 - **Types**: mypy>=1.20.1 - **Docs**: interrogate>=1.7.0, mkdocs>=1.6.0, mkdocstrings[python]>=0.24.0, pydocstyle>=6.3.0 ## Project Structure ``` app/ ├── main.py ├── core/ │ ├── config.py │ └── exceptions.py ├── api/ │ └── v1/ ├── modules/ └── common/ └── error_handler.py tests/ ├── api/ ├── unit/ ├── integration/ └── e2e/ docs/ ├── api/ └── development/ ``` ## Architecture Layered Architecture: - **API Layer** - HTTP endpoints, request/response handling - **Service Layer** - Business logic, orchestration - **Repository Layer** - Data access abstraction - **Database** - Persistence Dependency Injection: **Dishka** (not FastAPI Depends) ## Testing ```bash # Run all tests uv run pytest --cov=app --cov-fail-under=70 # Run by type uv run pytest tests/unit/ -v uv run pytest tests/api/ -v uv run pytest -m unit -v uv run pytest -m api -v ``` ## Documentation ```bash # Build docs uv run mkdocs build # Serve locally uv run mkdocs serve ``` ## CI/CD Woodpecker CI is configured in `.woodpecker/` directory. ## License See [LICENSE](LICENSE) file. ## Changelog ### [v0.1.0] - 2026-04-25 #### Added - feat: update project structure and docs (9772c3c) - [QG] Add quality gates on main branch (9c3b44b) - [Lint] add pipeline (fa8751c) #### Changed - pipeline updated (7cd0d8c) #### Other - refactor: remove all inline comments from code (c85e981) - Dev dependencies (0480712) - [Blog] Preparing (ba45f40) - blog project init (ef797bc)