Context
A small hotel doesn't need 'a website', it needs direct bookings without commission and without double-booked rooms. The design language is deliberately editorial — the house sells its atmosphere first.
Build
Double-booking protection lives in the database, not in application code — a constraint you can trust when two guests click 'book' at the same second.
The admin panel gives the owner a calendar-grid view of the season; ISR keeps the public site fast and cache-friendly.
TODO(user): bookings since launch.
Facts
- Booking engine protected against double-booking at the database level (PostgreSQL EXCLUDE constraints)
- Seasonal rate periods and 15-minute booking holds
- OTP email auth and a guest account area
- Admin panel: calendar grid, rooms CRUD, bookings, settings
- ISR public pages; Yandex Maps integration