Все проекты
КЕЙС 01 · ВЕБ-ПРОДУКТ ДЛЯ СТУДИИ ДЕТЕЙЛИНГА

VÉLOX Detailing Studio

Сайт, онлайн-запись, админ-панель и Telegram-бот для студии детейлинга. Все каналы работают с одной базой данных и общими правилами записи.

Роль
Full-stack разработка
Состав
Сайт · Админ-панель · Бот
Основа
Python · FastAPI · PostgreSQL
Язык интерфейса
Русский
01

Задача

Студии нужно принимать записи с сайта и из Telegram, вести расписание мастеров и услуги, обновлять контент без разработчика и не допускать, чтобы одно и то же время заняли через разные каналы.

02

Решение

Единый продукт на FastAPI и PostgreSQL. Сайт, админ-панель и Telegram-бот используют одну базу данных и общий набор правил записи. Архитектура рассчитана на несколько студий: каждая запись привязана к своей студии.

КлиентыСайтJinja2 · JavaScript
СтудияАдмин-панельРоли и доступы
Клиенты и студияTelegram-бот и Mini Appaiogram 3
BackendFastAPI · общие правила записиAPI · сервисный слой · Pydantic 2
ДанныеPostgreSQL 17SQLAlchemy 2 async · миграции Alembic
Схема по структуре репозитория: app/web, app/bot, app/api, app/services, app/models.
03

Сайт для клиентов

Адаптивный сайт студии: услуги и цены, работы «до/после», отзывы, сертификаты и контакты. Тексты, фото и цены владелец меняет сам в админ-панели.

04

Онлайн-запись

  1. 1УслугаВыбор из каталога студии
  2. 2МастерВыбор специалиста, если услуга это допускает
  3. 3ВремяТолько свободные слоты
  4. 4КонтактыИмя, телефон, модель авто по желанию
  5. ПодтверждениеНомер записи, файл для календаря и страница отмены до установленного срока

Сайт, админ-панель и бот проверяют запись по одним и тем же правилам; пересечения по времени дополнительно контролируются ограничениями на уровне базы данных.

05

Админ-панель

Рабочее место студии: от расписания и загрузки мастеров до контента сайта. Доступ разделён по ролям.

  • Расписание и загрузка мастеров
  • Услуги, цены и мастера
  • Клиенты и записи
  • Контент сайта, медиа и отзывы
  • Настройки и доступ сотрудников
  • Роли: владелец, администратор, мастер
  • Удаление данных клиента по запросу (152-ФЗ)
  • Ежедневные резервные копии
06

Telegram-бот

Для клиентов

  • Запись на услугу
  • Mini App с календарём свободного времени
  • Раздел «Мои записи»
  • Перенос и отмена записи
  • Вопрос администратору
  • Напоминания за 24 часа и за 2 часа

Для студии

  • Новые заявки приходят в чат администраторов
  • Кнопки «Подтвердить», «Назначить мастера», «Отклонить»
07

Технологический стек

Backend

Python 3.12FastAPIPydantic 2

Данные

PostgreSQL 17SQLAlchemy 2 asyncAlembic

Бот

aiogram 3Telegram Bot API

Интерфейс

Jinja2HTML и CSSJavaScript

Медиа

PillowAVIFWebP

Качество

pytestruffGitHub Actions
08

Тестирование и качество

Тесты на pytest разделены на unit-, интеграционные, API-тесты и тесты бота. Для них предусмотрено изолированное окружение: отдельный стек Docker Compose. Код проверяется линтером ruff, проверки запускаются в GitHub Actions.

tests/unittests/integrationtests/apitests/botcompose.test.yaml
pytest · 22.10.2026219тестовСвежий прогон в изолированном стеке: все тесты проходят.
pytest-cov · 22.10.202692%покрытие строк кодаИзмерено pytest-cov (coverage.py) по пакету app, покрытие строк.
GitHub · 22.10.2026127коммитов в mainВспомогательный показатель истории разработки, не метрика качества.
09

Инфраструктура и развёртывание

Docker Compose

Отдельные конфигурации для разработки, тестов и production; для сервера заданы лимиты памяти.

Миграции

Схема базы данных версионируется через Alembic.

Резервные копии

Ежедневные копии базы и медиа, плюс копия перед каждым обновлением.

Документация

Установка, обновление и бэкапы описаны в docs/deployment.md.

Персональные данные

Удаление данных клиента по запросу в соответствии со 152-ФЗ.

Адреса серверов, ключи и доступы в кейсе не публикуются.

Нужна похожая система?

Расскажите о задаче, и обсудим, как её решить.