Микросервис для сбора и агрегации статистики откликов кандидатов на вакансии с админ-дашбордом.
- Python 3.12
- FastAPI
- asyncpg (для работы с БД)
- psycopg2-binary (для Alembic миграций)
- Alembic (миграции БД)
- PostgreSQL 15
- React 18
- TypeScript
- Tailwind CSS
- Recharts
Все сервисы (БД, бэкенд, фронтенд) запускаются одной командой:
docker-compose up --buildПосле запуска:
- Frontend: http://localhost:3000
- Backend API: http://localhost:8000
- PostgreSQL: localhost:5433
docker-compose downdocker-compose down -v.
├── app/ # Backend (FastAPI)
│ ├── database/ # Подключение к БД и миграции
│ ├── models/ # Pydantic модели
│ ├── repositories/ # Репозитории для работы с БД
│ ├── routes/ # API эндпоинты
│ ├── services/ # Бизнес-логика
│ └── utils/ # Утилиты
├── frontend/ # Frontend (React)
│ ├── src/
│ │ ├── api/ # API клиент
│ │ ├── components/ # React компоненты
│ │ ├── pages/ # Страницы
│ │ ├── types/ # TypeScript типы
│ │ └── utils/ # Утилиты
│ └── Dockerfile
├── docker-compose.yml # Конфигурация Docker Compose
└── Dockerfile # Dockerfile для бэкенда
POST /api/applications- Создание откликаGET /api/applications- Список откликов (с фильтрами и пагинацией)PATCH /api/applications/{id}/status- Изменение статуса
GET /api/analytics/summary- Сводная статистикаGET /api/analytics/vacancies- Топ вакансий
GET /health- Health check
Проект использует Alembic для управления миграциями БД. Alembic использует синхронный драйвер psycopg2, в то время как приложение использует асинхронный asyncpg.
Миграции автоматически применяются при запуске через Docker Compose.
Для ручного применения миграций:
# Применить все миграции
alembic upgrade head
# Откатить последнюю миграцию
alembic downgrade -1
# Посмотреть текущую версию
alembic current
# Посмотреть историю миграций
alembic history# Автоматическая генерация на основе изменений моделей
alembic revision --autogenerate -m "описание изменений"
# Создание пустой миграции
alembic revision -m "описание изменений"# Установка зависимостей
uv pip install -e .
# Применить миграции
alembic upgrade head
# Запуск
uvicorn app.main:app --reloadcd frontend
npm install
npm run devDB_HOST- хост БД (по умолчанию: localhost)DB_PORT- порт БД (по умолчанию: 5432)DB_USER- пользователь БД (по умолчанию: postgres)DB_PASSWORD- пароль БД (по умолчанию: postgres)DB_NAME- имя БД (по умолчанию: applications_db)
VITE_API_URL- URL API (по умолчанию: /api для production, http://localhost:8000 для dev)