# Hostkeeper V2 — Timeline & Milestones > **Status**: V2 Planning Complete > **Last Updated**: 2026-06-29 > **Start Date**: 2026-06-30 (estimated) > **Target MVP**: 2026-08-07 (estimated) --- ## 1. Timeline Overview Total estimated: **25-30 working days** (~6 minggu calendar, 1-2 minggu buffer) ``` 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 └────────────────────────┘ 26 Jun 10 Jul 24 Jul 7 Aug ``` --- ## 2. Detailed Timeline ### Phase 0: Foundation (Sprint 0 + Sprint 1) **6 working days — 30 Jun s.d. 7 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 | **Milestone M1 — API Complete (7 Jul)** - All REST API endpoints functional - Storage integration with V1 `pkg/storage` - Web UI layout renders --- ### Phase 1: Core Features (Sprint 2) **5 working days — 8 Jul s.d. 14 Jul** | 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 — Terminal Works (14 Jul)** - SSH terminal via WebSocket - Multi-tab support - Snippet injection --- ### Phase 2: SFTP + Security (Sprint 3) **5 working days — 15 Jul s.d. 21 Jul** | 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 --- ### Phase 3: Advanced Features (Sprint 4) **5 working days — 22 Jul s.d. 28 Jul** | 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/v2/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)