Viarent Online — online furgonbérlési rendszer
Teljes, lokálisan futtatható MVP: NestJS backend és React frontend, valós adatbázissal, a teljes foglalási életciklussal — a járműválasztástól az aktív bérlésig — és komplett admin felülettel.
Mit csinál a rendszer?
Egy magyar B2B/B2C furgonbérlési platform: az ügyfél online konfigurál és foglal, az admin csapat pedig végigvezeti a bérlést a bonitásvizsgálattól a fizetésen és dokumentumokon át az átadásig.
A teljes ügyfél-folyamat és admin felület kész, a backend és frontend össze van kötve, valós PostgreSQL + Redis háttérrel. A külső integrációk (Opten, Számlázz.hu, email, vírusellenőrzés, fájltárolás) mock adapterekkel működnek, így a teljes folyamat valós kulcsok nélkül is végigjátszható.
Önkiszolgáló foglalás
Az ügyfél böngészi a flottát, konfigurálja a bérlést, megadja az adatait és beküldi — mindezt belépés nélkül, magic-link alapú azonosítással.
Vezérelt életciklus
17 állapotú állapotgép kíséri végig a foglalást, optimistic lockinggal a párhuzamos módosítások ellen, és teljes audit naplóval.
Teljes admin háttér
Dashboard, bonitás-döntés, fizetés-egyeztetés, dokumentum-ellenőrzés, számlák, flotta-, telephely- és felhasználókezelés.
Az ügyfél útja, képernyőről képernyőre
A folyamat a prototípus designnyelvére épül, valós API-hívásokkal és állapotkezeléssel.
Választás
Járműkatalógus szűrőkkel, élő havi árral.
Foglalás
6-lépéses varázsló: futamidő, kockázat, kiegészítők, adatok.
Bonitás / Fizetés
Cégeknél bonitás, majd pro forma és befizetés-jelzés.
Dokumentumok
Kötelező iratok feltöltése és ellenőrzése.
Átadás
Időpont-egyeztetés, majd aktív bérlés.
Kezdőlap & járműkatalógus
- Dark hero, márka-akcentus, „hogyan működik" lépéssor
- Szűrés telephelyre, kategóriára (száraz / elektromos / hűtős) és méretre
- Futamidő-választó, amely élőben átszámolja a havi díjat
- Jármű-kártyák: raktér, teherbírás, váltó, „Új" jelvény, ár/hó
Foglalási varázsló (6 lépés)
- Jármű & futamidő (1–36 hó), kezdő dátum
- Kárkockázati csomag (Csomag nélkül / Alap / Standard / Nulla)
- Kiegészítők: külföldi használat, további sofőrök (0–5)
- Szerződő típus + cég vagy magánszemély űrlap (validációval)
- Összegzés, ÁSZF/szerződés/GDPR elfogadás, beküldés
- Sikeres beküldés → magic-link kiküldése a követéshez
Magic-link belépés
- Jelszó nélküli azonosítás email-linkkel
- Lokálisan a link a /api/v1/dev/outbox nézetben jelenik meg
- Token beváltása → JWT access + refresh token rotációval
Saját bérlések & státusz
- KPI-k (összes / aktív / folyamatban / lezárt) és bérléslista
- Vizuális státusz-idővonal (8 lépcső)
- Pro forma megtekintés + befizetés jelzése
- Dokumentumok feltöltése slot-onként, visszajelzéssel
- Foglalás visszavonása (aktiválás előtti állapotokban)
Operátori munkafelület
Szerepkör-alapú hozzáférés (admin / operátor / pénzügy / readonly), sötét oldalsávos elrendezés.
Áttekintő dashboard
- KPI-k: aktív bérlések, várólisták, flotta, bevétel
- Teendő-lista (bonitás / fizetés / dokumentum)
- Mai átadások + legutóbbi foglalások
Foglalások & dosszié
- Szűrhető, kereshető lista
- 7 szekciós dosszié (áttekintés, bonitás, fizetés, dokumentum, számla, napló)
- Kontextusfüggő életciklus-műveletek
Bonitásvizsgálat
- Várólista az auto-scoring eredménnyel (zöld/sárga/piros)
- Opten kritériumok ✓/✗ bontásban
- Jóváhagyás / elutasítás indoklással
Befizetés-egyeztetés
- Jelzett befizetések listája
- Banki adatok rögzítése, jóváírás / elutasítás
- Mindkét tétel jóváírása → dokumentum-kérés
Dokumentum-ellenőrzés
- Ellenőrzésre váró iratok queue-ja
- Elfogadás / elutasítás indoklással
- Mind jóváhagyva → szerződés kész
Számlák
- Szűrés állapotra, pénzügyi KPI-k
- Pro forma PDF link (mock Számlázz.hu)
- Piszkozat számla kiállítása
Flottakezelés
- Jármű létrehozás / szerkesztés / soft-delete
- Státusz (elérhető / bérelt / szerviz / kivont)
- Ár automatikus tier-számítással
Telephelyek
- Telephely CRUD, nyitvatartás, kontakt
- Aktiválás / deaktiválás
Felhasználók
- Admin user meghívás, szerepkör-kezelés
- Aktiválás / inaktiválás (csak admin)
17 állapotú foglalási állapotgép
Minden átmenet őrfeltételekkel, mellékhatásokkal (számla, fizetés, dokumentum, email) és audit naplóval. A verziószám-oszlop optimistic lockinggal véd a párhuzamos módosítás ellen.
Magánszemély esetén a folyamat a bonitásvizsgálatot kihagyja (submitted → pro_forma_issued).
Díjszámítás és csomagok
A backend a hiteles ár forrása; minden összeg eurocentben tárolódik a lebegőpontos hibák elkerülésére. ÁFA: 27%.
Futamidő-szorzók
| Futamidő | Szorzó | Kedvezmény |
|---|---|---|
| 1 – 6 hó | 1,18× | felár |
| 6 – 12 hó | 1,00× | alap |
| 12 – 18 hó | 0,92× | −8% |
| 18 hó + | 0,86× | −14% |
Kárkockázati csomagok & kiegészítők
| Tétel | Havidíj | Önrész |
|---|---|---|
| Csomag nélkül | 0 € | 1 200 € |
| Alap | 89 € | 800 € |
| Standard | 149 € | 300 € |
| Nulla kockázat | 229 € | 0 € |
| Külföldi használat | +89 € | — |
| További sofőr (db) | +5 € | — |
Külső rendszerek — mock adapterek
Az adapter-minta miatt a valós bekötés csak a service-implementáció cseréjét igényli; a hívók nem változnak.
| Integráció | Mock viselkedés | Állapot |
|---|---|---|
| Opten bonitás | Adószám alapján determinisztikus zöld / sárga / piros score + kritériumok | mock |
| Számlázz.hu | Mock számlaszám + szöveges „PDF" a dev végponton | mock |
| Email (Postmark) | Dev outbox (memória + fájl); magic-linkek itt láthatók | mock |
| ClamAV vírusellenőrzés | Mindig tiszta (kivéve EICAR teszt-minta) | mock |
| Cloudflare R2 tárolás | Lokális fájlrendszer (backend/storage/) | mock |
| PostgreSQL 16 | Valós adatbázis (Docker konténer) | valós |
| Redis 7 / BullMQ | Valós háttérfeladat-sor (overdue-scan cron) | valós |
Architektúra & stack
Backend
- NestJS 10 modular monolith (12 modul), TypeScript
- Prisma ORM + PostgreSQL 16
- Redis 7 + BullMQ háttérfeladatok
- JWT auth (magic-link + admin jelszó), RBAC
- Swagger/OpenAPI dokumentáció
- Zod env-validáció, globális hibakezelés
Frontend
- Vite + React 18 + TypeScript
- React Router 6, TanStack Query 5
- A Viarent brand-tokenekre épülő UI-kit
- Megosztott API-kliens auto-token-rotációval
- 18 képernyő (7 ügyfél + 11 admin)
Főbb REST végpontok (/api/v1 prefix)
| Metódus + útvonal | Leírás |
|---|---|
GET /vehicles | Járműlista szűrőkkel és tier-árral |
POST /bookings | Foglalás létrehozása + beküldése (publikus) |
POST /auth/magic-link · /auth/verify | Ügyfél magic-link kérés és beváltás |
GET /my/bookings · /my/bookings/:id | Saját foglalások + részletek |
POST /my/bookings/:id/payment-claim | Befizetés jelzése |
POST /my/bookings/:id/documents | Dokumentum feltöltés (multipart) |
POST /admin/auth/login | Admin email + jelszó belépés |
GET /admin/dashboard | KPI-k + teendő-lista |
POST /admin/credit-checks/:id/decide | Bonitás jóváhagyás / elutasítás |
POST /admin/payments/:id/reconcile | Befizetés egyeztetése |
POST /admin/documents/:id/review | Dokumentum jóváhagyás / elutasítás |
POST /admin/bookings/:id/{schedule-handover,confirm-handover,close,…} | Életciklus-műveletek |
Tesztek & verifikáció
unit teszt
(árazás, állapotgép)
e2e teszt
(API, auth)
smoke állítás
(teljes életciklus)
zöld
+ tiszta tsc & build
A smoke teszt végigviszi a teljes happy path-t mindkét úton (magánszemély + cég): katalógus → foglalás → magic-link belépés → befizetés-jelzés → admin egyeztetés → dokumentum-feltöltés és -jóváhagyás → átadás → aktív bérlés, plusz a bonitás-jóváhagyás és a dashboard KPI-k.
Lokális futtatás egy paranccsal
Előfeltétel: fusson a Docker Desktop, és legyen telepítve a Node.js 20+.
# 1) Függőségek (root + backend + frontend) npm run setup # 2) Indítás: Postgres+Redis konténerek → migráció → seed → backend + frontend npm run dev
Elérhetőségek
| Frontend | https://localhost:5173 |
| API / Swagger | :3000/api/v1 · /api/docs |
| Dev email outbox | :3000/api/v1/dev/outbox |
Belépési adatok
| Admin | admin@viarent.hu / admin1234 |
| Pénzügy | penzugy@viarent.hu / finance1234 |
| Ügyfél | magic-link a dev outboxban |
Mi készült el, és mi a következő lépés?
✓ Elkészült (MVP)
- Teljes ügyfél-foglalási folyamat, magic-link auth
- 17 állapotú állapotgép + audit napló
- Komplett admin felület (9 modul)
- Árazás, bonitás, fizetés, dokumentum, számla, flotta
- PostgreSQL + Redis háttér, BullMQ feladatsor
- Unit + e2e + smoke tesztek, Swagger dokumentáció
→ Következő lépések (terv szerint)
- Valós integrációs kulcsok (Opten, Számlázz.hu, Postmark)
- M5: havi automata számlázás + 12+ email sablon
- Skyguard GPS-szinkron (km-állás, pozíció)
- GDPR-export és anonimizálás felület
- White-label tenant-onboarding UI
- Production deploy (Fly.io / Railway) + CI/CD