5 plans across 5 waves: Wave 0 TDD stubs, utilities + OutputBlock, ReviewStep implementation, App.tsx wiring, human verify checkpoint. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
99 lines
6.5 KiB
Markdown
99 lines
6.5 KiB
Markdown
# Roadmap: Ready2Blob
|
|
|
|
## Overview
|
|
|
|
Ready2Blob is built inside-out: architectural foundation first, then pure generator functions, then wizard UI, then the download and security layer. This order front-loads the highest-risk correctness requirements (PowerShell encoding, SYSTEM-context paths, credential handling) before any user-facing code exists, and keeps all four phases independently verifiable.
|
|
|
|
## Phases
|
|
|
|
**Phase Numbering:**
|
|
- Integer phases (1, 2, 3): Planned milestone work
|
|
- Decimal phases (2.1, 2.2): Urgent insertions (marked with INSERTED)
|
|
|
|
Decimal phases appear between their surrounding integers in numeric order.
|
|
|
|
- [x] **Phase 1: Foundation** - Project scaffold, TypeScript types, Backend Schema Registry, Zod schemas, and wizard state store (completed 2026-03-26)
|
|
- [x] **Phase 2: Generators** - Pure builder functions for rclone.conf and PowerShell deployment scripts, plus download manager (completed 2026-03-26)
|
|
- [x] **Phase 3: Wizard UI** - Multi-step wizard with backend selector, dynamic backend forms, and deployment options (completed 2026-03-27)
|
|
- [ ] **Phase 4: Review, Download & Security** - Live config preview, security warning gate, all download buttons, clipboard copy, and ZIP bundle
|
|
|
|
## Phase Details
|
|
|
|
### Phase 1: Foundation
|
|
**Goal**: The architectural skeleton exists and all downstream phases can build on it without rework
|
|
**Depends on**: Nothing (first phase)
|
|
**Requirements**: None directly — this phase creates the infrastructure that all v1 requirements depend on
|
|
**Success Criteria** (what must be TRUE):
|
|
1. Vite dev server starts and serves a React + TypeScript app with no console errors
|
|
2. The Backend Schema Registry defines at least Azure Blob, S3, and S3-compatible backends with typed field definitions
|
|
3. Zod validation schemas can be derived from the registry and validate correct/incorrect input correctly
|
|
4. The WizardState useReducer store initializes, accepts dispatch actions, and state is accessible via Context
|
|
**Plans**: 4 plans
|
|
|
|
Plans:
|
|
- [x] 01-01-PLAN.md — Scaffold Vite 6 + React 18 + TypeScript 5, install all Phase 1 deps, configure Tailwind v4, set up Vitest
|
|
- [ ] 01-02-PLAN.md — Create Backend Schema Registry (registry.ts) and Wave 0 test stubs for SC-2, SC-3, SC-4
|
|
- [ ] 01-03-PLAN.md — Implement Zod schemas derived from registry (index.ts), all schema tests green
|
|
- [ ] 01-04-PLAN.md — Implement WizardState types, pure reducer, Context provider, and wire into App
|
|
|
|
### Phase 2: Generators
|
|
**Goal**: Given a completed wizard state, the app can produce correct, deployment-ready file content for all output types
|
|
**Depends on**: Phase 1
|
|
**Requirements**: CONF-01, DEPL-01, DEPL-02, DEPL-03, DEPL-04, DEPL-05
|
|
**Success Criteria** (what must be TRUE):
|
|
1. `buildRcloneConf()` produces a valid INI-format rclone.conf string with correct key/value pairs for each supported backend
|
|
2. The Intune install script writes config using UTF-8 no-BOM encoding, places it at the correct path, and never echoes credential values
|
|
3. The Intune detection script exits 0 when both rclone.exe and the config file are present, and non-zero otherwise
|
|
4. The RMM script is self-contained, idempotent, and runs correctly in a generic SYSTEM context
|
|
5. Toggling "include rclone installation" adds a download step to all generated scripts; disabling it removes it
|
|
**Plans**: 4 plans
|
|
|
|
Plans:
|
|
- [ ] 02-01-PLAN.md — Wave 0 test stubs for all four generators + index.ts barrel
|
|
- [ ] 02-02-PLAN.md — Implement buildRcloneConf (CONF-01)
|
|
- [ ] 02-03-PLAN.md — Implement buildIntuneInstall + buildIntuneDetection + ps-helpers (DEPL-01, DEPL-02, DEPL-04, DEPL-05)
|
|
- [ ] 02-04-PLAN.md — Implement buildRmmScript (DEPL-03, DEPL-04, DEPL-05)
|
|
|
|
### Phase 3: Wizard UI
|
|
**Goal**: An IT admin can navigate the full wizard from backend selection through deployment options without losing data
|
|
**Depends on**: Phase 1
|
|
**Requirements**: WIZD-01, WIZD-02, WIZD-03, WIZD-04, BACK-01, BACK-02, BACK-03
|
|
**Success Criteria** (what must be TRUE):
|
|
1. User can select a storage backend from a list where Azure Blob and S3 appear first
|
|
2. User can navigate forward through all wizard steps (backend selection → backend config → deployment options) and back without losing entered values
|
|
3. User can configure an Azure Blob remote by entering a storage account name and choosing SAS token or access key authentication
|
|
4. User can configure an Amazon S3 or S3-compatible remote (access key, secret, region, optional endpoint override)
|
|
5. User can set a custom remote name and the field rejects names with invalid characters
|
|
**Plans**: TBD
|
|
|
|
### Phase 4: Review, Download & Security
|
|
**Goal**: An IT admin can see exactly what will be deployed, acknowledge the security implications, and download any combination of generated files
|
|
**Depends on**: Phases 2, 3
|
|
**Requirements**: CONF-02, CONF-03, DOWN-01, DOWN-02, DOWN-03, DOWN-04, DOWN-05, DOWN-06, SECU-01, SECU-02, SECU-03
|
|
**Success Criteria** (what must be TRUE):
|
|
1. A live preview of the rclone.conf content updates in real time as the user fills in the wizard forms
|
|
2. Before any download is enabled, the user must acknowledge a security warning that credentials are stored in plain text
|
|
3. The app prominently displays that no data is sent to any server, and wizard state is never written to localStorage or sessionStorage
|
|
4. User can download each artifact individually (rclone.conf, Intune install script, Intune detection script, RMM script) or all together as a ZIP bundle
|
|
5. User can copy any output block to clipboard without downloading
|
|
**Plans**: 5 plans
|
|
|
|
Plans:
|
|
- [ ] 04-01-PLAN.md — Wave 0 TDD stubs: ReviewStep.test.tsx (all requirement stubs RED) + SECU-03 assertion in reducer.test.ts
|
|
- [ ] 04-02-PLAN.md — Utilities and OutputBlock: downloadFile.ts, downloadZip.ts (install jszip), OutputBlock.tsx component
|
|
- [ ] 04-03-PLAN.md — Implement ReviewStep.tsx: live preview, security gate, all downloads and clipboard — all stubs turn GREEN
|
|
- [ ] 04-04-PLAN.md — Wire ReviewStep into App.tsx (step 3) and add 'Review' to StepIndicator STEP_LABELS
|
|
- [ ] 04-05-PLAN.md — Human verification: full 4-step wizard end-to-end, all downloads, ZIP, clipboard, SECU-03 DevTools check
|
|
|
|
## Progress
|
|
|
|
**Execution Order:**
|
|
Phases execute in numeric order: 1 → 2 → 3 → 4
|
|
|
|
| Phase | Plans Complete | Status | Completed |
|
|
|-------|----------------|--------|-----------|
|
|
| 1. Foundation | 4/4 | Complete | 2026-03-26 |
|
|
| 2. Generators | 4/4 | Complete | 2026-03-26 |
|
|
| 3. Wizard UI | 5/5 | Complete | 2026-03-27 |
|
|
| 4. Review, Download & Security | 0/5 | Not started | - |
|