# Hostkeeper V2 — Sprint Plan (HTMX) > **Status**: Migrasi React → HTMX > **Last Updated**: 2026-07-07 > **Framework**: GoFiber v2 + HTMX + Alpine.js + TailwindCSS v4 --- ## Sprint 0 — Setup GoFiber + HTMX **Goal**: GoFiber server running, layout HTML renders, TailwindCSS works. ### Tasks | # | Task | Files | Verify | |---|------|-------|--------| | 0.1 | Go module init | `app/backend/go.mod` | `go mod init` clean | | 0.2 | Install GoFiber + deps | `go.mod` | `go get github.com/gofiber/fiber/v2` | | 0.3 | Minimal Fiber server | `app/backend/main.go` | Server starts on :1947 | | 0.4 | Static files serving | `main.go` | `/static/` serves files | | 0.5 | HTML template engine | `main.go` + `views/layout.html` | Template renders | | 0.6 | Download HTMX + Alpine | `static/js/htmx.min.js`, `static/js/alpine.min.js` | JS files exist | | 0.7 | Setup TailwindCSS v4 | `static/css/output.css` | Tailwind classes work | | 0.8 | Custom CSS (Lumina) | `static/css/custom.css` | dot-grid, glassmorphism, keyframes | | 0.9 | Layout template | `views/layout.html` | Sidebar + header + main | | 0.10 | Nav template | `views/partials/nav.html` | Nav items with active state | | 0.11 | Index + routing | `views/index.html` + `handler/dashboard.go` | Dashboard renders | | 0.12 | Health endpoint | `handler/health.go` | `curl :1947/api/health` | ### Files to Create (Sprint 0) ``` app/backend/ ├── main.go ├── go.mod ├── go.sum ├── internal/ │ ├── handler/ │ │ ├── dashboard.go │ │ └── health.go │ └── middleware/ │ └── viewdata.go ├── static/ │ ├── css/ │ │ ├── output.css │ │ └── custom.css │ └── js/ │ ├── htmx.min.js │ └── alpine.min.js └── views/ ├── layout.html ├── index.html └── partials/ └── nav.html ``` --- ## Sprint 1 — Dashboard + Host List **Goal**: Dashboard halaman dengan host list, search, filter, add host modal. ### Tasks | # | Task | Files | |---|------|-------| | 1.1 | Model Host | `internal/model/host.go` | | 1.2 | Dashboard handler | `internal/handler/dashboard.go` | | 1.3 | Dashboard template | `views/partials/dashboard.html` | | 1.4 | Host list partial | `views/partials/host_list.html` | | 1.5 | Host card partial | `views/partials/host_card.html` | | 1.6 | Search HTMX | `hx-get="/hosts?q=..." hx-trigger="keyup delay:200ms"` | | 1.7 | Filter status | `hx-get="/hosts?filter=active"` + `