2026Funkcionalan prototip
Multi-tenant zakazivanje na PostgreSQL-u, sa pravilima rezervacije unutar baze
Moja majka ima frizerski salon i termine je vodila u svesci. Ovo sam napravio da je zameni. Radio sam sam, 38 commit-a tokom četiri nedelje.
Problem
Termini su se pisali u svesku. Dešavali su se dupli termini, raspored se nije mogao videti sa strane, i nije postojala evidencija koji se klijent vraća. Teško nije napraviti formu, nego obezbediti da dva klijenta ne uzmu isti termin kada oboje pošalju zahtev u istom trenutku.
Kako radi
- 01
Pravila su u bazi, ne u klijentu. I računanje slobodnih termina i kreiranje termina su PostgreSQL funkcije pozvane preko RPC-a, pa izmenjeni frontend ne može da ih zaobiđe.
- 02
create_appointment uzima advisory lock za salon i datum, pa ponovo čita dostupnost unutar iste transakcije pre upisa.
- 03
Row Level Security daje tri nivoa: javni pristup vidi samo ono što stranici za zakazivanje treba, zaposleni vide svoj rad, vlasnici i menadžeri ceo salon.
- 04
Svaka promena šeme je fajl migracije pod verzionisanjem, pa se baza može ponovo izgraditi od nule i pregledati kroz diff.
- 05
Pravila zakazivanja su pokrivena SQL testovima u tests/scheduling_rules.sql.
Kompromisi
Pretplatnički planovi su modelovani u SQL-u, ali je provera ograničenja isključena kasnijom migracijom. Nijedan platni provajder nije povezan i aplikacija ne naplaćuje.
Dve admin stranice su narasle i još nisu podeljene na komponente. To bih prvo refaktorisao.
Šta ovo nije
Ovo je funkcionalan prototip, ne objavljen proizvod. Radi lokalno nad Supabase projektom; javni URL još ne postoji i nema klijenta koji plaća.