Room Booking Service — это backend-сервис для управления бронированием переговорных комнат. Проект разработан в рамках изучения Go и построения высоконагруженных систем. Сервис поддерживает два типа пользователей (администраторы и обычные пользователи) с разными уровнями доступа, автоматическую генерацию временных слотов на основе расписания и интеграцию с внешними сервисами (например, для создания ссылок на конференции).
Управление переговорками (создание, просмотр списка)
Создание расписания доступности для переговорки (один раз, без возможности изменения)
Просмотр всех броней в системе с пагинацией
Просмотр переговорок и доступных временных слотов
Создание и отмена своих броней
Просмотр только будущих броней (прошедшие автоматически скрываются)
Опциональное создание ссылки на конференцию при бронировании
JWT-аутентификация с ролевой моделью (admin/user)
Тестовый эндпоинт /dummyLogin для быстрого получения токена
Полноценная регистрация и логин по email/паролю
Go 1.25, PostgreSQL 15, Docker, Docker compose
docker-compose up --build
или
make help
make up
| Метод | Эндпоинт | Описание | Роль |
|---|---|---|---|
| Get | /_info | Health check | public |
| Post | /rooms/create | Создать комнату | admin |
| Get | /rooms/list | Список комнат | admin/user |
| Post | /rooms/{roomId}/schedule/create | Создать расписание | admin |
| Get | /rooms/{roomId}/slots/list?date=YYYY-MM-DD | Доступные слоты | admin/user |
| Post | /bookings/create | Создать бронь | user |
| Get | /bookings/my | Мои брони | user |
| Post | /bookings/{bookingId}/cancel | Отменить бронь | user |
| Get | /bookings/list?page=1&pageSize=20 | Все брони | admin |
make test-unit
make test-integration
make test-e2e