Preskoči na sadržaj
nazad na projekte

// projekat ·

IncidentOps

Napravio sam full-stack aplikaciju za odgovor na incidente sa JWT/RBAC kontrolom, statusnim tokom, SLA rokovima, eskalacijama i admin katalogom.

React 19 / TypeScript / Spring Boot / PostgreSQL / Spring Security / Testcontainers

Uloga: Samostalni programer · Univerzitetski projekat · IT355 · Godina: 2026 · Status: tehnička implementacija završena

ukratko: Sistem za odgovor na incidente sa ulogama, napravljen kao React klijent i Spring Boot API. Responderi obrađuju red, menjaju incidente, dodaju beleške i eskaliraju. Administratori održavaju timove, servise i SLA pravila.

Problem

Tokom incidenta istorija se rasipa svuda: chat, tiketi, nečije beleške. IncidentOps je drži u jednom zapisu. Svaki incident ima vlasnika, upravljani servis, prioritet, kontrolisan status, SLA stanje, beleške i ručne eskalacije, a vremenska linija beleži ko je šta promenio i kada.

Ograničenja

  • Jedan životni ciklus kroz tri sloja. UI, API i baza moraju da se slože oko toga koji prelazi statusa su dozvoljeni. Klijent ne sme da preskoči korak.
  • Dozvole pripadaju serveru. Responderi i admini vide različite ekrane, ali skrivanje admin linka u React-u nikad nije bezbednosna granica.
  • SLA stanje se računa, ne unosi. Rokovi dolaze iz pravila koja spajaju upravljani servis i prioritet incidenta.

Odluke

  • Spring Boot backend organizovan po funkcijama, sa domenom bez framework-a. Domenski sloj nema Spring, JPA ni HTTP tipove. Aplikacioni servisi vode slučajeve korišćenja, a PostgreSQL adapteri čuvaju korisnike, servise, incidente, događaje, pravila i eskalacije.
  • Prelazi se proveravaju na serveru. Beleške, eskalacije i promene statusa dodaju se na vremensku liniju sa prijavljenim korisnikom kao akterom.
  • Spring Security sa JWT-om sprovodi RESPONDER i ADMIN na svakom endpoint-u. Podaci sesije na klijentu ostaju u aktivnom tabu.
  • SLA stanje dolazi iz API-ja. Server javlja da li su potvrda i rešavanje u roku, probijeni ili ispunjeni. Klijent to prikazuje tekstom i vremenom, ne samo bojom.
  • app -> features -> shared na frontend-u, pa zavisnosti idu samo u jednom smeru.

Ishod

Full-stack verifikacija je koristila potpisane zahteve za prijavu, Spring Security, MockMvc, PostgreSQL Testcontainers i iste REST ugovore koje koristi frontend. Pokrila je kreiranje incidenta, promene statusa, beleške, eskalaciju, 403 odgovore po ulogama, admin operacije nad katalogom i transakciono brisanje. Provere u browser-u na desktop, tablet i mobilnim širinama prošle su kroz fokus tastature, dijaloge sa skrolom, oporavak API-ja, istekle sesije i zahtev da nema horizontalnog prelivanja.