Web aplikacija – Empori – Full-stack
Empori Full-stack web aplikacija za upravljanje terminima i rezervacijama je cloud rješenje za organizaciju vremena i poslovnih aktivnosti poduzetnika. Dizajnirana kao multitenant aplikacija, omogućava različitim korisnicima (tenantima) neovisno upravljanje vlastitim podacima i postavkama unutar jedne platforme. S obzirom da je aplikacija multitenant, korisnici mogu dijeliti termine, postavke i ostale funkcionalnosti s više korisnika unutar iste organizacije.
Fokus aplikacije je na jednostavnost sučelja i dostupnost na svim uređajima, čime se korisnicima omogućava kvalitetno upravljanje rezervacijama s brzinom kao da pišu na papirić, ali uz podršku kvalitetne tehnologije koja osigurava bolju komunikaciju s klijentima i praćenje poslovanja. Više detalja o samoj aplikaciji možete pronaći i na porfoliu za landing page ili na stranici Empori SaaS-a.
Backend je baziran na Django frameworku, dok je frontend dio aplikacije razvijan u NextJs-u s Typescript-om. U nastavku sam dao detaljniji opis tehnologija i biblioteka koje koristim.
Ključne funkcionalnosti
Kalendar Rezervacija: Intuitivni kalendar koji omogućava kreiranje i upravljanje terminima s pregledom dnevnog, tjednog i mjesečnog rasporeda.
Predlošci Termina: Brzo kreiranje termina pomoću unaprijed definiranih predložaka.
Cloud Rješenje: Aplikacija je dostupna bez potrebe za instalacijom, što osigurava pristup bilo gdje i sa različitih uređaja koji imaju pristup internetu.
Prilagodba Postavki: Postavljanje trajanja događaja, radnog vremena i radnih dana prema specifičnim potrebama korisnika.
Prilagodba Dizajna: Omogućava prilagodbu dizajna potrebama korisnika. Korisnici mogu izabrati između 3 dizajna, odnosno svijetlog, tamnog i “modernog” načina rada.
Email Podsjetnici: Automatski podsjetnici putem emaila smanjuju broj propuštenih termina i povećavaju zadovoljstvo klijenata.
Frontend
Za frontend dio Empori full-stack web aplikacija koristi sljedeće tehnologije i alate kako bi osigurao optimalno korisničko iskustvo i funkcionalnost:
Redux – Redux Toolkit: Ove biblioteke koristim za upravljanje stanjem aplikacije (JWT autentifikacija, događaji, postavke itd.). Sve komponente aplikacije komuniciraju i dijele stanje pomoću Reduxa, osiguravajući konzistentno i pouzdano funkcioniranje.
Resend i React Email: Implementacija slanja emailova s frontend aplikacije omogućava dobro dizajnirane email komponente i poboljšano korisničko iskustvo.
Zod i React Hook Form: Ove biblioteke koristim za validaciju i upravljanje događajima na frontendu prije slanja API poziva na backend.
React Query: Za upravljanje API pozivima i retry u slučaju grešaka. React Tanstack Query osigurava kvalitetnu integraciju s Reduxom i omogućava odličnu komunikaciju s backendom.
Typescript: pomogao mi je osigurati ispravne tipove podataka kroz tipove i sučelja te mi je značajno smanjio greške u kodu kroz statičku tipizaciju, što omogućava otkrivanje i ispravljanje grešaka tijekom razvoja. Osim toga, Typescript mi je značajno olakšao integraciju s backendom i bolje upravljanje poslovnom logikom, povećavajući pouzdanost aplikacije.
Sentry: Alat za logiranje i praćenje grešaka u aplikaciji, omogućio mi je pravovremene informacije o greškama i reproduciranje istih. Replay funckionalnost mi je značajno pomogla u prepoznavanju i reproduciranju grešaka nastalih korištenjem frontend dijela aplikacije.
Full Calendar i Moment.js: Omogućili su mi brz razvoj i kvalitetno upravljanje datumima/vremenima i generalno kod funkcionalnosti vezane uz evente i rezervacije. Ove biblioteke pomogle su mi u bržem dizajniranju komponenti i osigurale više vremena za bavljenje poslovnom logikom.
NextUi i Tailwind CSS: Biblioteke kojima sam kvalitetnije i brže razvio komponente koje su responzivne na svim uređajima. Ovim bibliotekama sam osigurao visoku kvalitetu i prilagodljivost dizajna.
Vitest: Koristim za testiranje čime osiguravam kvalitetu koda aplikacije prije deploymenta, ali i tijekom razvoja. Vitest mi je omogućio jednostavno pisanje testova prema različitim use case scenarijima koje mogu pokrenuti u bilo kojem trenutku ili ih pustiti da kontinuirano pokretanje kod svake promjene dijelova koda.
Backend Tehnologije i Integracije
Za backend aplikacije koristio sam sljedeće tehnologije i alate:
Djoser i SimpleJWT: Ove biblioteke koristio sam za autentifikaciju korisnika i requestova koji mi dolaze s frontend aplikacije. Razvio sam JWT autentifikaciju koja koristi HTTPOnly Cookies. Fokus sam stavio na sigurnost korisnika i podatakak koje dijelim između frontenda i bakcenda.
Amazon SES: Koristim za slanje email podsjetnika, kao i za cijeli proces registracije, potvrde korisničkih računa, reset lozinke itd.
Cron Jobovi: Automatizirano slanje email podsjetnika koji se pokreću putem cron jobova, omogućavajući pravovremene podsjetnike prema poslovnim pravilima.
Django RestFramework i Swagger: Django RestFramework za API i Swagger za API dokumentaciju, osiguravajući robusnu backend infrastrukturu.
Logtail i Sentry: Za logiranje i praćenje grešaka u aplikaciji, omogućujući detaljno praćenje statusa aplikacije i grešaka te praćenje cron jobova.
Amazon S3: Koristim za pohranu statičkih datoteka, omogućujući skalabilnost i dostupnost.
Pytest: Alat za testiranje backend koda, kojima provjeravam kvalitetu koda, use caseove prema poslovnim pravilima, ali i rukovanje exceptionima.














