# Hostkeeper V2 — Progress Tracker > **Purpose**: Enable seamless continuation of development by any agent/LLM across sessions. > **How to use**: Read this file first. Find the first unchecked `[ ]` item. That's where you continue. > **Last Updated**: 2026-07-07 > **Status**: Sprint 0 + 1 selesai, Sprint 2 sedang dikerjakan. --- ## 1. Overview Hostkeeper V2 is a Termius-like cross-platform SSH/SFTP management GUI application. | Item | Value | |------|-------| | **Goal** | Build a free, open-source Termius alternative with full feature parity | | **Desktop** | GoFiber backend + HTMX + xterm.js + Alpine.js | | **Mobile** | Go mobile library + WebView wrapper (Android/iOS) | | **Backend language** | Go 1.26 | | **HTTP framework** | GoFiber v2 (fasthttp-based) | | **Frontend** | HTMX + Alpine.js + xterm.js (minimal JS, server-rendered HTML) | | **Styling** | TailwindCSS v4 + custom CSS (Lumina System) | | **Desktop wrapper** | Electron (opsional — bisa lewat browser saja) | | **Mobile wrapper** | gomobile + WebView | | **V1 (existing)** | CLI/TUI SSH/SFTP manager — 105 tests, all passing. Frozen. | **Keputusan arsitektur**: Migrasi dari React/SPA ke HTMX/server-rendered HTML. Lihat [ARCHITECTURE_HTMX.md](ARCHITECTURE_HTMX.md) untuk detail. --- ## 2. Current Status Summary | Item | Status | |------|--------| | Planning documents (HTMX) | DONE | | Sprint 0 — Setup GoFiber + HTMX | DONE | | Sprint 1 — Dashboard + Host List | DONE | | Sprint 2 — Snippets + Keychain | DONE | | Sprint 3 — Settings + Brief | DONE | | Sprint 4 — SFTP Dual-Pane | DONE | | Sprint 5 — Terminal + xterm.js | DONE | | Sprint 6 — Storage Integration | NOT STARTED | --- ## 3. Sprint Checklist (HTMX) ### Sprint 0 — Setup GoFiber + HTMX - [x] Go module init (`app/backend/go.mod`) - [x] Install GoFiber v2 + deps - [x] Minimal Fiber server (`main.go`) — port 1947 - [x] Static files serving (`/static/`) - [x] HTML template engine (html/template via gofiber/template) - [x] Download HTMX + Alpine.js (`static/js/`) - [x] Setup TailwindCSS v4 — `input.css` → `output.css` - [x] Custom CSS (Lumina) — dot-grid, glassmorphism, keyframes, toggle, modal, x-cloak - [x] Layout template (`views/layout.html`) — sidebar + header + main - [x] Nav template (`views/nav.html`) — nav items with active state - [x] Index + routing (`views/index.html` + `handler/dashboard.go`) - [x] Health endpoint (`handler/health.go`) - **Verify**: `curl :1947/api/health` → `{"app":"hostkeeper-v2","status":"ok"}` ### Sprint 1 — Dashboard + Host List - [x] Model Host + HostStore (`internal/model/host.go`) — mock data (8 hosts) - [x] Dashboard handler — full page render (`handler/dashboard.go`) - [x] Host list partial (`views/host_list.html`) — cards + list view - [x] Search HTMX — `hx-get="/hosts?q=..." hx-trigger="keyup delay:200ms"` - [x] Filter status — `