chore: archive v0.2 milestone files
Archive v0.2 (UI Overhaul and Optimization) to milestones/: - milestones/v0.2-ROADMAP.md — full phase archive (Phases 8–11, 33 plans) - milestones/v0.2-REQUIREMENTS.md — all 40 requirements marked complete - milestones/v0.2-MILESTONE-AUDIT.md — audit artifact (passed, 40/40) - MILESTONES.md — new living milestone index - RETROSPECTIVE.md — new living retrospective with v0.2 section - PROJECT.md — full evolution review: v0.2 requirements moved to Validated, 5 new Key Decisions added - STATE.md — updated to milestone-complete status - ROADMAP.md — v0.2 phases collapsed into <details> with progress table updated Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
2280b6f987
commit
475e519158
+33
-15
@@ -8,17 +8,11 @@ DocuVault is a self-hosted, multi-user SaaS document management platform. Users
|
||||
|
||||
Every user's documents — and the credentials they use to store them — are inaccessible to everyone except that user, while the platform scales horizontally and supports pluggable storage backends.
|
||||
|
||||
## Current Milestone: v0.2 — UI Overhaul and Optimization
|
||||
## Last Milestone: v0.2 — UI Overhaul and Optimization (shipped 2026-06-17)
|
||||
|
||||
**Goal:** Redesign the frontend into a polished, performant, and responsive interface, and overhaul both the backend and frontend codebase to senior-dev quality — minimal, DRY, readable code with no unnecessary comments.
|
||||
**Delivered:** Polished, production-quality frontend with mobile-responsive layout, full UX interaction layer, decomposed backend/frontend codebase, and standalone admin panel.
|
||||
|
||||
**Target features:**
|
||||
- Visual redesign — refined Tailwind component system, consistent palette, typography, spacing
|
||||
- UX & interaction improvements — drag-and-drop upload, keyboard shortcuts, empty states, loading skeletons
|
||||
- Frontend performance — lazy loading, virtual scrolling, bundle size reduction, API response caching
|
||||
- Responsive / mobile layout — adaptive layouts for phones/tablets, touch-friendly controls
|
||||
- Proper admin panel — standalone admin interface with its own routes, layout, and nav (not tabs bolted onto the user app)
|
||||
- Codebase quality overhaul — eliminate duplication, extract shared utilities, delete dead code, flatten unnecessary abstractions; comments only where code alone is insufficient
|
||||
See `.planning/MILESTONES.md` and `.planning/milestones/v0.2-ROADMAP.md` for full archive.
|
||||
|
||||
## Requirements
|
||||
|
||||
@@ -49,9 +43,29 @@ Every user's documents — and the credentials they use to store them — are in
|
||||
- ✓ Celery retry backoff (30 s / 90 s / 270 s) on classification failure
|
||||
- ✓ Backend stateless — all state in PostgreSQL and MinIO
|
||||
|
||||
### Active (v0.2 — this milestone)
|
||||
### Validated (v0.2 — shipped 2026-06-17)
|
||||
|
||||
*Defined in REQUIREMENTS.md*
|
||||
- ✓ Backend monolith decomposition (api/admin/, api/documents/, api/auth/ sub-packages) — v0.2
|
||||
- ✓ Frontend API client decomposition (7 domain modules + barrel re-export) — v0.2
|
||||
- ✓ Admin panel standalone route subtree (/admin/*) with AdminLayout, AdminSidebar, 5 deep-linkable views — v0.2
|
||||
- ✓ requiresAdmin guard via to.matched.some() — v0.2
|
||||
- ✓ Admin overview aggregate endpoint (user count, storage, doc status, recent audit) — v0.2
|
||||
- ✓ EmptyState.vue in all zero-content contexts — v0.2
|
||||
- ✓ Skeleton loaders for all async-populated tables/lists/sidebars — v0.2
|
||||
- ✓ Keyboard shortcuts: / (search), U (upload), N (new folder), Escape (close/clear) — v0.2
|
||||
- ✓ OS drag-drop overlay (full-screen, file-type discriminated) — v0.2
|
||||
- ✓ Toast notification system (auto-dismiss, stacking, non-blocking) — v0.2
|
||||
- ✓ BreadcrumbBar.vue shared across all views — v0.2
|
||||
- ✓ Drag-to-move document to folder with Teleport-based dropdowns — v0.2
|
||||
- ✓ AppIcon.vue centralizing all SVG path data (66 instances) — v0.2
|
||||
- ✓ Mobile-responsive layout: hamburger sidebar drawer (below lg), touch targets ≥36px — v0.2
|
||||
- ✓ @tailwindcss/forms cross-browser form baseline — v0.2
|
||||
- ✓ Consistent Tailwind-only spacing/typography/focus-visible/hover states — v0.2
|
||||
- ✓ Bundle −81 kB (−30.6%) via lazy-loaded admin routes — v0.2
|
||||
- ✓ Dead code deleted (FolderRow.vue, AccountView.vue, stale test files) — v0.2
|
||||
- ✓ WHY-only comment policy enforced (CODE-09) — v0.2
|
||||
|
||||
### Active (next milestone — not yet defined)
|
||||
|
||||
### Out of Scope
|
||||
|
||||
@@ -65,10 +79,10 @@ Every user's documents — and the credentials they use to store them — are in
|
||||
|
||||
## Context
|
||||
|
||||
- **Current state**: v0.2 in progress — Phase 10 complete (2026-06-16). UX & Interaction layer ships: empty states, loading skeletons, keyboard shortcuts (/, U, N, Escape), OS drag-drop upload, toast notifications, BreadcrumbBar, AppIcon registry, drag-to-move, Teleport dropdowns. All 6 UAT gaps closed (plan 10-13): sidebar shimmer, search-at-root visibility, admin sidebar isolation, keyboard dispatch via matched.find(), Escape modifier, OS drop capture phase. 219 tests pass. Phase 11 (Visual Design, Responsive Layout & Cleanup) up next.
|
||||
- **Current state**: v0.2 shipped 2026-06-17. All 4 v0.2 phases complete: stack upgrade + decomposition (Phase 8), admin panel rearchitecture (Phase 9), UX interaction layer (Phase 10), visual design + responsive layout (Phase 11). 277 tests pass. Bundle −81 kB from baseline. App is mobile-responsive, keyboard-navigable, and fully polished. Ready for next milestone definition.
|
||||
- **Tech stack**: FastAPI 0.136+ (Python 3.12), SQLAlchemy 2.0 async, Alembic, MinIO SDK; Vue 3 (Options API), Pinia, Vue Router 4, Vite, Tailwind CSS.
|
||||
- **Code quality**: v0.1 was built feature-first under time pressure. Both backend and frontend contain duplication, inconsistent patterns, and components that grew beyond their original scope. v0.2 addresses this systematically.
|
||||
- **Admin panel**: Now a standalone /admin/* route subtree with AdminLayout as the route component, AdminSidebar with 5 nav links, and 5 dedicated view components. Old AdminView.vue and tab components deleted. Admin users are redirected to /admin on login; non-admin users are blocked from /admin/* by a correct to.matched.some() guard.
|
||||
- **Admin panel**: Standalone /admin/* route subtree with AdminLayout as the route component, AdminSidebar with 5 nav links, and 5 dedicated view components. AdminView.vue and legacy tab components deleted. Admin users redirect to /admin on login; non-admin blocked by to.matched.some() guard.
|
||||
- **Privacy constraint**: Admin role is a platform operator, not a content viewer. Cloud credentials encrypted with per-user HKDF key; API keys encrypted with separate HKDF domain. Neither is ever in an API response.
|
||||
|
||||
## Constraints
|
||||
@@ -101,7 +115,11 @@ Every user's documents — and the credentials they use to store them — are in
|
||||
| Vite 6 upgrade | Resolved two moderate CVEs (CVE-2026-39363/39364) present in Vite 5; build time unchanged | Shipped Phase 8 (PERF-01) |
|
||||
| Admin login redirect (D-08) | Role check fires before router.push — admin → /admin, regular user → /; D-09 guard as belt-and-suspenders | Shipped Phase 9 |
|
||||
| Tailwind safelist with regex patterns | Dynamic color classes (sky=OneDrive, amber=admin audit badges) are tree-shaken without explicit safelist | Regex patterns cover all provider and event-type color families in tailwind.config.js |
|
||||
| GET /api/admin/overview as dedicated endpoint | Aggregated stats (user count, storage, doc status, recent audit) served in one request to avoid N+1 on admin load | Shipped Phase 9 (09-01) |
|
||||
| GET /api/admin/overview as dedicated endpoint | Aggregated stats (user count, storage, doc status, recent audit) served in one request to avoid N+1 on admin load | ✓ Shipped Phase 9 (09-01) |
|
||||
| AppIcon.vue SVG registry | 66 duplicate inline SVG blocks eliminated; single source of truth for all icon paths | ✓ Shipped Phase 10 (CODE-05) |
|
||||
| Teleport + getBoundingClientRect for dropdowns | Viewport-edge clipping eliminated without complex position logic; prerequisite for virtual scrolling | ✓ Shipped Phase 10 (UX-13) |
|
||||
| Admin routes lazy-loaded | All 5 admin views excluded from initial bundle; −81 kB (−30.6%) improvement | ✓ Shipped Phase 11 (PERF-03) |
|
||||
| Vite 8 upgrade for npm audit | Closed high-severity esbuild CVE present in Vite 5/6; npm audit now clean | ✓ Shipped Phase 11 (11-07) |
|
||||
|
||||
## Evolution
|
||||
|
||||
@@ -123,4 +141,4 @@ Last updated: 2026-06-16
|
||||
4. Update Context with current state
|
||||
|
||||
---
|
||||
*Last updated: 2026-06-13 — after Phase 9*
|
||||
*Last updated: 2026-06-17 — after v0.2 milestone*
|
||||
|
||||
Reference in New Issue
Block a user