mz.status
← wróć do projektów
aidziała

System rezerwacji z AI dla małej firmy usługowej

#ai#automation#self-hosted

Narzędzie do zarządzania klientami i kalendarzem, które zbudowałem dla kogoś bliskiego, kto prowadzi jednoosobową firmę usługową — wprowadzanie danych językiem naturalnym zamiast formularzy, na bazie samodzielnie hostowanego stacku.

Infrastruktura i niezawodność
  • To, co działa dziś, nie zaczęło się na Vercel — pierwsza wersja to samodzielnie hostowany stack FastAPI + Postgres + Redis w Docker Compose, wystawiony przez tunel ngrok z komputera w domu, więc cały system rezerwacji padał, gdy tylko ta maszyna była wyłączona albo zabrakło prądu.
  • Przepisałem to jako pojedynczą aplikację Next.js (API routes i frontend razem) hostowaną na Vercel z Supabase jako zarządzaną bazą danych, żeby dostępność przestała zależeć od domowego peceta — lokalny model czatu Ollama jest teraz jedynym elementem wciąż związanym z tą maszyną, wystawionym przez własny zabezpieczony tunel, ten sam wzorzec co w LifeOS.
  • To przepisanie wymagało też przerobienia auth: zamiast ręcznie napisanego flow OAuth (surowe wywołania httpx plus ciasteczka podpisywane przez itsdangerous) wszedł Auth.js — ten sam model zaufania oparty na allow-liście e-maili i ta sama nazwa zmiennej środowiskowej dla ciągłości, ale dużo mniej kodu auth do utrzymania.
  • Pipeline w GitHub Actions odpala zestaw testów backendu na jednorazowej bazie Postgres przy każdym pushu, bo bug tutaj wpływa na prawdziwy dochód kogoś innego.
Funkcje biznesowe
  • Dwukierunkowe SMS-y z przypomnieniami przez samodzielnie hostowaną bramkę działającą na karcie SIM w prawdziwym telefonie Android, a nie płatne API rozliczane za wiadomość.
  • Asystent AI oparty na lokalnym modelu, żeby dane klientów nigdy nie wychodziły poza maszynę — trudniejsze niż oczekiwałem było uzyskanie tool-callingu wystarczająco pewnego, by ufać mu przy prawdziwych rezerwacjach.
  • Poza rezerwacjami — dokumenty klientki z podpisem na canvasie zapisywanym jako wygenerowany PDF oraz widok finansów biznesowych (przychody, koszty, sumy okresowe) całkowicie osobny od prywatnego budżetu właścicielki.
  • Przedpłacone karnety i vouchery rozliczane stopniowo przy kolejnych wizytach oraz log zdjęć przed/po dla każdej klientki — oba w prywatnych bucketach Supabase, nigdy publiczne.
  • Ewidencja sprzedaży produktów — katalog ze stanami magazynowymi i wpis dla każdej sprzedaży zapisujący koszt z chwili sprzedaży, żeby marża zostawała dokładna nawet po późniejszej zmianie cen u dostawcy.
Dane i zaufanie
  • Drugie środowisko Supabase + Vercel, zasiane realistycznymi, ale fikcyjnymi danymi po polsku, dzięki czemu ten opis mógł powstać z prawdziwymi zrzutami ekranu bez ujawniania danych żadnej prawdziwej klientki — jego migracje schematu stosują się automatycznie w CI przy każdym mergu, celowo osobno od ręcznego, recenzowanego wdrożenia na produkcji.
Zrzuty ekranu
Desktop
Telefon

Budujesz coś dla kogoś, kogo dochód od tego zależy? Chętnie posłucham.

kontakt →