Produkt, nie zákazka
Zayoto je jediný projekt v tomto portfóliu, ktorý nevznikol pre klienta. Postavili sme ho preto, lebo sme pri tvorbe webov pre požičovne áut a transferové agentúry v Čiernej Hore narážali stále na ten istý problém.
Agentúra má desať až tridsať vozidiel, vedie ich v tabuľke, rezervácie prijíma cez WhatsApp a telefón, a web má ako katalóg bez platby. V lete má priveľa práce na to, aby čokoľvek menila. V zime nemá tržby na to, aby to zaplatila. Riešenie na mieru stojí zhruba pol sezóny.
Zayoto je odpoveď na to: jedna platforma, ktorú agentúra platí mesačne, s vlastným webom vrátane platby, administráciou pre vozový park a rezervácie, a prístupom na trhovisko, ktoré privádza hostí.
Dve strany tej istej platformy
Pre hostí je Zayoto trhovisko. Zadajú mesto a termín a dostanú všetky ponuky všetkých agentúr v jednom prehľade, s konečnou cenou. Žiadne prekvapenia pri pulte.

Vyhľadávanie vracia ponuky zoskupené podľa kategórie a prevodovky, s jasne uvedenými podmienkami: neobmedzené kilometre, depozit alebo bez depozitu, bezplatné zrušenie, základné poistenie, palivo plná na plnú. Cena je vždy uvedená za deň aj celkovo za zvolené obdobie.
Pre agentúry je Zayoto prevádzkový systém. Vozový park, kategórie, sezónne ceny, rezervácie, zákazníci, zmluvy s elektronickým podpisom, faktúry, zľavové kódy, používateľské role a denník aktivít. K tomu SiteBuilder, modul s 21 obrazovkami, cez ktorý si agentúra sama nastaví vzhľad a obsah svojho verejného rezervačného webu.
Transfery boli ťažšia časť
Prenájom áut je logistika. Transfery sú počítanie.

Cena transferu závisí od trasy, vzdialenosti, triedy vozidla, dennej doby a sezóny. Postavili sme výpočet, ktorý vezme prvé pravidlo, ktoré sedí, cez päť stupňov po poradí:
- Cena, ktorú agentúra zadala pre konkrétnu trasu
- Cena dvojice zón z matice, jedna cena, podľa triedy vozidla alebo za kilometer
- Vlastná sadzba zóny, pre jazdy v jej rámci
- Kilometrová sadzba, s pásmami podľa triedy vozidla alebo so spoločnými pásmami
- Minimálna suma ako spodná hranica
Až potom nastupujú spoločné modifikátory, vždy v rovnakom poradí: cenová úroveň podľa triedy vozidla, sezóna, príplatok podľa dennej doby, poplatky podľa lokality. Výsledok nie je len číslo: výpočet vracia čitateľný riadok typu „základná sadzba 1,20 € za km × 67 km", takže hosť vidí, odkiaľ cena pochádza. Pravidlá o minimálnom predstihu stoja oddelene od ceny a rozhodujú o tom, či sa jazda vôbec dá rezervovať.
Zóny nie sú zoznam miest, ale skutočné GeoJSON polygóny, ktoré agentúra kreslí myšou na mape v administrácii. Vzdialenosť sa zisťuje cez štyri záložné úrovne: vyrovnávacia pamäť v databáze (30 dní, ukladá aj priebeh trasy), potom Google Directions, potom Distance Matrix, potom haversinov vzorec. Myšlienka je jednoduchá: stránka vždy vráti cenu, aj keď je Google nedostupný.

Letiská Podgorica a Tivat majú vlastné vstupné stránky a každá častá trasa dostane automaticky generovanú stránku s fixnou cenou. Prečo na tom záleží, vysvetľujeme v článku tvorba webu pre rent a car agentúry.
21 jazykov, a to na dvoch úrovniach
Hostia, ktorí hľadajú auto v Čiernej Hore, prichádzajú z celej Európy. Platforma beží v 21 jazykoch: angličtina, srbčina, čiernohorčina, chorvátčina, bosniančina, nemčina, ruština, francúzština, taliančina, španielčina, poľština, maďarčina, turečtina, albánčina, slovenčina, slovinčina, ukrajinčina, holandčina, dánčina, švédčina a nórčina.

