Ovaj projekt je napravljen u svrhu praćenja promjena online rasporeda na FSRE-u.
Trenutne funkcije uključuju:
- Mobile push notifikacije u vezi promjena rasporeda
- Offline podrška (nećete propustiti promjene čak ako niste spojeni na internet dok se promjena detektirala)
- Web UI kao alternativa postojećem pregledu rasporeda
- Promjena jezika (trenutno podržani jezici su Engleski i Hrvatski)
- Selekcija studija za kojeg želimo dobivati obavijesti
- Mogućnost primanja obavijesti za više studija
- Povijest obavijesti
- Pregled obavijesti (je li predmet dodan ili skinut sa rasporeda, kada se promjena detektirala, itd.)
- Navigacija kroz tjedne
- Moguće self-hostanje
- Mogućnost izmjene intervala promjene (trenutno svakih 15 minuta)
Backend server je implementiran u Java Spring Bootu. Koristi MariaDB bazu podataka u produkciji, a H2 bazu prilikom testiranja. Projekt je Dockeriziran no može se i lokalno pokrenuti.
Neke informacije:
- Pravovremenost je važna značajka ovog projekta, pa se koriste Spring Events, Firebase Cloud Messaging, i cron jobovi
- Definicije o rasporedu sati (nazivi predmeta, profesora, itd.) se dohvaćaju jedanput prilikom paljenja aplikacije
- Raspored je keširan za trenutni i sljedeći tjedan (u trenutku paljenja aplikacije) za sve studije (trenutno 27)
- Potpuna Swagger dokumentacija (requests, responses, exceptions, HTTP status codes, itd.)
- Dokumentiran način rada u README fileu
- Koristi se najnovija Java LTS verzija (21) što uključuje značajke poput records, a i druge moderne značajke poput Optional klase
Web aplikacija je React SPA implementirana putem Vite bundlera. Za UI se koristi ShadCN i TailwindCSS. Projekt je kompatibilan sa Bun runtimeom, koji je puno brži od Node.js i omogućava brže build times.
Neke informacije:
- Potpuno responzivan dizajn
- Dark i light teme
- Moderan dizajn i paleta boja
- Napredne mogućnosti: prikaz više predmeta unutar istog vremenskog raspona, navigacija po tjednima i studijima, pregled detaljnih informacija
- Error handling sustav koji ne skriva ništa od korisnika
Mobilna aplikacija je izrađena u Flutter-u i najkompleksniji je dio ovog projekta. Koristi Flutter BLoC i BLoC arhitekturu, a glavni cilj prilikom izrade je bio snižavanje mogućnosti pogrešaka. Aplikacija je jednostavna i služi za registriranje subskripcija na FCM kao i za pregled povijesti notifikacija.
Neke informacije:
- Podržana 2 jezika (hrvatski i engleski)
- Light i dark teme
- Mogućnost selekcije i pretraživanja studija na koji se želimo pretplatiti
- Mogućnost slušanja promjena sa više studija
- Navigacija po tjednima
- Upravljanje sa poviješču (osvježavanje povijesti da bi se UI ažurirao, brisanje povijesti za pojedini studij/tjedan, brisanje čitave povijesti)