REST API для управления библиотечной системой.
Проект представляет собой backend-приложение для управления библиотечным каталогом.
Система позволяет работать с книгами, авторами, читателями, а также реализует процесс выдачи и возврата книг.
Проект был разработан в учебных целях на основе тестового задания, предоставленного реальной компанией.
Реализована система пользователей с использованием JWT-токенов.
Поддерживаются роли:
-
Администратор
- управление книгами;
- управление авторами;
- просмотр информации о читателях;
- управление библиотечными ресурсами.
-
Читатель
- просмотр доступных книг;
- работа со своей информацией;
- взаимодействие с системой выдачи книг.
Реализованы CRUD-операции для книг.
Информация о книге включает:
- идентификатор;
- название;
- описание;
- дату публикации;
- автора(ов);
- жанры;
- количество доступных экземпляров.
Реализованы операции создания, просмотра, изменения и удаления авторов.
Данные автора:
- имя;
- биография;
- дата рождения.
Реализована система выдачи и возврата книг.
Возможности:
- выдача книги читателю;
- ограничение количества одновременно выданных книг (до 5);
- фиксация даты выдачи;
- фиксация предполагаемой даты возврата;
- обработка возврата книги;
- обновление количества доступных экземпляров.
В проекте реализованы:
- пагинация списков;
- фильтрация данных;
- валидация входящих данных;
- обработка ошибок с HTTP статусами;
- логирование основных событий;
- миграции базы данных;
- тестирование API.
Backend:
- Python 3.8+
- FastAPI
База данных:
- PostgreSQL
- SQLAlchemy ORM
Безопасность:
- JWT Authentication
Миграции:
- Alembic
Тестирование:
- Pytest
Дополнительно:
- Docker
Приложение построено по принципу разделения ответственности:
- API слой — обработка HTTP-запросов;
- сервисный слой — бизнес-логика приложения;
- модели базы данных — описание сущностей;
- репозитории — взаимодействие с базой данных.
Проект создан для изучения разработки REST API на FastAPI и включает основные элементы современного backend-разработчика:
- проектирование API;
- работа с базами данных;
- авторизация;
- миграции;
- тестирование;
- обработка бизнес-логики.