VulCode

Panel hotelu Atrium

Codzienny panel recepcji i właściciela hotelu: dzień zaczyna się od przyjazdów, wyjazdów, pokoi do sprzątania i otwartych usterek, a kończy zamknięciem doby. Z tego samego miejsca idą rezerwacje na osi czasu, housekeeping, restauracja i room service, magazyn z zamówieniami u dostawców, grafik zespołu i portal gościa bez zakładania konta. Każde działanie zostaje w dzienniku hotelu.

TypPanel zarządzania hotelem
FrontendReact 19, TypeScript, Tailwind 4
BackendExpress, TypeScript, Prisma
BazaSQLite
JęzykiPolski, angielski
Panel hotelu Atrium

Wprowadzenie

Atrium to panel, w którym hotel prowadzi swój dzień: recepcję, pokoje, sprzątanie, usterki, restaurację, zaopatrzenie i ludzi. Właściciel ma widzieć wszystko, wszędzie i od razu, a recepcja ma mieć pod ręką to, co musi zrobić w tej chwili, bez przeklikiwania się przez osobne programy.

Hotel z kilkoma piętrami ma zwykle osobny zeszyt na usterki, arkusz z grafikiem, program do rezerwacji i kartkę z pokojami do sprzątania. Każde z tych miejsc wie coś, czego nie wiedzą pozostałe. Atrium skleja je w jeden obraz obiektu, w którym rezerwacja, pokój, sprzątanie i rachunek gościa są tym samym zapisem oglądanym z różnych stron.

Dzień zaczyna się od jednego ekranu

Ekran "Dziś w hotelu" zbiera wszystko, czym recepcja żyje rano: obłożenie, przyjazdy i wyjazdy z przyciskami zameldowania i wymeldowania, pokoje do posprzątania z piętrem, należności z dzisiejszych wyjazdów, przychód z miesiąca i otwarte usterki z priorytetem. Nie trzeba niczego szukać, bo dzień sam układa się w listę rzeczy do zrobienia.

Na koniec dnia panel prosi o zamknięcie doby. Pokazuje gości, którzy powinni byli już wyjechać, i przyjazdy, które się nie odbyły, a zamknięcie oznacza nieprzybyłych jako no-show. Doba nie wisi w zawieszeniu do rana, a raporty liczą się z danych, które ktoś świadomie zatwierdził.

Rezerwacje na osi czasu

Rezerwacje są rozpisane na oś dni, pokój po pokoju i piętro po piętrze. Podwójne kliknięcie w wiersz pokoju zakłada rezerwację od tego dnia, a wyszukiwarka wolnych pokoi dobiera pokój do dat i liczby gości. Cena za noc wynika z sezonów ustawionych dla typu pokoju, a gdy żaden sezon nie obejmuje danej nocy, obowiązuje cena bazowa.

Najważniejsza reguła to brak kolizji. Zanim rezerwacja zostanie zapisana, backend sprawdza, czy pokój nie jest zajęty w tym czasie i czy nie blokuje go zaplanowany albo trwający remont.

availability.ts · ts
export const blockingStatuses = ['pending', 'confirmed', 'checkedin'];

export async function assertRoomFree(
  client: Prisma.TransactionClient,
  hotelId: string,
  roomId: string,
  checkIn: Date,
  checkOut: Date,
  excludeId?: string,
) {
  const clash = await client.booking.findFirst({
    where: {
      hotelId,
      roomId,
      status: { in: blockingStatuses },
      checkIn: { lt: checkOut },
      checkOut: { gt: checkIn },
      ...(excludeId && { id: { not: excludeId } }),
    },
  });
  if (clash) throw new HttpError(409, 'room already booked');
  const renovation = await client.renovation.findFirst({
    where: {
      hotelId,
      roomId,
      status: { in: ['planned', 'active'] },
      startDate: { lt: checkOut },
      endDate: { gt: checkIn },
    },
  });
  if (renovation) throw new HttpError(409, 'room blocked by renovation');
}

Dwa przedziały nachodzą na siebie, gdy jeden zaczyna się przed końcem drugiego, a kończy po jego początku. Ten sam warunek pilnuje rezerwacji i remontów, więc pokój w remoncie po prostu nie jest wolny. Recepcja może zapisać rezerwację mimo kolizji, ale tylko świadomie, po osobnym potwierdzeniu.

Sprzątanie, usterki i remonty

Po wymeldowaniu pokój sam trafia do kolejki housekeepingu. Pokoje z dzisiejszym przyjazdem idą na początek, każdy pokój dostaje przypisaną pokojową, która oznacza go jako posprzątany, a potem ktoś go sprawdza. Status pokoju widać od razu na pulpicie i na makiecie piętra, więc recepcja wie, czy może już wydać klucz.

Usterka ma pokój, priorytet i koszt naprawy, który trafia do raportów. Remont to osobna rzecz: ma daty i blokuje rezerwacje pokoju na ten czas, więc nikt nie sprzeda pokoju, w którym trwa malowanie.

Restauracja, room service i rachunek pokoju

Restauracja ma w Atrium menu z kategoriami i zamówienia, które pojawiają się na tablicy obsługi same, bez odświeżania. Zamówienie do pokoju dolicza się do rachunku pobytu, a przy wymeldowaniu otwarte zamówienia zamykają się jako opłacone razem z rachunkiem. Wydarzenia, od wesel po konferencje i degustacje, mają swój kalendarz w tym samym panelu.

Gość dostaje portal, do którego nie musi zakładać konta: link, przez który zgłasza prośby do obsługi, od dodatkowych ręczników po zepsutą klimatyzację, i śledzi odpowiedzi. Każda prośba trafia do zespołu jako wątek z kategorią. Hotel może też prowadzić program poleceń dla gości, z nagrodami zapisywanymi w księdze, gdy polecony gość się wymelduje.

Magazyn, dostawcy i grafik

Magazyn trzyma stany, progi i bazę dostawców. Zamówienie u dostawcy powstaje w panelu, a przyjęcie dostawy samo aktualizuje stany, więc nikt nie przepisuje faktury z hurtowni do arkusza. Grafik rozpisuje zmiany zespołu, przyjmuje wnioski urlopowe do zatwierdzenia i szacuje koszt pracy na podstawie stawek godzinowych.

Raporty pokazują przychód, obłożenie, ADR i RevPAR, ceny z sezonów i udział gości powracających. Każde działanie w panelu zostaje w dzienniku hotelu, powiadomienia każdy ustawia dla siebie, kategoria po kategorii, a właściciel może pobrać wszystkie dane hotelu w jednym pliku JSON.

Jaki jest finalny efekt?

Recepcja zaczyna dzień od jednego ekranu i kończy go zamknięciem doby, a pomiędzy nie przełącza się między zeszytem, arkuszem i programem do rezerwacji. Pokój z dzisiejszym przyjazdem jest posprzątany pierwszy, remont nie koliduje z rezerwacją, a zamówienie do pokoju samo trafia na rachunek.

Właściciel widzi hotel takim, jaki jest w tej chwili, a nie takim, jaki był przy ostatnim raporcie. Każda liczba na ekranie pochodzi z tych samych zapisów, na których pracuje zespół, a każda zmiana ma w dzienniku osobę i czas.

Pytania o Panel hotelu Atrium

Więcej projektów

Inne realizacje z tej samej kategorii - zobacz, jak podchodzimy do podobnych wyzwań.

Masz podobny projekt?

Napisz do nas - wycena jest bezpłatna i wraca w godzinę.