Izrada, objava i prikaz voznih redova javnog prijevoza u formatu GTFS.
Terminus je aplikacija u kojoj prijevoznik vodi stanice, linije, kalendare i vožnje, iz njih izvozi GTFS feed za Google Maps i druge aplikacije, a putnicima prikazuje polaske na zaslonima stanica, karti uživo i ispisanim voznim redovima.
Terminus je single-tenant: svaka tvrtka (npr. gradski prijevoznik) dobiva
vlastitu instancu i bazu. Unutar instance može postojati više prijevoznika
(GTFS agency), a svaka linija pripada jednom od njih.
Dashboard
Karta uživo – stanice, trase i vozila prema voznom redu |
Grafikon voznog reda – uređivanje vožnji linije |
GTFS – provjera podataka, uvoz i izvoz feeda |
Na stanici
Zaslon polazaka – sljedeći polasci za ekrane na stanicama i mobitele |
PDF vozni red – za ispis na stanicama |
Za prijevoznika
- Stanice, linije i varijante uređuju se na karti; trase se crtaju po cestama i prugama iz OpenStreetMapa.
- Sezone voznog reda s tipovima dana, praznicima i raspustima, a vožnje se uređuju u grafikonu voznog reda.
- Uvoz postojećeg GTFS feeda i izvoz s provjerama, po izboru i kao javni feed.
- PDF vozni red stanice (A4 ili A3, hrvatski ili engleski) s QR kodom na zaslon stanice.
- Naziv, boje i logo prijevoznika na javnim stranicama i PDF-u.
Za putnike
- Zaslon polazaka za ekrane na stanicama i mobitele.
- Javna karta uživo s vozilima prema voznom redu.
- Javni API polazaka i GTFS feeda.
Što je u planu, vidi u roadmapu.
| Dio | Tehnologije |
|---|---|
| Backend | ASP.NET Core Web API (.NET 10), Entity Framework Core 10, ASP.NET Core Identity |
| Baza | PostgreSQL |
| QuestPDF | |
| Frontend | React 19, TypeScript, Vite, Mantine, TanStack Query, MapLibre GL |
| Testovi | xUnit (backend), Vitest (frontend) |
| CI | GitHub Actions |
terminus/
├── backend/ .NET rješenje: Web API, servisi, pristup podacima, testovi
├── frontend/ dashboard, javni zaslon stanice i karta (React)
└── docs/ dokumentacija
Preduvjeti: .NET 10 SDK,
PostgreSQL 13+, dotnet-ef i Node.js 22+.
cd backend
dotnet user-secrets set "ConnectionStrings:Default" "Host=localhost;Database=terminus;Username=postgres;Password=<lozinka>" --project Terminus.WebApi
dotnet user-secrets set "Admin:Email" "admin@example.com" --project Terminus.WebApi
dotnet user-secrets set "Admin:Password" "<barem 10 znakova>" --project Terminus.WebApi
dotnet ef database update --project Terminus.DAL --startup-project Terminus.WebApi
dotnet run --project Terminus.WebApi --launch-profile http # http://localhost:5183cd frontend
npm install
npm run dev # http://localhost:5173Nakon prijave čarobnjak nudi uvoz GTFS-a ili početak od nule. Konfiguracija, testovi i migracije opisani su u lokalnom razvoju.
| Dokument | Sadržaj |
|---|---|
| Roadmap | stanje, faze razvoja i otvorena pitanja |
| Lokalni razvoj | postavljanje, konfiguracija, testovi, migracije |
| Arhitektura | backend slojevi, tok zahtjeva, obrada grešaka |
| Frontend | stranice, struktura, rute i pozivi API-ja |
| API | prijava, endpointi, javni API, greške |
| Model podataka i GTFS | tablice, podržana GTFS polja, pravila |
| GTFS uvoz i izvoz | izvještaj, provjere, sadržaj feeda |
| Polasci, zaslon i PDF | izračun polazaka, zaslon na stanici, PDF vozni red |
| Shema baze | SQL shema s komentarima |





