docs: migrate all planning docs from React to GoFiber + HTMX
- New ARCHITECTURE_HTMX.md — comprehensive HTMX architecture doc - ARCHITECTURE.md — updated to point to HTMX version - UI_COMPONENTS.md — replaced React tree with HTMX partials - SPRINT_PLAN.md — all sprint tasks updated for HTMX - BUILD_SYSTEM.md — simplified (no Vite, no npm) - TIMELINE.md — 3.5 week HTMX timeline - PROGRESS.md — updated status + HTMX - AGENTS.md — updated checkpoint with HTMX decision
This commit is contained in:
+102
-289
@@ -1,316 +1,129 @@
|
||||
# Hostkeeper V2 — Timeline & Milestones
|
||||
# Hostkeeper V2 — Timeline & Milestones (HTMX)
|
||||
|
||||
> **Status**: V2 Planning Complete
|
||||
> **Last Updated**: 2026-06-29
|
||||
> **Start Date**: 2026-06-30 (estimated)
|
||||
> **Target MVP**: 2026-08-07 (estimated)
|
||||
> **Status**: Updated untuk HTMX
|
||||
> **Last Updated**: 2026-07-07
|
||||
> **Start Date**: 2026-07-07
|
||||
> **Target MVP**: 2026-08-01 (estimasi ~3.5 minggu)
|
||||
|
||||
---
|
||||
|
||||
## 1. Timeline Overview
|
||||
|
||||
Total estimated: **25-30 working days** (~6 minggu calendar, 1-2 minggu buffer)
|
||||
## Timeline Overview
|
||||
|
||||
```
|
||||
Minggu 1 │ Sprint 0 ─ Sprint 1 ─ │──── Foundation
|
||||
Minggu 2 │ Sprint 2 ─────────────│──── Core (Terminal)
|
||||
Minggu 3 │ Sprint 3 ─────────────│──── SFTP + Polish
|
||||
Minggu 4 │ Sprint 4 ─────────────│──── Advanced
|
||||
Minggu 5 │ Sprint 5 ── Buffer ───│──── Polish + Release
|
||||
Minggu 1 │ Sprint 0 ─ Sprint 1 ─ │── Foundation + Dashboard
|
||||
Minggu 2 │ Sprint 2 ─ Sprint 3 ─ │── Snippets + Keychain + Settings
|
||||
Minggu 3 │ Sprint 4 ─────────────│── SFTP
|
||||
Minggu 4 │ Sprint 5 ─ Sprint 6 ─ │── Terminal + Storage Integration
|
||||
└────────────────────────┘
|
||||
26 Jun 10 Jul 24 Jul 7 Aug
|
||||
7 Jul 14 Jul 21 Jul 28 Jul
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. Detailed Timeline
|
||||
## Detailed Timeline
|
||||
|
||||
### Phase 0: Foundation (Sprint 0 + Sprint 1)
|
||||
**6 working days — 30 Jun s.d. 7 Jul**
|
||||
### Sprint 0 + Sprint 1 — Foundation + Dashboard
|
||||
**5 hari — 7 Jul s.d. 11 Jul**
|
||||
|
||||
| Day | Date | Sprint | Deliverable | Milestone |
|
||||
|-----|------|--------|-------------|-----------|
|
||||
| 1 | 30 Jun | Sprint 0 | Go module, Electron shell, Vite scaffold | App starts, shows "Hostkeeper V2" |
|
||||
| 2 | 1 Jul | Sprint 0 | Health endpoint, middleware, build script | `curl /api/health` returns OK |
|
||||
| 3 | 2 Jul | Sprint 1 | Host CRUD API (6 endpoints) | `curl POST /api/hosts` returns 201 |
|
||||
| 4 | 3 Jul | Sprint 1 | Key + Snippet CRUD API | All CRUD works via curl |
|
||||
| 5 | 4 Jul | Sprint 1 | Groups + Config + Vault API | Group tree returned |
|
||||
| 6 | 7 Jul | Sprint 1 | Web UI scaffold (layout, router, theme) | Navigation works, sidebar visible |
|
||||
| Day | Date | Deliverable |
|
||||
|-----|------|-------------|
|
||||
| 1 | 7 Jul | Go module, Fiber server, static files, HTMX + Alpine |
|
||||
| 2 | 8 Jul | Layout template, nav sidebar, health endpoint |
|
||||
| 3 | 9 Jul | Host model, dashboard handler, host list template |
|
||||
| 4 | 10 Jul | Search HTMX, filter, view toggle, add host modal |
|
||||
| 5 | 11 Jul | Background transfers, toast notification, CSS final |
|
||||
|
||||
**Milestone M1 — API Complete (7 Jul)**
|
||||
- All REST API endpoints functional
|
||||
- Storage integration with V1 `pkg/storage`
|
||||
- Web UI layout renders
|
||||
**Milestone M1 — Dashboard Functional (11 Jul)**
|
||||
- GoFiber server running on :1947
|
||||
- Layout dengan sidebar navigasi
|
||||
- Dashboard dengan host list, search, filter, add host
|
||||
- HTMX interaktivitas berfungsi
|
||||
|
||||
---
|
||||
### Sprint 2 — Snippets + Keychain
|
||||
**3 hari — 14 Jul s.d. 16 Jul**
|
||||
|
||||
### Phase 1: Core Features (Sprint 2)
|
||||
**5 working days — 8 Jul s.d. 14 Jul**
|
||||
| Day | Date | Deliverable |
|
||||
|-----|------|-------------|
|
||||
| 6 | 14 Jul | Snippet model + handler + template + search/filter |
|
||||
| 7 | 15 Jul | Add snippet modal, clipboard JS, tag filter |
|
||||
| 8 | 16 Jul | Keychain model + handler + template + passphrase reveal |
|
||||
|
||||
| Day | Date | Deliverable | Milestone |
|
||||
|-----|------|-------------|-----------|
|
||||
| 7 | 8 Jul | Host List screen + HostForm UI | Add/edit host from browser |
|
||||
| 8 | 9 Jul | HostForm: auth, tags, group picker | All form fields work |
|
||||
| 9 | 10 Jul | WebSocket handler (Go) | Terminal WS connects |
|
||||
| 10 | 11 Jul | XTermWrapper + terminal UI | Terminal renders, keystrokes work |
|
||||
| 11 | 14 Jul | TabBar + multi-tab + snippet panel | Multi-tab terminal with snippets |
|
||||
**Milestone M2 — Snippets + Keys CRUD (16 Jul)**
|
||||
- Snippet library dengan search, tag filter, add modal
|
||||
- Keychain dengan strength badge, passphrase reveal, copy
|
||||
|
||||
**Milestone M2 — Terminal Works (14 Jul)**
|
||||
- SSH terminal via WebSocket
|
||||
### Sprint 3 — Settings + Brief
|
||||
**2 hari — 17 Jul s.d. 18 Jul**
|
||||
|
||||
| Day | Date | Deliverable |
|
||||
|-----|------|-------------|
|
||||
| 9 | 17 Jul | Settings handler + template + toggle switches |
|
||||
| 10 | 18 Jul | Brief overlay, connected devices, danger zone |
|
||||
|
||||
**Milestone M3 — Settings Complete (18 Jul)**
|
||||
- Profile form, toggle switches, connected devices
|
||||
- Brief design system overlay
|
||||
|
||||
### Sprint 4 — SFTP
|
||||
**4 hari — 21 Jul s.d. 24 Jul**
|
||||
|
||||
| Day | Date | Deliverable |
|
||||
|-----|------|-------------|
|
||||
| 11 | 21 Jul | FileItem + Transfer model, SFTP handler |
|
||||
| 12 | 22 Jul | Dual-pane layout, breadcrumb navigation |
|
||||
| 13 | 23 Jul | Folder create/delete, upload/download |
|
||||
| 14 | 24 Jul | Search pane, toast notification, polish |
|
||||
|
||||
**Milestone M4 — SFTP Works (24 Jul)**
|
||||
- Dual-pane file browser dengan navigasi folder
|
||||
- Upload/download, create/delete folder
|
||||
|
||||
### Sprint 5 — Terminal
|
||||
**3 hari — 25 Jul s.d. 28 Jul**
|
||||
|
||||
| Day | Date | Deliverable |
|
||||
|-----|------|-------------|
|
||||
| 15 | 25 Jul | xterm.js setup, WebSocket handler |
|
||||
| 16 | 26 Jul | SSH pipe via v1/pkg/ssh, terminal I/O |
|
||||
| 17 | 28 Jul | Multi-tab Alpine, polish, error handling |
|
||||
|
||||
**Milestone M5 — Terminal Works (28 Jul)**
|
||||
- SSH terminal via WebSocket + xterm.js
|
||||
- Multi-tab support
|
||||
- Snippet injection
|
||||
|
||||
### Sprint 6 — Storage Integration + Polish
|
||||
**3 hari — 29 Jul s.d. 31 Jul**
|
||||
|
||||
| Day | Date | Deliverable |
|
||||
|-----|------|-------------|
|
||||
| 18 | 29 Jul | replace directive, v1/pkg/storage integration |
|
||||
| 19 | 30 Jul | v1/pkg/crypto, config, knownhosts integration |
|
||||
| 20 | 31 Jul | Remove mock data, final testing, bug fixes |
|
||||
|
||||
**Milestone MVP — Hostkeeper V2 Ready (31 Jul)**
|
||||
- All features functional with real data persistence
|
||||
- Single Go binary, ready for Electron wrapping
|
||||
|
||||
---
|
||||
|
||||
### Phase 2: SFTP + Security (Sprint 3)
|
||||
**5 working days — 15 Jul s.d. 21 Jul**
|
||||
## Key Milestones
|
||||
|
||||
| Day | Date | Deliverable | Milestone |
|
||||
|-----|------|-------------|-----------|
|
||||
| 12 | 15 Jul | SFTP REST handlers (ls, upload, download) | SFTP API works via curl |
|
||||
| 13 | 16 Jul | SFTP: mkdir, rm, rename, chmod | File operations work |
|
||||
| 14 | 17 Jul | SFTPScreen + dual pane UI | SFTP browser functional |
|
||||
| 15 | 18 Jul | Vault unlock + known hosts dialog | Security flow works |
|
||||
| 16 | 21 Jul | Settings screen (all tabs) | Settings persist |
|
||||
|
||||
**Milestone M3 — SFTP + Vault (21 Jul)**
|
||||
- SFTP file browser with upload/download
|
||||
- Vault lock/unlock flow
|
||||
- Settings customization
|
||||
| Milestone | Date | Deliverable |
|
||||
|-----------|------|-------------|
|
||||
| M1 | 11 Jul | Dashboard + search/filter + add host |
|
||||
| M2 | 16 Jul | Snippets + Keychain CRUD |
|
||||
| M3 | 18 Jul | Settings + Brief overlay |
|
||||
| M4 | 24 Jul | SFTP dual-pane file browser |
|
||||
| M5 | 28 Jul | Terminal SSH via WebSocket |
|
||||
| MVP | 31 Jul | Full integration with real storage |
|
||||
|
||||
---
|
||||
|
||||
### Phase 3: Advanced Features (Sprint 4)
|
||||
**5 working days — 22 Jul s.d. 28 Jul**
|
||||
## Estimasi vs React (dulu)
|
||||
|
||||
| Day | Date | Deliverable | Milestone |
|
||||
|-----|------|-------------|-----------|
|
||||
| 17 | 22 Jul | PortForward CRUD + local tunnel | Local port forward works |
|
||||
| 18 | 23 Jul | Remote + dynamic forwarding | All forward types work |
|
||||
| 19 | 24 Jul | Import: SSH config + CSV parser | Bulk import works |
|
||||
| 20 | 25 Jul | Export: all data encrypted | Export/import round-trip |
|
||||
| 21 | 28 Jul | Jump host + proxy support | Multi-hop SSH works |
|
||||
|
||||
**Milestone M4 — Advanced Complete (28 Jul)**
|
||||
- Port forwarding (local/remote/dynamic)
|
||||
- Import/export
|
||||
- Jump hosts + proxy
|
||||
|
||||
---
|
||||
|
||||
### Phase 4: Polish & Release (Sprint 5)
|
||||
**5 working days — 29 Jul s.d. 4 Aug**
|
||||
|
||||
| Day | Date | Deliverable | Milestone |
|
||||
|-----|------|-------------|-----------|
|
||||
| 22 | 29 Jul | Electron: menu, tray, shortcuts | Desktop polish complete |
|
||||
| 23 | 30 Jul | OS Keychain + auto-update | Keychain integration |
|
||||
| 24 | 31 Jul | Performance optimization | 1000 hosts smooth, memory < 200MB |
|
||||
| 25 | 1 Aug | Android gomobile + WebView | Android app runs |
|
||||
| 26 | 4 Aug | iOS gomobile + WKWebView | iOS app runs |
|
||||
|
||||
**Milestone M5 — Release Candidate (4 Aug)**
|
||||
- All features complete
|
||||
- Desktop and mobile builds
|
||||
- Performance targets met
|
||||
|
||||
---
|
||||
|
||||
### Buffer: 3 days (5 Aug s.d. 7 Aug)
|
||||
|
||||
| Day | Date | Activity |
|
||||
|-----|------|----------|
|
||||
| 27 | 5 Aug | Bug fixes from integration testing |
|
||||
| 28 | 6 Aug | Documentation finalization |
|
||||
| 29 | 7 Aug | Release v2.0.0 |
|
||||
|
||||
**Milestone M6 — v2.0.0 Release (7 Aug)**
|
||||
- All platforms built and signed
|
||||
- Release notes complete
|
||||
- Artifacts uploaded to GitHub
|
||||
|
||||
---
|
||||
|
||||
## 3. Critical Path
|
||||
|
||||
```
|
||||
Sprint 0 ── Sprint 1 ── Sprint 2 ── Sprint 5 ── Release
|
||||
1 day 5 days 5 days 5 days 3 days
|
||||
─────────────────────────────────────────────────────────
|
||||
19 days minimum (no parallel work)
|
||||
```
|
||||
|
||||
### Parallel Work Opportunities
|
||||
|
||||
| Sprint | Can run in parallel with | Notes |
|
||||
|--------|-------------------------|-------|
|
||||
| Sprint 1 | — | Must complete before Sprint 2 |
|
||||
| Sprint 2 | — | Must complete before Sprint 3/4/5 |
|
||||
| Sprint 3 | Sprint 4 | SFTP ≠ Port forwarding, different files |
|
||||
| Sprint 4 | Sprint 3 | Independent features |
|
||||
| Sprint 5 | Sprint 3, Sprint 4 | Desktop polish can start early |
|
||||
|
||||
**Optimistic timeline** (with parallelism): 22 days
|
||||
**Conservative timeline** (sequential): 29 days
|
||||
|
||||
---
|
||||
|
||||
## 4. Dependency Graph
|
||||
|
||||
```
|
||||
Sprint 0 (Scaffolding)
|
||||
│
|
||||
▼
|
||||
Sprint 1 (Foundation API)
|
||||
│
|
||||
▼
|
||||
Sprint 2 (SSH Terminal) ⭐ CRITICAL PATH
|
||||
│
|
||||
├────▶ Sprint 3 (SFTP + Security) ────▶ Sprint 5 (Desktop Polish)
|
||||
│ │
|
||||
└────▶ Sprint 4 (Advanced) ────────────┘
|
||||
│
|
||||
▼
|
||||
Release v2.0.0
|
||||
```
|
||||
|
||||
**Critical path**: Sprint 0 → Sprint 1 → Sprint 2 → Sprint 5 → Release
|
||||
|
||||
**Fastest possible**: 22 hari (Sprint 3 + 4 done in parallel with Sprint 5)
|
||||
|
||||
---
|
||||
|
||||
## 5. Milestone Summary
|
||||
|
||||
| Milestone | Date | Deliverable | Dependency |
|
||||
|-----------|------|-------------|------------|
|
||||
| **M1** | 7 Jul | All REST API endpoints + Web UI scaffold | Sprint 0 + Sprint 1 |
|
||||
| **M2** | 14 Jul | SSH terminal with multi-tab | M1 |
|
||||
| **M3** | 21 Jul | SFTP browser + vault + settings | M2 |
|
||||
| **M4** | 28 Jul | Port forwarding + import/export + jump hosts | M2 |
|
||||
| **M5** | 4 Aug | Desktop polish + mobile apps | M2, M3, M4 |
|
||||
| **M6** | 7 Aug | **v2.0.0 Release** | M5 |
|
||||
|
||||
---
|
||||
|
||||
## 6. Weekly Breakdown
|
||||
|
||||
### Week 1 (30 Jun - 4 Jul) — Foundation
|
||||
```
|
||||
Mon 30: [Sprint 0] Go scaffold + Electron shell
|
||||
Tue 1: [Sprint 0] Build script + middleware
|
||||
Wed 2: [Sprint 1] Host CRUD API
|
||||
Thu 3: [Sprint 1] Key + Snippet CRUD API
|
||||
Fri 4: [Sprint 1] Groups + Config + Vault API
|
||||
```
|
||||
|
||||
### Week 2 (7 Jul - 11 Jul) — API + UI Scaffold
|
||||
```
|
||||
Mon 7: [Sprint 1] Web UI scaffold (layout, router, theme) ← M1
|
||||
Tue 8: [Sprint 2] Host List screen + HostForm
|
||||
Wed 9: [Sprint 2] HostForm complete (auth, tags, groups)
|
||||
Thu 10: [Sprint 2] WebSocket handler (Go)
|
||||
Fri 11: [Sprint 2] XTermWrapper + terminal rendering
|
||||
```
|
||||
|
||||
### Week 3 (14 Jul - 18 Jul) — Terminal + SFTP
|
||||
```
|
||||
Mon 14: [Sprint 2] TabBar + multi-tab + snippet panel ← M2
|
||||
Tue 15: [Sprint 3] SFTP REST handlers
|
||||
Wed 16: [Sprint 3] File operations (mkdir, rm, rename)
|
||||
Thu 17: [Sprint 3] SFTPScreen + dual pane UI
|
||||
Fri 18: [Sprint 3] Vault unlock + known hosts dialog
|
||||
```
|
||||
|
||||
### Week 4 (21 Jul - 25 Jul) — SFTP Settings + Advanced
|
||||
```
|
||||
Mon 21: [Sprint 3] Settings screen (all tabs) ← M3
|
||||
Tue 22: [Sprint 4] PortForward CRUD + local tunnel
|
||||
Wed 23: [Sprint 4] Remote + dynamic forwarding
|
||||
Thu 24: [Sprint 4] Import (SSH config, CSV)
|
||||
Fri 25: [Sprint 4] Export + jump hosts
|
||||
```
|
||||
|
||||
### Week 5 (28 Jul - 1 Aug) — Advanced + Polish
|
||||
```
|
||||
Mon 28: [Sprint 4] Proxy support ← M4
|
||||
Tue 29: [Sprint 5] Electron: menu, tray, shortcuts
|
||||
Wed 30: [Sprint 5] OS Keychain + auto-update
|
||||
Thu 31: [Sprint 5] Performance optimization
|
||||
Fri 1: [Sprint 5] Android gomobile + WebView
|
||||
```
|
||||
|
||||
### Week 6 (4 Aug - 7 Aug) — Mobile + Release
|
||||
```
|
||||
Mon 4: [Sprint 5] iOS gomobile + WKWebView ← M5
|
||||
Tue 5: [Buffer] Bug fixes
|
||||
Wed 6: [Buffer] Documentation
|
||||
Thu 7: [Release] v2.0.0 ← M6
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. Risk Buffer
|
||||
|
||||
| Risk | Impact | Probability | Mitigation | Buffer needed |
|
||||
|------|--------|-------------|------------|---------------|
|
||||
| Terminal WebSocket complexity | High | Medium | Use proven pattern from docs | +1 day |
|
||||
| Mobile gomobile compilation | Medium | Medium | Start early, test on emulator | +1 day |
|
||||
| Electron auto-update signing | Medium | Low | Prepare certificates early | — |
|
||||
| Performance issues (1000 hosts) | Medium | Low | Virtual scrolling already planned | — |
|
||||
| Unknown V1 package compatibility | Low | Low | V1 packages are framework-agnostic | — |
|
||||
| UX polish takes longer | Medium | Medium | Prioritize function over beauty | +1 day |
|
||||
|
||||
**Total buffer**: 3 days (included in timeline as 5-7 Aug)
|
||||
|
||||
---
|
||||
|
||||
## 8. Effort by Technology
|
||||
|
||||
| Technology | Days | % of total | Sprint |
|
||||
|------------|------|------------|--------|
|
||||
| Go (backend) | 10 | 34% | S0, S1, S2, S3, S4 |
|
||||
| React/TypeScript (frontend) | 10 | 34% | S1, S2, S3, S4, S5 |
|
||||
| Electron (desktop) | 3 | 10% | S0, S5 |
|
||||
| Mobile (gomobile + WebView) | 2 | 7% | S3, S5 |
|
||||
| DevOps (build, CI/CD) | 2 | 7% | S0, S5 |
|
||||
| Testing + bug fixes | 2 | 7% | All |
|
||||
| **Total** | **29** | **100%** | |
|
||||
|
||||
---
|
||||
|
||||
## 9. What NOT in Scope (Post-MVP)
|
||||
|
||||
| Feature | Reason |
|
||||
|---------|--------|
|
||||
| Cloud sync | Requires backend server, Phase 3 |
|
||||
| Team vault | Requires multi-user auth, Phase 3 |
|
||||
| Multiplayer terminal | Requires relay server, Phase 3 |
|
||||
| AI command generation | LLM API integration, nice-to-have |
|
||||
| Serial console | Niche use case, low priority |
|
||||
| Mosh support | Requires additional library |
|
||||
| Telnet support | Legacy protocol, low priority |
|
||||
|
||||
---
|
||||
|
||||
## 10. Progress Tracking
|
||||
|
||||
**How to update this timeline**:
|
||||
1. At the end of each day, mark `[x]` for completed tasks
|
||||
2. If a task takes longer, adjust subsequent dates
|
||||
3. Update `docs/PROGRESS.md` with actual completion dates
|
||||
|
||||
```markdown
|
||||
### Week 1 Progress
|
||||
[x] Mon 30 Jun: [Sprint 0] Go scaffold + Electron shell
|
||||
[ ] Tue 1 Jul: [Sprint 0] Build script + middleware
|
||||
[ ] Wed 2 Jul: [Sprint 1] Host CRUD API
|
||||
[ ] Thu 3 Jul: [Sprint 1] Key + Snippet CRUD API
|
||||
[ ] Fri 4 Jul: [Sprint 1] Groups + Config + Vault API
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**Target**: v2.0.0 Release by **7 August 2026**
|
||||
**Best case**: 22 July (parallel work, no blockers)
|
||||
**Worst case**: 14 August (1 week buffer used + delays)
|
||||
| Metrik | React (rencana lama) | HTMX (sekarang) |
|
||||
|--------|---------------------|-----------------|
|
||||
| Total waktu | ~6 minggu (30 Jun - 7 Aug) | ~3.5 minggu (7 Jul - 31 Jul) |
|
||||
| Files | ~50 (Go + React + TS + Vite) | ~38 (Go + HTML + JS) |
|
||||
| JS dependencies | 10+ library + npm | 3 file JS (HTMX, Alpine, xterm) |
|
||||
| Build complexity | Vite + TypeScript + npm + Electron | CSS build + Go build |
|
||||
|
||||
Reference in New Issue
Block a user