Бэкенд-приложение на Django REST Framework для автоматизации процессов и управления данными тату-салона.
На первом этапе была спроектирована и реализована реляционная база данных для тату-студии. Созданы следующие ключевые модели:
Master(Мастера) — хранит информацию о татуировщиках: имя, опыт работы и их почасовую ставку.Style(Стили) — каталог стилей татуировок с названиями и описаниями.Sketch(Эскизы) — каталог доступных тату-эскизов. Каждый эскиз связан с мастером, который его выполнил, и конкретным стилем. Также добавлен статус доступности.Client(Клиенты) — база данных клиентов студии с именами и номерами телефонов.Session(Сеансы записи) — связующая модель для записи на сеанс. Она объединяет в себе клиента, мастера, выбранный эскиз (может быть не заполнен), дату, время и статус текущего сеанса.
На втором этапе реализован полный набор CRUD-операций с использованием Django REST Framework. Настроены следующие типы эндпоинтов для всех ресурсов:
GET (один ресурс)— детальное получение информации об объекте по его ID. Для снижения нагрузки на базу данных и оптимизации вложенных связей внедрено кэширование ответов на 15 минут и оптимизация SQL-запросов.GET (группа ресурсов)— получение списков с поддержкой фильтрации через query-параметры (поиск мастера по имени, отбор эскизов по названию, фильтрация сеансов по ID мастера/клиента/эскиза).POST— создание нового ресурса. Метод переопределен для поддержки массового создания: API принимает как один JSON-объект, так и массив из нескольких объектов за один запрос.PUT/PATCH— полное и частичное обновление данных. Реализована поддержка как одиночного, так и группового (массового) обновления записей по списку ID.DELETE— удаление данных. Метод настроен так, что можно удалять записи из базы данных как поодиночке (через URL), так и целыми группами сразу через query-параметр?ids=1,2,3(массовое удаление).
На финальном этапе реализованы механизмы разграничения прав доступа и интерактивная документация:
- Аутентификация: Доступ к закрытым эндпоинтам защищен с помощью JWT-токенов. Реализованы эндпоинты для получения и обновления пары токенов (access/refresh).
- Ограничение прав (Permissions): Настроены кастомные правила доступа для каталога эскизов. Чтение списка эскизов доступно всем пользователям, включая неавторизованных гостей. Создание, редактирование и удаление разрешено только аутентифицированным мастерам.
- Интерактивная документация: Для удобства интеграции с фронтендом и тестирования API подключен Swagger UI. Инструмент автоматически сканирует код проекта и генерирует интерактивную веб-страницу.
Страница документации доступна в браузере по адресу: http://127.0.0.1:8000/api/schema/swagger-ui/