RSVD: System rezerwacji online dla małych firm
Next.js + Stripe + Supabase + Google Calendar
System rezerwacji dla małych firm usługowych. Klient wybiera termin, rezerwuje i płaci online, a właściciel zarządza dostępnością z panelu.

Geneza projektu
RSVD powstało z obserwacji, że w wielu małych firmach rezerwacje wciąż obsługuje się ręcznie: telefonem, arkuszem i wiadomościami z przypomnieniami. W studiu fotograficznym, gabinecie terapeutycznym czy sali konferencyjnej oznacza to przerywanie pracy i pilnowanie terminów po godzinach. System przenosi ten proces na stronę: klient wybiera termin, rezerwuje i płaci samodzielnie, a właściciel widzi wszystko w jednym panelu.




Co robi system
Widget do osadzenia
Właściciel kopiuje krótki kod i wkleja go na swoją stronę. Widget korzysta z ustawień firmy, usług i dostępności zapisanych w panelu.
Płatności online
Płatność odbywa się w trakcie rezerwacji przez Stripe Connect. Środki trafiają na konto właściciela, a system zostawia ślad transakcji przy terminie.
Google Calendar
Rezerwacje wpadają do kalendarza właściciela, a zajęte terminy blokują się w formularzu, żeby klient nie wybrał niedostępnej godziny.
Podpisy elektroniczne
Przy usługach wymagających zgody lub regulaminu klient podpisuje dokument w przeglądarce, a system zapisuje PDF razem z rezerwacją.
Kupony rabatowe
Kupony mają limity użyć, daty ważności i warunki koszyka, więc promocje da się uruchomić bez ręcznego sprawdzania każdej rezerwacji.
Przypomnienia email
System sprawdza nadchodzące terminy i wysyła przypomnienia przez Resend, żeby właściciel nie musiał robić tego ręcznie.
Wyzwania i rozwiązania
Problem
Stripe Connect wymaga, żeby właściciel przeszedł onboarding (weryfikacja KYC). W międzyczasie może przyjmować rezerwacje, ale nie płatności online.
Rozwiązanie
Panel pokazuje status onboardingu i ukrywa niedostępne metody płatności. Do czasu aktywacji Stripe właściciel może przyjmować gotówkę lub przelewy.
Problem
Widget musi działać na dowolnej stronie, ale z zachowaniem bezpieczeństwa (CSP, X-Frame-Options).
Rozwiązanie
Osobna konfiguracja nagłówków dla ścieżek embed. Sanityzacja parametrów CSS (kolory, fonty) przed renderowaniem.