Preklad funguje v dvoch vrstvách. Rozhranie ide z jazykových súborov, kým obsah, ktorý si agentúry zadávajú samy (názvy kategórií, podmienky, stránky), ide cez prekladovú tabuľku v databáze. Koľko jazykov si agentúra môže zapnúť, závisí od balíka.
Predplatné, ktoré sa naozaj vymáha
Tri balíky s verejnou cenou, Starter za 99 €, Growth za 149 € a Pro za 199 € mesačne plus poplatok za vozidlo, a k tomu Enterprise na požiadanie. Ročná platba sa účtuje ako desať mesiacov. Každý balík začína pätnásťdňovou skúšobnou dobou zadarmo.

Zaujímavý tu nebol cenník, ale vymáhanie. Postavili sme meranie spotreby na nájomcu a eskaláciu v štyroch krokoch: v poriadku, mierne upozornenie pri 80 percentách limitu, sedemdňová lehota nad 100 percent, potom tvrdé zablokovanie. Neexistuje prípad, keď by agentúra uprostred sezóny prišla o prístup bez jediného varovania.
Funkcie sa odomykajú podľa balíka cez samostatnú vrstvu, takže napríklad webhooky alebo modul transferov sa zapínajú a vypínajú bez zásahu do kódu.
Trhovisko má vlastnú ekonomiku oddelenú od predplatného: rezervácia, ktorá príde cez trhovisko, nesie províziu, so sadzbou dohodnutou pre každú agentúru a s minimálnou sumou za rezerváciu.
Pod kapotou
Backend: PHP 8.4, Laravel 12, Inertia.js 2, Laravel Cashier so Stripe pre predplatné a platby, Spatie Permission, Sentry, Twilio pre SMS, Web Push, DomPDF pre zmluvy a faktúry, MySQL a Redis.
Administrácia: Vue 3.5 s TypeScriptom, Tailwind CSS, komponenty shadcn-vue, Leaflet s leaflet-draw a Turf.js na kreslenie zón, FullCalendar pre rezervačný kalendár, signature_pad na elektronický podpis zmlúv.
Verejná časť: Blade vo vlastnom balíku, Alpine.js, Swiper, Flatpickr.
Kvalita: 177 testovacích súborov (Pest) a Playwright end-to-end testy.
Viacnájomnosť je riešená automatickým globálnym filtrom na úrovni modelu, s oddeleným rozpoznávaním nájomcu podľa domény, subdomény alebo kontextu. Každá agentúra môže bežať na nazov.zayoto.com alebo na vlastnej doméne.
Ako pristupujeme k takýmto systémom, opisujeme na stránkach Systémové integrácie a Stratégia a architektúra.
Rozsah
| Položka | Hodnota |
|---|---|
| Dátové modely | 107 |
| Databázové migrácie | 232 |
| Kontroléry | 142 |
| Servisné triedy | 80 |
| Obrazovky administrácie (Vue) | 181 |
| Vue komponenty | 162 |
| Blade šablóny | 295 |
| Definované cesty | 450 |
| Podporované jazyky | 21 |
| Testovacie súbory | 177 |
Samotný modul transferov predstavuje 70 migrácií a 24 modelov, čo z neho robí najťažšiu časť platformy.
Kde je Zayoto dnes
Platforma beží v produkcii za Cloudflare, s trhoviskom v 21 jazykoch a pokrytím miest Podgorica, Tivat a Kotor. Prvá agentúra je v pilotnej prevádzke.
Zayoto je zároveň značka, pod ktorou vedieme naše transferové projekty. Podgorica Airport Taxi a Elite Ride nesú Zayoto podpis v pätičke a skúsenosť z oboch formovala modul transferov na platforme.
Ďalej pracujeme na OTA konektoroch a partnerskom API.
Pozrite si platformu
Ak vediete požičovňu áut alebo transferovú agentúru a hľadáte systém, ktorý inkasuje a privádza hostí, ozvite sa nám. Pozrite si aj ostatné projekty v našom portfóliu.