Razvoj web-aplikacija

Projektni zadatak se sastoji od izrade složenije web-aplikacije koja tipično treba uključivati i klijentski i serverski aspekt web-programiranja.

Prijava projekta.
  1. Studenti se trebaju organizirati u timove sa 2 ili 3 člana, te odabrati jedan od dolje ponuđenih zadataka ili osmisliti svoju temu približno jednakog stupnja složenosti. Originalna tema koja nije na donjem popisu (i koja je bitno različita od svih tema na popisu) može donijeti 5 dodatnih bodova.
  2. Nakon toga, trebaju se javiti mailom profesoru do ponedjeljka, 1. prosinca u 23h59. U mailu trebaju navesti odabranu temu (s detaljnijim opisom ako nije na donjoj listi), te popis članova tima. Mail također treba biti poslan i svim članovima tima.
Izrada projekta.
  1. Rješenje treba razvijati pomoću Git sustava za verzioniranje (na primjer, kao privatni GitHub ili Bitbucket repozitorij).
  2. Aplikaciju je preporučeno razvijati u skladu s Model-View-Controller arhitekturalnim obrascem. U protivnom treba dati odgovarajuće obrazloženje.
  3. Možete koristiti i vanjske JavaScript/HTML/CSS biblioteke, poput jQuery, Bootstrap i sličnih. Ne smijete koristiti gotova ili skoro gotova rješenja zadatka kojeg rješavate -- takva ili bilo koja druga vrsta plagiranja nije prihvatljiva!
  4. Projekt treba sadržavati aspekte i serverskog (Flask) i klijentskog (JavaScript) programiranja. Iznimke su moguće jedino u dogovoru s profesorom.
  5. Aplikacija mora biti "zaokružena cjelina": treba ju moći koristiti vanjski korisnik koji nije upućen u implementaciju, treba biti user friendly.
Obrana projekta.
  1. Obrana projekta će biti tijekom rokova u veljači. Mogući termini će biti objavljeni ovdje.
  2. Bar 2 dana prije obrane treba profesoru mailom poslati link na Git repozitorij (tj. invite za članstvo), te kratku prezentaciju s opisom aplikacije.
  3. Na obrani trebaju biti prisutni svi članovi projekta, te svatko treba objasniti svoju ulogu u projektu. Svaki član će dobiti mali zadatak vezan uz aplikaciju koji će trebati implementirati na licu mjesta.
  4. Važno pravilo za bodovanje:
    • Broj bodova za pojedinog studenta <= 5*broj dana u kojima postoji njegov smisleni commit (tj. svaki član mora bar nešto raditi na aplikaciji tijekom 10 dana da dobije maksimalnih 50 bodova).
  5. Elementi ocjenjivanja (na svakoj komponenti treba ostvariti "prolaz"):
    • Korisničko sučelje, korisničko iskustvo (UI/UX).
    • Složenost aplikacije.
    • Funkcionalnost.
    • Kvaliteta koda.
    • Pojedinačno pitanje za svakog člana tima.
  6. Svaki član tima treba na svom računalu moći pokrenuti i izmjenjivati svoju instancu aplikacije. (Sve instance mogu dijeliti istu bazu.)
  7. Nemojte zaboraviti prijaviti ispit bilo na prvom bilo na drugom roku. Mogući termini obrane projekta (javiti se mailom tjedan dana ranije za dogovor!):
    • Na prvom roku: 9.-11. veljače.
    • Na drugom roku: 16.-18. veljače ili 25.-27. veljače.

