20582581be0b4ae408025bf73a570cfd9514eb91
When existing bookings block the initial startHour, effectiveStartHour snaps to the first available slot. Added useLayoutEffect to update endHour state immediately so start and end times are never equal. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
HotelSync — SaaS PMS System
Современная система управления отелем (PMS) с шахматкой бронирований, менеджером каналов и API.
Быстрый старт
npm install
npm run dev
Откройте http://localhost:5173
Демо-аккаунты
| Роль | Пароль | |
|---|---|---|
| Менеджер отеля | manager@grand-palace.ru | demo |
| Горничная | cleaner@grand-palace.ru | demo |
| Супер-администратор | admin@hotelsync.io | demo |
Функциональность
- Шахматка — drag-to-book интерфейс, цветовое кодирование по статусам
- Бронирования — список с фильтрами, создание, детальная панель
- Номерной фонд — карточки номеров, статусы, уборка
- Уборка — Kanban-доска: ожидание / в процессе / готово
- Менеджер каналов — Booking.com, Airbnb, Expedia, VRBO
- API-документация — встроенная документация REST API
- Светлая / тёмная тема — переключатель в шапке
- Мультиарендность — архитектура SaaS с изоляцией по отелям
Структура проекта
src/
├── components/
│ ├── calendar/ # Шахматка бронирований
│ ├── bookings/ # Модалки бронирований
│ ├── layout/ # Sidebar, Topbar
│ └── ui/ # Badge, Modal
├── contexts/ # AuthContext, ThemeContext
├── data/ # Мок-данные
├── layouts/ # AppLayout
├── lib/ # Утилиты, константы
├── pages/ # Страницы приложения
└── types/ # TypeScript типы
API
Base URL: https://api.hotelsync.io/v1
Документация доступна в приложении: /grand-palace/api-docs
Стек технологий
- React 18 + TypeScript
- Vite 5
- Tailwind CSS 3 (dark mode)
- React Router 6
- date-fns
- Lucide React
Description
Languages
TypeScript
98.4%
HTML
0.7%
JavaScript
0.3%
Shell
0.2%
CSS
0.2%
Other
0.1%