Files
Inboxintel/docs/specs/build-plan.md
T
cesnimda be6cbf90d7 docs: full specs for automation engine, sender policy, activity log, privacy monitor, UI overhaul
Clean.Email-parity feature build-out plus a Stripe/Notion-style UI rebuild on
Tailwind + shadcn-style primitives. Locks the hybrid-automation, Gmail-only,
light+dark, incremental-rollout decisions and lays out the backend/frontend
build sequence.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-30 23:04:52 +02:00

3.8 KiB
Raw Blame History

Build Plan — sequencing & commits

Two tracks run in parallel and rarely touch the same files: Backend (automation) and Frontend (UI overhaul). Backend can progress regardless of palette sign-off; the new feature pages wait for the design system (Increment F1).

Each step ends with a build (dotnet build and/or npm run build) and a commit, per the established pattern.

Backend track (B)

Step Deliverable Key files Migration
B1 Automation core domain + engine skeleton enums, AutomationRule, AutomationAction, SenderPolicy, Email.IsPinned, MailThread.IsMuted, User.Screener* AddAutomationCore
B2 EnsureLabelAsync on Gmail service + label cache IGmailService, GmailApiService
B3 AutomationEngine.RunAsync (matching, safe-apply, propose) + Matches() unit tests AutomationEngine, RuleMatcher
B4 IRuleService + AutomationController (rules CRUD + preview) service, controller, AutomationDtos
B5 Approval queue + activity + undo (IAutomationActionService) service, controller endpoints
B6 ISenderPolicyService + Screener + policy controller service, controller
B7 AutomationWorker + hook engine into incremental sync; AutomationOptions; DI wiring worker, SyncService, DependencyInjection, Options, appsettings
B8 Activity Summaries + Cleanup Reminders into DigestService DigestService
B9 Privacy Monitor (provider, service, controller, options, Null provider) Privacy/*, DI, appsettings AddPrivacyFields

Commit boundaries roughly per step (B1B2 may bundle; B3 stands alone with tests).

Frontend track (F)

Step Deliverable Notes
F0 Tailwind + PostCSS + Radix + cva/lucide installed; index.css tokens; darkMode:class; ThemeToggle; build green no page swaps yet
F1 components/ui/* primitive set button/card/input/dialog/sheet/dropdown/tabs/tooltip/toast/table/badge/switch/skeleton
F2 App shell (Layout) on new system + theme toggle in topbar biggest visual win
F3 Dashboard theme chart.js colors via tokens
F4 Senders (+ policy dropdown, wired to B6)
F5 Unsubscribe (confidence meter)
F6 Search / Folders / Cleanup
F7 New pages: Rules editor, Review queue, Screener, Activity, Read-Later, Privacy depends on B4B9
F8 Landing polish; delete styles.css

Suggested interleave

B1+B2 ─▶ B3 ─▶ B4 ─▶ B5 ─▶ B6 ─▶ B7 ─▶ B8 ─▶ B9
F0 ─▶ F1 ─▶ F2 ─▶ F3 ─▶ F4 ─▶ F5 ─▶ F6 ─▶ F7(needs B4B9) ─▶ F8

Practical order to actually build in: F0 → F1 → F2 (get the app looking modern fast and de-risk the stack), then B1→B3 (the engine core), then alternate feature-by-feature (B4+F7-rules, B5+F7-review, B6+F7-screener, …), finishing with B8/B9

  • their pages, then F3F6 restyles and F8 cleanup.

Definition of done (per feature)

  • Backend builds (0 errors), unit/integration tests for engine logic pass.
  • Frontend builds; page works in light and dark.
  • Every new endpoint scoped to UserId; destructive paths go through approval.
  • Spec checklist items ticked.
  • Committed (push remains blocked by the known git.cesnimda.uk credential issue — local only).

Open items to confirm before/while building

  1. Accent color sign-off (indigo proposed; alternatives listed in ui-overhaul.md).
  2. Whether Activity Summaries need a separate toggle from the analytics digest (default: fold in).
  3. First-match-wins vs all-matching-rules for rule evaluation (default: first-match-wins by priority).