Система бронирования столиков через Telegram-бота и Mini App

Проект restaurant_reservation_bot объединяет Telegram-бота на aiogram, FastAPI backend и Mini App интерфейс. Пользователь бронирует стол, видит свои брони и может их отменить, а мастер получает доступ к общей ленте бронирований и уведомлениям.

2.5h буфер занятости столика
2 режима интерфейса: user + master
5+ основных API для брони
Пользовательская зона

Основной функционал

  • Выбор даты, времени и количества гостей в Mini App.
  • Подбор подходящих столов по вместимости.
  • Проверка конфликтов брони с буфером 2.5 часа.
  • Просмотр и отмена только своих бронирований.
  • Подтверждения и сообщения через Telegram.
Результат

Пользователь получает быстрый и прозрачный сценарий резерва столика прямо внутри Telegram.

Мастер-режим

Контроль бронирований

  • Режим mode=master с отдельным интерфейсом.
  • Получение всех активных броней по датам и времени.
  • Уведомления о новых бронированиях мастерам.
  • Кликабельная ссылка для связи с клиентом.
  • Автоочистка устаревших броней.
Результат

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

Логика бронирования

Как работает сценарий

1.Пользователь открывает Mini App через /info.
2.Frontend запрашивает availability с датой, временем и гостями.
3.Backend фильтрует столы и исключает занятые интервалы.
4.POST /api/booking создает бронь и отправляет уведомления.
Технологии

Стек и архитектура

  • FastAPI backend: API + раздача фронтенда.
  • Aiogram-бот с командами user и master.
  • PostgreSQL + SQLAlchemy async.
  • Vanilla JS Telegram Mini App фронтенд.
  • Структура: app, database, frontend, telegrem_bot.
FastAPI Aiogram PostgreSQL SQLAlchemy Async Telegram Mini App