Skip to content

Commit 6a7a52f

Browse files
committed
docs: update roadmap with v0.5.0-v0.11.0 plan and current state
1 parent 0f3e29e commit 6a7a52f

1 file changed

Lines changed: 229 additions & 0 deletions

File tree

docs/internal/roadmap.md

Lines changed: 229 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,229 @@
1+
# maild roadmap (internal)
2+
3+
## Goal
4+
5+
Deliver a technically robust BYO-SMTP outbound operations control plane with
6+
strong reliability, safety controls, and operator workflows.
7+
8+
## Version history
9+
10+
### v0.4.0 (April 14, 2026) ✓
11+
Frontend product UX expansion.
12+
13+
Completed:
14+
- [x] Operator dashboard redesign (Warm Brutalist design system)
15+
- [x] Onboarding checklist workflow with domain readiness checks
16+
- [x] Incident management screens with timeline and attempt history
17+
- [x] Landing page, signup/login flow, user dashboard
18+
- [x] Session-based auth layer with Redis session store
19+
20+
## Current state (as of April 14, 2026)
21+
22+
### Open bugs
23+
- [#7](https://github.com/srmdn/maild/issues/7): missing nav link back to dashboard from `/ui` pages
24+
- [#8](https://github.com/srmdn/maild/issues/8): `/ui` pages accessible without authentication
25+
26+
### Product work completed
27+
28+
- [x] Core message pipeline: API -> queue -> worker -> SMTP send.
29+
- [x] Bounded retry and status transitions.
30+
- [x] Suppression and unsubscribe enforcement.
31+
- [x] Domain readiness checks (SPF, DKIM, and DMARC).
32+
- [x] Signed webhook ingest, dead-letter handling, and replay.
33+
- [x] Provider failover (manual and automatic).
34+
- [x] Tenant policy controls.
35+
- [x] Metering, analytics summary, and export.
36+
- [x] Operator console (`/ui/logs`) with logs, timeline, retry, suppression, domain checks.
37+
- [x] Landing page with product value props and signup CTA.
38+
- [x] User auth layer with session-based login.
39+
- [x] User dashboard at `/dashboard`.
40+
41+
### Commercial validation status
42+
43+
- [~] Design partner and paid pilot activities are intentionally deferred.
44+
- [~] Case study publication is deferred until commercial work resumes.
45+
46+
Deferred commercial context (kept for later resume):
47+
- [~] Recruit five design partners.
48+
- [ ] Convert two design partners into paid pilots.
49+
- [ ] Publish one partner case study draft with real metrics.
50+
- [ ] Freeze GA v1 scope with explicit in-scope and out-of-scope list.
51+
52+
## How users use `maild` today (backend-first)
53+
54+
Users do not need a full frontend product to run `maild`.
55+
56+
1. API-first integration from their app/backend.
57+
- App/backend calls `POST /v1/messages`.
58+
- Existing SMTP accounts remain in place.
59+
- `maild` adds policy, retries, logs, and webhook processing.
60+
61+
2. Operator workflows through lightweight UI.
62+
- Operators use `/ui/logs` and `/ui/policy`.
63+
- They inspect status, run retries, apply suppression and unsubscribe rules,
64+
and run domain readiness checks.
65+
66+
3. Operational automation via scripts/CLI.
67+
- Teams call endpoints with `curl`, cron jobs, and runbooks.
68+
- This is enough for technical pilot teams.
69+
70+
---
71+
72+
## Version plan
73+
74+
### v0.5.0: Auth hardening and pilot prep
75+
76+
**Goal**: Fix auth gaps, prepare for design partner onboarding.
77+
78+
Focus areas:
79+
- [ ] Fix [#8](../issues/8): require auth for `/ui/*` pages in all environments
80+
- [ ] Fix [#7](../issues/7): add dashboard nav link in `/ui` pages
81+
- [ ] Add workspace-scoped auth (current user can only access their workspace)
82+
- [ ] Add session expiry and refresh handling
83+
- [ ] Add "remember me" extended session option
84+
85+
Exit criteria: `/ui/*` pages properly protected, session UX smooth.
86+
87+
---
88+
89+
### v0.6.0: Design partner onboarding
90+
91+
**Goal**: Enable five design partners to onboard successfully.
92+
93+
Focus areas:
94+
- [ ] Build design partner onboarding runbook (document in `docs/internal/`)
95+
- [ ] Add onboarding progress tracker in UI
96+
- [ ] Add workspace invitation flow (email invite to workspace)
97+
- [ ] Add first-login onboarding checklist
98+
- [ ] Add API key rotation UX in user dashboard
99+
100+
Exit criteria: Runbook complete, five design partners onboarded.
101+
102+
---
103+
104+
### v0.7.0: Paid pilot conversion
105+
106+
**Goal**: Convert two design partners to paid pilots.
107+
108+
Focus areas:
109+
- [ ] Define success metrics for paid pilots (setup time, delivery rate, incident recovery time)
110+
- [ ] Add usage metrics dashboard per workspace
111+
- [ ] Add billing-ready metering export
112+
- [ ] Add per-workspace SMTP usage tracking
113+
- [ ] Prepare case study template
114+
115+
Exit criteria: Two paid pilots, measurable before/after metrics captured.
116+
117+
---
118+
119+
### v0.8.0: Multi-tenant workspace management
120+
121+
**Goal**: Allow workspace owners to manage team members.
122+
123+
Focus areas:
124+
- [ ] Add workspace member roles (owner, admin, viewer)
125+
- [ ] Add member invite and remove flows
126+
- [ ] Add workspace settings UI (name, domain, limits)
127+
- [ ] Add workspace-level API key management
128+
- [ ] Add audit log for workspace actions
129+
130+
Exit criteria: Workspace owner can manage team without direct database access.
131+
132+
---
133+
134+
### v0.9.0: SMTP credentials per workspace
135+
136+
**Goal**: Replace single global SMTP account with per-workspace credentials.
137+
138+
Focus areas:
139+
- [ ] Add SMTP account CRUD per workspace
140+
- [ ] Add SMTP account activation/deactivation
141+
- [ ] Add credential rotation UX
142+
- [ ] Add SMTP health check endpoint
143+
- [ ] Deprecate global SMTP account config
144+
145+
Exit criteria: Each workspace has its own SMTP credentials, global config removed.
146+
147+
---
148+
149+
### v0.10.0: Webhook event persistence and delivery
150+
151+
**Goal**: Provide webhook history and retry controls for workspace events.
152+
153+
Focus areas:
154+
- [ ] Persist outbound webhook events (not just dead-letter)
155+
- [ ] Add webhook delivery status history per event
156+
- [ ] Add outbound webhook retry UI
157+
- [ ] Add webhook delivery failure alerts
158+
- [ ] Add per-workspace webhook endpoint configuration
159+
160+
Exit criteria: Users can see webhook delivery history and retry failed webhooks.
161+
162+
---
163+
164+
### v0.11.0: GA v1 scope freeze
165+
166+
**Goal**: Lock GA v1 feature set and declare completeness.
167+
168+
Focus areas:
169+
- [ ] Finalize in-scope / out-of-scope list
170+
- [ ] Add migration guide for v0.x to v1.0 upgrade
171+
- [ ] Add deprecation notices for any v0.x-only features
172+
- [ ] Complete architecture documentation sync
173+
- [ ] Publish case study from pilot data
174+
175+
Exit criteria: GA v1 scope documented, migration path clear, case study drafted.
176+
177+
---
178+
179+
## Deferred tracks (resumed after v0.7.0)
180+
181+
### Track D: pilot acquisition and onboarding
182+
183+
- [ ] Build a list of 20 candidate teams (founders, agencies, and SaaS).
184+
- [ ] Run outreach and secure five onboarding calls.
185+
- [ ] Onboard first three design partners with the onboarding runbook.
186+
- [ ] Define partner success metrics before traffic starts.
187+
188+
### Track E: paid conversion and proof
189+
190+
- [ ] Convert at least two onboarded partners to paid pilots.
191+
- [ ] Capture before/after metrics for one partner:
192+
- setup time,
193+
- unknown delivery state rate,
194+
- incident recovery time, and
195+
- weekly manual ops effort.
196+
- [ ] Publish one case study draft from real pilot data.
197+
198+
---
199+
200+
## GA v1 scope draft (working)
201+
202+
### In scope
203+
204+
- BYO-SMTP setup and validation.
205+
- Transactional message pipeline and retries.
206+
- Suppression and unsubscribe guardrails.
207+
- Domain readiness checks.
208+
- Webhook ingest, dead-letter handling, and replay.
209+
- Operator console for core operations.
210+
- Multi-tenant workspace management.
211+
- SMTP credentials per workspace.
212+
- Webhook event persistence and delivery.
213+
214+
### Out of scope
215+
216+
- campaign builder,
217+
- inbox and reply management,
218+
- IMAP, POP, and JMAP features,
219+
- multi-region active-active deployment, and
220+
- AI content generation.
221+
222+
---
223+
224+
## Exit criteria for this roadmap cycle
225+
226+
- Technical backlog items for console, reliability tests, and runbooks are
227+
completed or explicitly deferred.
228+
- No unresolved critical reliability gaps in retry/replay/failover flows.
229+
- Root docs stay aligned with shipped behavior.

0 commit comments

Comments
 (0)