// projekat ·
IncidentOps
Napravio sam full-stack aplikaciju za odgovor na incidente sa JWT/RBAC kontrolom, statusnim tokom, SLA rokovima, eskalacijama i admin katalogom.
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
RESPONDERiADMINna 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 -> sharedna 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.