# T08: HTTP server + API za taskove **Kreirao:** planer **Datum:** 2026-02-20 **Agent:** coder **Model:** Sonnet **Zavisi od:** T07 ✅ --- ## Opis Go HTTP server koji servira dashboard i API za upravljanje taskovima. Koristi postojeću supervisor logiku (ScanTasks, FindTask, MoveTask). ## Fajlovi za kreiranje ``` code/ ├── cmd/kaos-server/ │ └── main.go ← HTTP server entry point ├── internal/server/ │ ├── server.go ← Server struct, rute, handler-i │ └── server_test.go ← testovi API-ja └── web/ └── static/ ├── htmx.min.js ← HTMX (ugradi u binary) └── sortable.min.js ← Sortable.js (ugradi u binary) ``` ## API endpointi ``` GET / → dashboard stranica (HTML) GET /api/tasks → svi taskovi (JSON) GET /api/task/{id} → jedan task (JSON + sadržaj fajla) POST /api/task/{id}/move → premesti task (query: to=ready) GET /task/{id} → task detalj (HTML fragment za HTMX) POST /task/{id}/move → premesti + vrati ažuriran HTML ``` ## Pravila - Gin framework (već odlučeno) - Port iz .env: KAOS_PORT (default 8080) - Static fajlovi ugrađeni u binary (embed.FS) - CORS nije potreban (sve sa istog servera) - Graceful shutdown ## Testovi - GET /api/tasks → vraća JSON listu taskova - GET /api/task/T01 → vraća task sa sadržajem - POST /api/task/T08/move?to=ready → premesti fajl, vrati 200 - POST /api/task/T99/move?to=ready → 404 - POST /api/task/T01/move?to=invalid → 400 ## Očekivani izlaz `go build ./cmd/kaos-server/` kreira binary. `go test ./internal/server/ -v` — svi testovi zeleni. Server sluša na portu, vraća JSON na API pozive. --- ## Pitanja --- ## Odgovori