Veb aplikacija za aerodromski semafor sistem


Aplikacija treba da omogući administratorima da se prijave sa svojim pristupnim parametrima i da uređuju podatke o podržanim destinacijama, avio-kompanijama i letovima. Podaci treba da budu dostupni za prikaz na više jezika. Grafički prikaz podataka o statusima letova se prikazuje na displejima koji imaju svoje lokacije na aerodromu. Podaci koje administrator unese ili izmeni o letovima se automatski osvežavaju na prikazima na displejima (semafor sistemima) i to tako što su podeljeni u dolazne i odlazne letove i tako da bude prikazano ime avio-kompanije (prevoznika), naziv destinacije (za odlazne) ili naziv mesta odakle je avion poleteo (za dolazne), šifra leta, kao i podaci o letu, među kojima su status (npr. očekivanog vreme sletanja za dolazne, poletanja za odlazne, da li je u toku ukrcavanje, da li je let odložen - za odlazne ili da li kasni - za dolazne, da li je otkazan itd). Samostalno utvrditi koje su sve moguće opcije za prikaz na displejima semafor sistemima na osnovu sopstvenog istraživanja primera u praksi. Za svaki dolazni let trba prikazati na kojem terminalu se očekuje dolazak putnika, a za svaki odlazni let napisati koji je terminal i koji izlaz (gate) je u pitanju. Odlazne letove na kojima se za manje od 15 minuta zatvara izlaz (gate closes for boarding) prikazati istaknuto na displeju semafor sistema tako da trepti diskretno. Pošto svaki displej semafor sistema ima svoju lokaciju, potrebno je napraviti popis svih lokacija i za svaku lokaciju definisati gde se u odnosu na tu lokaciju nalazi svaki izlaz (gate) npr. levo, desno, napred ili nazad u odnosu na lokaciju displeja. Ovaj podatak će biti korišćen za potrebe prikaza adekvatne strelice na svakom konkretnom displeju kada prikazuje podatke odlaznih letova i usmeravanje putnika u pravom smeru ka izlazu, u odnosu na taj konkretan displej. Svaki displej može imati različite rezolucije ekrana, jer nisu svi standardizovanih veličina. Zbog toga je potrebno da se aplikacija razvije kao veb aplikacija sa prilagodljivim dizajnom (responsive design), tako da prikaz podataka o letovima semafor sistema bude prilagođen veličini svakog displeja. Veb stranica koja prikazuje informacije o letovima, kada ne može da prikaže sve letove na jednoj stranici, automatski prikazuje stranu za stranom nakon određenog vremenskog perioda. Kada prođe jedan ciklus prikaza svih stranica, veb stranica prikazuje iste podatke iznova, ali na sledećem jeziku. Tom prilikom se svi elementi interfejsa prevode, a podaci o destinacijama, polazištima, statusima itd. se takođe prevode. Kada se završi ciklus prikaza svih strana informacija o letovima na tom jeziku, prelazi se na sledeći i tako dok se ne vrati na prvi podržani jezik. Sistem treba da podržava sledeće jezike: engleski, srpski (latinica), kineski i francuski jezik. Kada se otvori veb stranica za prikaz podataka, ako u lokalnom skladištu Internet pregledača ne postoji podatak o lokaciji, koji je neophodan da bi veb aplikacija znala kako da pripremi podatke zavisne od lokacije displeja, korisnik mora da odabere lokaciju koja se čuva u lokalnom skladištu za svako sledeće učitavanje veb stranice prilikom automatskog osvežavanja ili ponovnog pokretanja displeja semafor sistema kada se Internet pregledač automatski pokrene. Podaci o letovima su dostupni korisnicima koji nisu prijavljeni. Samo administratori, nakon prijave, mogu da uređuju podatke na osnovu kojih se prikazuju informacije o letovima.


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]