Veb aplikacija za auto servis


Aplikacija treba da omogući administrativnom osoblju auto servisa da uređuje evidenciju popravki automobila i da evidentira korisnike usluga. Aplikacija treba omogući uređivanje lista proizvođača, modela automobila određenog proizvođača, spisak konkretnih vozila (model automobila odabranog proizvođača sa unetim podacima o vrsti goriva, tipu menjača - automatik, 5 brzina, 6 brzina, kao i broj registracione oznake, broj šasije, broj motora i boja), kao i spisak korisnika usluga (ime, prezime, telefon i podatak o tome koja konkretna vozila je dopremao na servis). Aplikacija nudi opciju unosa podataka o svim obavljenim uslugama. U evidenciji pružene usluge (radova u servisu) evidentira se za koje konkretno vozilo kojeg korisnika usluga je obavljena koja usluga i po kojoj ceni, uz evidenciju podatka o ceni konkretnog posla. Spisak usluga servisa uređuje administrator kroz panel za administraciju i svaka usluga ima osnovnu cenu, a prilikom evidentiranja usluge/rada, administrator može da upiše koliko procenata ta osnovna cena treba da bude uvećana ili umanjena zavisno od eventualnih komplikacija u njenom pružanju ili u slučaju nekih popusta, akcija. Aplikacija treba da nudi prikaz istorije svih obavljenih poslova za određeni konkretan automobil, kao i svih radova za sve automobile određenog korisnika usluga. Korisniku usluga može biti dodeljeno više konkretnih automobila koje je dopremao u servis za popravku. Administrator može određene evidentirane usluge da obeleži kao plaćene i one se tada prikazuju u drugoj boji u listi i ulaze u konačni iznos ostvarenog prihoda po mesecima, a one usluge koje su evidentirane, a još nisu obeležene kao naplaćene se prikazuju u tabeli sa sumom ukupnih dugovanja na dan pregleda kako bi menadžment video koliko ima nenaplaćenih usluga. Aplikacija mora da vrši kontrolu pristupa i da dozvoli pristup samo korisnicima koji se prijave sa ispravnim parametrima, koji čine korisničko ime i lozinku. Aplikacija mora da bude realizovana u responsive dizajnu, tj. da bude prilagođena i za mobilne telefone i tablične računare koje serviseri mogu koristiti u servisima da evidentiraju svoj rad i formiraju konačnu cenu pruženih usluga. Grafički interfejs veb sajta 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).

Ova tema je rezervisana od strane studenata:

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]