Veb aplikacija za evidenciju taksi vožnji
Aplikacija treba da omogući operaterima taksi službe da evidentiraju vožnje taksista koji rade u njihovom taksi savezu. Operater se prijavljuje sa korisničkim imenom i lozinkom na sistem. U sistem se beleži svaka aktivnost operatera, a ne samo prijava na sistem (otvaranje listinga obavljenih vožnji za određeno vozilo, pregled vožnji klijenta po broju telefona sa kojeg je upućen poziv, pregled spiska prijavljenih/aktivnih taksi vozila u datom trenutku itd.) Operateru treba omogućiti da vidi spisak prijavljenih taksi vozila u datom trenutku, da prijavi ili odjavi nekog taksistu (početak ili kraj smene) pošto mu se taksista javi telefonom da prijavi da počinje ili zatvara radnu smenu, da pregleda spisak svih vožnji koje je taksista obavio, da pogleda spisak vožnji koje je naručio putnih sa određenim brojem telefona (kao i lokacije sa kojih i do kojih je tim prilikama putnih najavljivao vožnju). Operater po prijemu poziva od putnika sa zahtevom za vožnju treba da evidentira da je dodelio vožnju nekom od aktivnih taksista u smeni (odabir taksiste i dojava njemu se vrši preko radija što nije predmet ove aplikacije, već se podrazumeva da operater u trenutku evidencije raspolaže podacima: kom vozaču dodeljuje koju vožnju). Pored unosa podataka o tome kojem taksisti je dodeljena vožnja sa određene lokacije ka određenoj lokaciji za izabranog klijenta, operater upisuje broj telefona po kojem aplikacija automatski upisuje u evidenciju da je za datog klijenta (prepoznatog prema broju telefona sa kojeg zove) izvršena usluga slanja vozila za prevoz od početne lokacije do navedene krajnje lokacije. Ukoliko u bazi podataka ne postoji klijent sa unetim brojem telefona, aplikacija kreira novi nalog za istog i vrši upis pomenutih podataka. Za svakog klijenta operater može da unese napomenu koja se vezuje za vožnju u slučaju da taksista prijavi neki problem ili primedbu na ponašanje putnika. Kada operater dobije poziv sa upitom za vožnju i pošto unese broj telefona, ukoliko postoje napomene koje su obeležene kao primedbe, one će biti prikazane kako on može da odluči da, u slučaju da politika taksi saveza tako određuje, odbije da izvrši uslugu slanja taksi vozila korisniku za kojeg postoji veći broj evidentiranih primedbi. Aplikacija treba da nudi prikaz statistike za odabrani dan, nedelju, mesec ili opseg datuma (od-do) u kojima se prikazuje ukupan broj vožnji, ukupan broj jedinstvenih putnika, ukupan broj poziva, kao i broj upisanih komentara ili primedbi, kao i prikaz koji ilustruje koji taksisti su imali koliko ostvarenih vožnji, ali i koji operateri su imali koji broj obrađenih vožnji. Grafički interfejs veb aplikacije treba da bude realizovan sa responsive dizajnom.
Tehnička ograničenja
- Aplikacija mora da bude realizovana na Node.js platformi korišćenjem Express biblioteke. Aplikacija mora da bude podeljena u dve nezavisne celine: back-end veb servis (API) i front-end (GUI aplikacija). Sav kôd aplikacije treba da bude organizovan u jednom Git spremištu u okviru korisničkog naloga za ovaj projekat, sa podelom kao u primeru zadatka sa vežbi.
- Baza podataka mora da bude relaciona i treba koristiti MySQL ili MariaDB sistem za upravljanje bazama podataka (RDBMS) i u spremištu back-end dela aplikacije mora da bude dostupan SQL dump strukture baze podataka, eventualno sa inicijalnim podacima, potrebnim za demonstraciju rada projekta.
- Back-end i front-end delovi projekta moraju da budi pisani na TypeScript jeziku, prevedeni TypeScript prevodiocem na adekvatan JavaScript. Back-end deo aplikacije, preveden na JavaScript iz izvornog TypeScript koda se pokreće kao Node.js aplikacija, a front-end deo se statički servira sa rute statičkih resursa back-end dela aplikacije i izvršava se na strani klijenta. Za postupak provere identiteta korisnika koji upućuje zahteve back-end delu aplikacije može da se koristi mehanizam sesija ili JWT (JSON Web Tokena), po slobodnom izboru.
- Sav generisani HTML kôd koji proizvodi front-end deo aplikacije mora da bude 100% validan, tj. da prođe proveru W3C Validatorom (dopuštena su upozorenja - Warning, ali ne i greške - Error). Grafički korisnički interfejs se generiše na strani klijenta (client side rendering), korišćenjem React biblioteke, dok podatke doprema asinhrono iz back-end dela aplikacije (iz API-ja). Nije neophodno baviti se izradom posebnog dizajna grafičkog interfejsa aplikacije, već je moguće koristiti CSS biblioteke kao što je Bootstrap CSS biblioteka. Front-end deo aplikacije treba da bude realizovan tako da se prilagođava različitim veličinama ekrana (responsive design).
- Potrebno je obezbediti proveru podataka koji se od korisnika iz front-end dela upućuju back-end delu aplikacije. Moguća su tri sloja zaštite i to: (1) JavaScript validacija vrednosti na front-end-u; (2) Provera korišćenjem adekvatnih testova ili regularnih izraza na strani servera u back-end-u (moguće je i korišćenjem izričitih šema - Schema za validaciju ili drugim pristupima) i (3) provera na nivou baze podataka korišćenjem okidača nad samim tabelama baze podataka.
- Neophodno je napisati prateću projektnu dokumentaciju o izradi aplikacije koja sadrži (1) model baze podataka sa detaljnim opisom svih tabela, njihovih polja i relacija; (2) dijagram baze podataka; (3) dijagram organizacije delova sistema, gde se vidi veza između baze, back-end, front-end i korisnika sa opisom smera kretanja informacija; (4) popis svih aktivnosti koje su podržane kroz aplikaciju za sve uloge korisnika aplikacije prikazane u obliku Use-Case dijagrama; kao i (5) sve ostale elemente dokumentacije predviđene uputstvom za izradu dokumentacije po ISO standardu.
- Izrada oba dela aplikacije (projekata) i promene kodova datoteka tih projekata moraju da bude praćene korišćenjem alata za verziranje koda Git, a kompletan kôd aplikacije bude dostupan na javnom Git spremištu, npr. na besplatnim GitHub ili Bitbucket servisima, jedno spremište za back-end projekat i jedno za front-end projekat. Ne može ceo projekat da bude otpremljen u samo nekoliko masovnih Git commit-a, već mora da bude pokazano da je projekat realizovan u kontinuitetu, da su korišćene grane (branching), da je bilo paralelnog rada u više grana koje su spojene (merging) sa ili bez konflikata (conflict resolution).
Morate da budete prijavljeni na aplikaciju da biste izvršili rezervaciju. Prijava
M. Tair, "Teme projektnih zadataka za predmet Praktikum Internet i veb tehnologije", 2016-2025. [Online]. Available at: http://zadatak.singidunum.ac.rs/app/piivt-biranje-tema/ [Accessed: 2025-04-28]