- Gin HTTP server sa dashboard i API endpointima - JSON API: GET /api/tasks, GET /api/task/:id, POST /api/task/:id/move - HTML dashboard sa Kanban prikazom (5 kolona) - HTMX za interaktivnost (klik na task → detalj panel) - Embedded static fajlovi (htmx.min.js, sortable.min.js) - Config: dodat KAOS_PORT - 10 server testova, 77 ukupno — svi prolaze - Očišćeni duplikati taskova iz v0.1 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1.8 KiB
1.8 KiB
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.