Veb aplikacija za elektronsku upravu


Aplikacija treba da omogući građanima da izvrše elektronsku rezervaciju termina za obavljanje administrativnih poslova pri odeljenjima državnih službi u državi. Administrator sistema može da se prijavi sa korisničkim imenom i lozinkom i može da uređuje spisak odeljenja državnih službi. Svako odeljenje ima svoj naziv i instituciju kojoj pripada. Spisak institucija je u bazi podataka unapred popunjen, kao i spisak gradova i mesta u državi. Administrator može da doda novo odeljenje i za svako odeljenje definiše instituciju kojoj pripada odeljenje, naziv i opis odeljenja, adresu i bira mesto. Odeljenja može da sakrije, ali ne može nikada da obriše iz baze. Primeri odeljenja su npr. "Odeljenje za podnošenje zahteva za izdavanje lične karte", "Odeljenje za podnošenje zahteva za izdavanje pasoša" ili "Odeljenje za podnošenje zahteva za izdavanje ATA karneta" itd. Za svako odeljenje, administrator mora da napravi raspored odobrenih termina za pružanje usluga. Slobodne termine administrator formira tako što izabere datum i markira termine koji su slobodni klikom na njih. Termini se u interfejsu prikazuju kao niz kućica sa prikazanim satnicama. Rezolucija termina je na po 15 minuta. Administrator može određene termine da preskoči (npr. redovne pauze ili vreme za obavljanje drugih poslova po dužnosti). Kada administrator obeleži sve potrebne termine, može da ih sačuva. Administrator ima mogućnost da izmeni termine koji su greškom ostali obeleženi da nisu na raspolaganju ili da one koje je obeležio kao slobodne ukine. Ne može da poništi termin koji je obeležio kao slobodan, a da je neki građanin za taj termin izvršio rezervaciju. Građani se prijavljuju sa svojim JMBG i lozinkom i mogu da vide spisak svih institucija koje postoje. Klikom na instituciju, prikazuju se sva mesta u kojima ta institucija ima odeljenja. Klikom na odeljenje, prikazuje se raspored za naredne dve nedelje od tog trenutka u vidu matrice, gde su datumi poređani po kolonama, a termini su u redovima. Termini su sa rezolucijom od po 15 minuta. Svaki termin je obojen drugom bojom koja je u interfejsu pojašnjena legendom, npr. sivom bojom su obeleženi termini koji su zauzeti i/ili u njima ne postoji mogućnost rezervacije termina, a zelenom bojom su obeleženi slobodni termini kada je moguće izvršiti rezervaciju (odobreni od strane administratora i niko u tim terminima do sada nije izvršio rezervaciju). Klikom na termin, korisnik dobija informaciju da potvrdi rezervaciju ponovnim unosom svoje lozinke. Potom, termin će biti obeležen zelenom bojom. Rezervacija nije moguća za tekući dan. Administrator u panelu za uređivanje termina po odeljenjima institucije može da vidi spisak svih zakazanih termina koje može da štampa. Grafički interfejs 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).

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]