Veb aplikacija za obuku zaposlenih
Aplikacija treba da omogući administratorima da se prijave sa svojim pristupnim parametrima. Administrator ima uvid u spisak zaposlenih koji treba da prođu obuke za određene pozicije. Administrator može da pravi i uređuje naloge zaposlenih, tj. da im izdaje pristupne parametre. Administrator može da uređuje spisak pozicija za koje postoje obuke i da pridružuje zaposlene tih pozicijama. U bazi aplikacije postoje delovi obuka, tj. lekcije. Svaka lekcija se sastoji od naziva, kratkog opisa, teksta koji objašnjava suštinu lekcije i linka ka video snimku te lekcije. Administrator može da upravlja linijom obuke, koje se vezuju za određenu poziciju. Svaka linija obuke ima naziv i spisak lekcija iz baze koje u okviru te obuke treba da prođu zaposleni na tim pozicijama. Lekcije su poređane redom kojim moraju da budu pregledane. Administrator može naknadno da dodaje nove lekcije u liniju za obuku na bilo koju poziciju u listi te linije. Kada se zaposleni prijavi na aplikaciju sa svojim pristupnim parametrima koje mu je administrator izdao, dobija listu linija obuke koje treba da prođe za svoju poziciju i vidi tačno koliko procenata je prešao koju liniju obuke. Kada odabere liniju obuke, otvara mu se spisak lekcija koje pripadaju toj liniji obuke i vidi koje je prošao i koje slede. Ne može unapred da preskače i da otvara lekcije, ako nije završio prvu prethodnu u listi koja je nezavršena. Kada otvori lekciju, vidi njen opis, tekst lekcije i video snimak. Nakon jednog minuta, pojavljuje se na dnu stranice polje u koje treba da unese rečima tekst koji glasi: "Izjavljujem da sam pročitao tekst i pogledao video." ili "Izjavljujem da sam pročitala tekst i pogledala video.", zavisno od pola zaposlenog, pa da klikne na dugme kojim šalje tu izjavu. Ako izjava nije precizno otkucana, ne može da bude poslata. Ako jeste, lekcija se obeležava kao završena i beleži se tačno datum, vreme, IP adresa i oznaka Internet pregledača sa koje je obeležena kao završena. Zatim se automatski otvara sledeća lekcija u liniji za obuku. Ako administrator doda novu lekciju u liniju za obuku, zaposleni koji se prijavi na svoj panel za obuke i koji pripada poziciji za koju je linija za obuku koja je dopunjena, videće da nije položena 100% linija za obuku i mora da pristupi liniji kako bi položio novu lekciju koja je postala obavezna za njegovu ili njenu poziciju u firmi. Obaveza zaposlenih je da u najkraćem mogućem roku postignu 100% završenih linija za obuke za njihove pozicije.
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]