Учебный проект - система для ведения дневниковых карт по методике DBT (Dialectical Behavior Therapy) с применением чистой архитектуры. Проект создавался для изучения современных подходов к разработке.
⚠️ Важное замечание: Это учебный проект для портфолио. В реализации могут быть ошибки, архитектурные недочёты и места, требующие оптимизации. Я осознаю недостатки и активно работаю над их исправлением.
- ⚡ FastAPI для Python backend API
- 🧰 SQLAlchemy 2.0+ с async поддержкой для работы с БД
- 🤖 Dishka - IoC контейнер для управления зависимостями
- 🔍 Pydantic для валидации данных и управления настройками
- 💾 PostgreSQL в качестве основной SQL базы данных
- 🔒 JWT аутентификация с безопасным хранением токенов
- 🔑 Secure password hashing по умолчанию
- 🐋 Docker Compose для development и production окружений
- 📞 Nginx в качестве API gateway
- ✅ Pytest с поддержкой asyncio для тестирования
- 🏭 CI/CD на основе GitHub Actions
- 🔑 OpenTelemetry для мониторинга и трассировки
- 📊 Prometheus для сбора метрик
- 📈 Grafana для визуализации метрик и создания дашбордов
- Message brokers: Kafka (через FastStream), Redis (через TaskIQ)
- Хранилище файлов: AWS S3 (boto3)
- PDF-генерация: ReportLab
- Telegram-бот: aiogram с aiogram-dialog
- Временное решение для пользователей: Django + Djoser
fastapiDBTProject/
├── src/
│ ├── diary_ms/ # Основной сервис дневниковых карт
│ │ ├── domain/ # Domain layer - бизнес-логика
│ │ │ ├── entities/ # Сущности предметной области
│ │ │ ├── value_objects/ # Value objects
│ │ │ └── events/ # Domain events
│ │ ├── application/ # Application layer - координация
│ │ │ └── diary_card/ # Модуль дневниковых карт
│ │ │ └── interactors/
│ │ │ ├── commands/ # Команды (CQRS)
│ │ │ └── queries/ # Запросы (CQRS)
│ │ │
│ │ ├── infrastructure/ # Infrastructure layer
│ │ │ ├── gateways/ # Репозитории, миграции
│ │ │ ├── brokers/ # Kafka, Redis
│ │ │ └── services/ # Внешние API
│ │ └── presentation/ # Presentation layer
│ │ ├── api/ # REST API endpoints
│ │ ├── amqp/ # FastStream интерфейсы
│ │ └── telegram/ # Telegram bot handlers
│ └── user_ms/ # Сервис пользователей (Django)
- Чистая архитектура основного сервиса (diary_ms)
- FastAPI с асинхронными endpoint
- JWT аутентификация и авторизация
- PostgreSQL + SQLAlchemy 2.0 с миграциями
- Docker окружение с Nginx gateway
- OpenTelemetry для мониторинга
- Telegram-бот для удобного ведения записей
- DDD - доменные модели получились анемичными. Из-за этого в идеале необходимо переписать доменный слой, инфраструктурный и интеракторы. Возможно, отработать навык написания домена будет лучше уже в другом проекте, а этот оставить как есть.
- User MS (Django) - временная заглушка с Djoser, требует замены на самостоятельный ограниченный контекст с отдельным репозиторием
- Тестовое покрытие - требует расширения
- Производительность - нуждается в оптимизации
- Удаление Django и переход на полный FastAPI стек
- Рефакторинг архитектуры для лучшего соответствия DDD
- Улучшение event-driven архитектуры
- Расширение мониторинга и логирования
- Улучшение документации API
# Клонирование репозитория
git clone <repository-url>
# Копирование файла окружения
cp .env.dist .env
# Запуск в Docker
docker-compose up# Установка зависимостей
poetry install
# Запуск тестов
pytest tests/ --asyncio-mode=auto
# Проверка типов
mypy src/ --strict
# Линтинг
ruff check --fix src/
ruff format src/- Python 3.13 с использованием новых возможностей
- FastAPI - создание REST API с асинхронными endpoint
- DDD - практическое применение Domain-Driven Design
- CQRS - разделение команд и запросов
- SQLAlchemy 2.0+ - работа с БД в async режиме
- Docker - контейнеризация и оркестрация
- Message brokers - Kafka и Redis для event-driven архитектуры
- Мониторинг - OpenTelemetry и Prometheus
- Проектирование по DDD принципам
- Микросервисная архитектура
- Clean Architecture и разделение ответственности
- Dependency Injection через Dishka
- Event-driven и CQRS паттерны
- Type hints и strict typing с mypy
- Автоматическое тестирование с pytest
- Линтинг и code quality с ruff
- CI/CD с GitHub Actions
- Контейнеризация с Docker
Этот проект позволил изучить:
- Практическое применение DDD в реальном проекте
- Современный Python стек (FastAPI, SQLAlchemy 2.0+)
- Микросервисные паттерны и их реализацию
- Инфраструктурные решения (Docker, Nginx, мониторинг)
- Профессиональные инструменты разработки
- Лучшие практики проектирования API
Как учебный проект, я открыт для:
- Конструктивной критики архитектуры
- Предложений по улучшению реализации
- Помощи в исправлении ошибок
- Совместного изучения best practices
Проект распространяется под лицензией MIT.
Примечание для рекрутеров: Данный проект демонстрирует моё понимание современных подходов к разработке и готовность к профессиональному росту. Я осознаю существующие недостатки в архитектуре и активно работаю над их устранением, изучая лучшие практики и паттерны разработки.