Цель: подготовить каркас приложения, базу, деплой и первый CRUD.
Результат: можно зарегистрироваться, авторизоваться и получить токен.
- структура проекта;
- настройка Alembic + SQLAlchemy (async);
- добавление .env, pydantic Settings;
- docker и docker-compose (PostgreSQL + PG_admin + приложение);
- базовая модель
User(uid, fio, email, role); - CRUD для пользователей;
- JWT авторизация;
- юнит-тесты (pytest + httpx).
Цель: реализовать базовый каталог книг.
Результат: полноценный каталог книг с фильтрацией.
- модель Book: title, author, isbn, year, genre;
- pепозиторий и сервисный слой для книг;
- CRUD эндпоинты
/books; - поиск по названию, автору и ISBN;
- пагинация, сортировка;
- тесты на эндпоинты
/books.
Цель: добавить логику инвентаризации и выдачи книг.
Результат: можно выдать книгу пользователю и вернуть обратно.
- модель
BookCopy(инвентарный номер, статус: available/loaned/lost); - модель
Loan(reader_id, copy_id, issue_date, due_date, return_date); - сервисы: выдача, возврат, продление;
- валидации (например, книга уже выдана);
- отчёт “какие книги сейчас на руках”.
Цель: добавить возможность бронировать книги и напоминания.
Результат: пользователи могут бронировать книги и получать уведомления.
- модель
Reservation(reader_id, book_id, created_at, status); - проверка, доступна ли книга для брони;
- уведомления (через email / Telegram, через Celery worker);
- планировщик задач (ежедневная проверка сроков возврата).
Цель: разграничить права и дать библиотекарям панель управления.
Результат: админка и распределение прав.
- роли: admin, librarian, reader; - ?
- декораторы
Depends(RoleChecker(...)); - ? - админ-эндпоинты: создание/удаление сотрудников; - ?
- FastAPI Admin / custom React dashboard; - ?
- журнал действий (аудит лог).
Цель: добавить статистику и отчёты.
Результат: библиотекари видят аналитику и могут формировать отчёты.
- Отчёты:
- Топ популярных книг
- Топ активных читателей
- Просрочки
- Ежемесячная выдача книг
- Сервис reports/ с SQL-агрегациями
- Эндпоинты /reports/...
- (Опционально) выгрузка в CSV / Excel
Тут надо все обдумать пока хз.
Цель: добавить удобный фронт(?) и внешние API.
Результат: визуально готовое приложение с внешней интеграцией.
-
интеграция с внешним API (Google Books / OpenLibrary); → автозаполнение метаданных книги по ISBN
-
веб-интерфейс (React/Vue); → авторизация, поиск книг, просмотр истории выдач
-
graphQL слой (в идеале).
Цель: отшлифовать проект и довести до продакшена.
Результат: готовый продакшен-проект.
- настройка Nginx reverse-proxy;
- Docker Compose: FastAPI + Postgres + Redis + Celery + Nginx;
- CI/CD (GitHub Actions: тесты, миграции, деплой);
- оптимизация запросов, индексов, кэширования;
- полное тестовое покрытие.