Teme za projektne zadatke

  1. Društvena igra
    Implementirajte neku igru za više korisnika. Npr. belu, preferans, Hanabi, šah ili nešto drugo po vlastitom izboru - pogledajte i ovdje za inspiraciju. Potrebno je implementirati odvojene sobe u koje se igrači prijavljuju (tj. više igara se može odvijati u isto vrijeme).

    Zadatak ("bela") je odabrao tim: { MG, PG, AP }

  2. Aplikacija za rezerviranje prostorija na faksu
    Koristeći sučelje (po mogućnosti) slično Google Calendaru, (ulogirani) korisnici mogu rezervirati slobodni termin željene prostorije na faksu, te obrisati (svoju) rezervaciju koju su ranije napravili. Postoji administrator koji može brisati i rezervirati bilo koje termine. Neulogirani korisnici mogu vidjeti raspored bilo koje odabrane prostorije.

    Zadatak je odabrao tim: { KB, VB, AJ }

  3. Portal za studentsku praksu
    Tvrtke mogu zatražiti korisnički račun i oglasiti da traže studente za studentsku praksu. Svi mogu vidjeti i pretraživati objavljene oglase. Ulogirani studenti se mogu prijaviti za praksu. Treba omogućiti izvjesnu fleksibilnost - npr. tvrtka može ali i ne mora tražiti da se prilikom prijave pošalje životopis, prosjek ocjena, kontakt mail-adresa i slično. Moguće je izvesti i da student prlikom kreiranja accounta uredi svoj profil s tim podacima, pa da onda tvrtka može vidjeti njegov profil kad se prijavi, ili neka slična varijanta.
  4. Evaluator
    Web-stranica omogućava korisnicima rješavanje programerskih zadataka. Korisnik može odabrati jedan od ponuđenih zadataka, te poslati svoje rješenje. Rješenje se kompajlira i izvršava na serveru (pazite na sigurnost, npr. vidi chroot). Ispravnost rješenja se testira tako da se korisnikov program pokreće sa unaprijed zadanim skupom ulaznih datoteka, te se njegov ispis uspoređuje s točnim izlaznim datotekama. Administrator može stvoriti novi zadatak tako da mu zada tekst, te skup ulaznih i točnih izlaznih datoteka.
  5. Repozitorij datoteka
    Potrebno je implementirati jednostavan način za prikaz i dodavanje novih datoteka na neku web-stranicu. Konkretno, administrator može definirati novi repozitorij datoteka (npr. "Kolokviji" ili "Prezentacije"), te dodavati nove datoteke proizvoljnog tipa u repozitorij zajedno s opisom (npr. "2014-kolokvij1.pdf") i tagovima (npr. "programiranje", "JavaScript" i slično). Administrator treba moći i brisati ili editirati postojeće datoteke iz repozitorija. Nadalje, potrebno je napraviti sučelje kojim se odabrani repozitorij može izuzetno jednostavno prikazati na web-stranici, dajući pri tome link za download odgovarajuće datoteke. Idealno, sučelje treba pružati mogućnost sortiranja datoteka po odabranom ključu, filtriranje po odabranom tagu i slično.
  6. Blog portal
    Web aplikacija za blogere. Korisnici aplikacije mogu stvarati svoje blogove i pisati postove u njemu. Bloger mora moći i uređivati svoje prijašnje postove. Svaki post drugi ulogirani korisnici (blogeri) mogu komentirati. Administrator mora moći otvarati nove korisnike (blogove), uređivati i brisati postove i komentare svakom blogeru. Kao alat kojim korisnici unose svoje blogove možete koristiti neki od slobodno dostupnih editora, npr. TinyMCE ili neki drugi s ovog linka.
  7. Aplikacija za čuvanje bilješki
    Web aplikacija s korisničkim sučeljem nalik na Google Keep. Korisnicima je omogućeno kreiranje i izmjena bilješki koje se pohranjuju u bazu podataka. Moguća je pretraga bilješki po sadržaju i tagovima. Aplikacija podržava spremanje i učitavanje bilješki iz csv (ili nekog drugog prikladnog) formata. Omogućeno je dijeljenje kreiranih bilješki među korisnicima aplikacije. Također, podržana je autentikacija korisnika kroz third-party servise (npr. Facebook).
  8. Aplikacija za web-podršku nastavi
    Baza samog sustava su korisnici (studenti i profesori), stranice predmeta te personalizirane obavijesti za svakog korisnika. Na osnovu toga mogu se, ovisno o složenosti, dodati personalizirani raspored sati, predaja zadaća i slične funkcionalnosti.
  9. Špeceraj
    Online sustav koji korisniku omogućuje pregled aktualnih ponuda različitih trgovina sa sljedećim ciljevima: korisnik može izraditi svoj profil na sustavu; korisnik ima mogućnost izrade popisa za kupovinu (“napuniti ceker”) na temelju rezultata pretraživanja baze podataka proizvoda različitih trgovina (pretraživanje prema imenu te mogućnost sortiranja po cijeni); aplikacija korisniku nudi mogućnost automatskog određivanja trgovine u kojoj se ostvaruje najjeftinija kupnja za jedan proizvod te za ukupan sadržaj košarice; za svaku trgovinu moguće je dobiti popis proizvoda na akciji; trgovine je moguće recenzirati.
  10. Web aplikacija s receptima
    Aplikacija sluzi korisnicima kako bi spremali svoje recepte, pregledavali tuđe te ih spremali kao favorite. Recepti se mogu ocjenjivati ocjenama od 1-5, te se mogu komentirati. Recepte je moguce sortirati prema određenom sastojku. Svaki od recepata pripada nekoj kategoriji (npr. deserti, hladna jela, finger food, ...), koja nije jedinstvena, odnosno jedan recept može biti u više kategorija. Neke od kategorija unaprijed su predefinirane, ali postoji mogućnost dodavanja novih (od strane administratora), te postoji mogućnost sortiranja i filtriranja po kategorijama. Aplikacija prilikom pokretanja, svaki dan pokazuje slučajna 3 recepta iz 3 različite kategorije, neovisno o broju komentara i ocjeni koju taj recept ima.

    Zadatak je odabrao tim: { LM, PR }

  11. Web aplikacija za nalaženje hotelskog smještaja
    Aplikacija sadrži nekoliko hotela u nekoliko gradova te se korisniku nudi opcija da na temelju grada, cijene, udaljenosti od centra, dobivenih ocjena nađe hotel koji mu najviše odgovara. Također može po bilo kojem od kriterija sortirati hotele. Korisnici mogu davati ocjene hotelima te ostavljati komentare, tj. recenzirati hotele, koji će kasnije biti dostupni ostalim korisnicima. Uz obične korisnike koji rezerviraju smještaj, postoje i korisnici tipa hotel. Oni mogu definirati broj soba odgovarajućeg tipa te njihove cijene, eventualno dodavati slike. Treba onemogućiti daljnju rezervaciju soba ako one postanu nedostupne za odabrane datume.
  12. Spiza
    Web aplikacija za naručivanje hrane iz popisa restorana. Popis restorana može biti složen prema: vrsti hrane, restorana iz kojeg je korisnik najviše naručivao i prema cijeni jela. Za svaku desetu narudžbu korisnik bi dobio određeni popust. Također, omogućili bi naknadno dodavanje poslužitelja hrane te novih jela. Postoje tri tipa korisnika: osoba koja naručuje hranu, restoran i dostavljač. Svaki od njih može stvoriti novi korisnički račun. Između ostalog, treba implementirati sljedeće funkcionalnosti: Korisnik može odabrati restoran i jelo za dostavu, te ocijeniti isporučeno jelo. Restorani mogu dodavati nova jela u menu, vidjeti narudžbe, te označavati kada je naručeno jelo spremno za dostavu. Dostavljači vide popis svih jela označenih za dostavu, mogu odabrati ono koje će dostaviti, te ga označiti kao dostavljeno.
  13. Sustav rezervacija za kazalište/kino
    Korisnici će imati izbor biranja predstave, dvoranu i sjedala u dvorani, te će dobiti potvrdu rezervacije koji će se moći provjeriti s nekim oblikom autentifikacije, dok će administratori imati mogućnosti definiranja termina predstava po dvoranama, te zaposlenici prava na brisanje, dodavanje, mijenjanje rezervacija. Sučelje za korisnike bi trebalo izgledati nešto slično kao Cinestar sustav rezervacije filmova.

    Zadatak je odabrao tim: { BG, VJ, MNj }

    Zadatak je odabrao tim: { DL, MP }

  14. Upravljanje projektima, timovima i zadacima
    Neke od funkcionalnosti bi bile: Praćenje projektnih zadataka: omogućuje dodavanje, dodjeljivanje i praćenje zadataka koje je potrebno obaviti kako bi se projekt uspješno završio, te dodavanje komentara na zadatke. Planiranje projekta: omogućuje kreiranje projektnog plana, dodavanje rokova i prioritetnih zadataka. Suradnja u timu: omogućuje članovima tima da surađuju i komuniciraju jedni s drugima te dijele informacije preko komentara ili datoteka. Administratori mogu dodavati nove korisnike i dodijeljivati im prava pristupa određenim dijelovima i funkcionalnostima aplikacije.