RSVD: System rezerwacji online dla małych firm
Next.js + Stripe + Supabase + Google Calendar
System rezerwacji SaaS, który pozwala firmom usługowym przyjmować rezerwacje 24/7. Widget do osadzenia na stronie, płatności online, synchronizacja z kalendarzem Google.

Geneza projektu
Studia fotograficzne, gabinety terapeutyczne, sale konferencyjne — wszystkie borykają się z tym samym problemem: telefony w trakcie sesji, excel z terminami, ręczne wysyłanie przypomnień. RSVD to system, który pozwala klientom samodzielnie rezerwować i płacić, a właścicielom skupić się na pracy zamiast na administracji.




Kluczowe funkcjonalności
Widget do osadzenia
Konfigurowalny widget rezerwacyjny. Właściciel dostaje kod i wkleja na swoją stronę. Widget automatycznie dopasowuje się do kolorystyki i działa na każdym urządzeniu.
Płatności online
Integracja ze Stripe Connect. Klient płaci przy rezerwacji, pieniądze trafiają bezpośrednio do właściciela. Obsługa refundów i automatyczne paragony.
Google Calendar
Dwukierunkowa synchronizacja. Rezerwacje automatycznie pojawiają się w kalendarzu właściciela. Blokuje terminy, wysyła zaproszenia klientom.
Podpisy elektroniczne
Dla branż wymagających umów (studia foto, wynajem sal). Klient podpisuje regulamin na canvasie, system generuje PDF z metadanymi.
Kupony rabatowe
System promocji z walidacją: limity użyć, daty ważności, rabaty procentowe i kwotowe, minimum godzin rezerwacji.
Przypomnienia email
Automatyczne powiadomienia 24h przed rezerwacją. System sprawdza nadchodzące terminy i wysyła maile przez Resend.
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
System statusów onboardingu. UI dynamicznie pokazuje dostępne metody płatności. Przed włączeniem 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.
