Phase 13: Admin Dashboard - Readiness Criteria¶
Freeze Checklist¶
Phase 13 is ready to freeze when all items below are complete:
1. Core Features Implemented¶
- Database Management
- Table browser with pagination (20 items/page)
- Column sorting (click header)
- Filter builder (field, operator, value)
- SQL console with Monaco Editor
- Query execution (with timeout)
- Explain plan viewer
- Schema visualizer (tables + relations)
-
Schema editor (generates migration SQL)
-
Authentication & Authorization
- User list (name, email, created_at, last_login)
- Add/edit/delete users
- Active sessions table
- Revoke session action
-
RLS policy viewer (read-only)
-
File Storage
- Bucket list
- File browser with breadcrumbs
- Upload (drag-and-drop or browse)
- Download file
- Delete file (with confirmation)
-
Storage metrics (used/total per bucket)
-
Real-Time Monitoring
- Active subscriptions table (user, channel, filter)
- Event log (last 100 events)
- Enable live updates toggle
-
Connection list (WebSocket connections)
-
Cluster Management
- Topology view (authority + replicas)
- Replication lag chart
- Promote replica button (with confirmation)
-
WAL viewer (read-only)
-
Observability
- Structured log viewer (filter by level, time, module)
- Metrics dashboard (queries/sec, latency, errors)
- Audit log (user actions)
2. Testing Complete¶
- Unit Tests
- 80%+ line coverage
- All React components tested
- All custom hooks tested
-
All utilities tested
-
Integration Tests
- Login flow
- CRUD operations on each resource
-
API error handling
-
E2E Tests (Playwright)
- Critical path: Login → browse table → logout
- Table filtering and pagination
- User management workflow
- File upload/download
-
Real-time subscription
-
Visual Regression
- Screenshots for all major pages
-
Dark/light theme variants
-
Performance
- Lighthouse score > 90
- Page load < 1s
- Query results < 500ms (p95)
3. Security Verified¶
- Authentication
- JWT validation on all endpoints
- Token refresh flow
- Auto-logout on token expiry
-
Session hijacking protection (rotate tokens)
-
XSS Protection
- All user input sanitized
- CSP headers configured
-
No
dangerouslySetInnerHTMLwithout DOMPurify -
CSRF Protection
- Destructive actions require confirmation
-
No state mutations via GET requests
-
HTTPS Only
- Dashboard rejects HTTP endpoints (except localhost)
- Tokens never logged
4. Invariants Enforced¶
All invariants from ADMIN_UI_INVARIANTS.md verified:
- I1: Dashboard failures don't break database
- I2: Database is source of truth
- I3: No hidden mutations
- I4: RLS respected
- I5: API version compatibility
- O1: Pagination always required
- O2: Stale data indicated
- O3: Error states shown
- O4: No auto-refresh by default
- S1: Tokens not logged
- S2: HTTPS only
- S3: XSS protection
- T1: E2E coverage required
- T2: API mocking in dev
5. Documentation Complete¶
- ADMIN_UI_VISION.md
- ADMIN_UI_ARCHITECTURE.md
- ADMIN_UI_UI_MODEL.md
- ADMIN_UI_INVARIANTS.md
- ADMIN_UI_TESTING_STRATEGY.md
- ADMIN_UI_READINESS.md (this file)
- ADMIN_UI_DEPLOYMENT.md
- ADMIN_UI_OBSERVABILITY.md
- README.md in admin-console/
6. Deployment Ready¶
- Build
-
npm run buildsucceeds - Bundle size < 500KB (gzipped)
- No unused dependencies
-
Tree shaking enabled
-
Environment Config
-
.env.exampleprovided - Required vars documented: VITE_AERODB_URL, VITE_WS_URL
-
Config validation on startup
-
Static Hosting
- Deployable to Vercel/Netlify
-
dist/contains all necessary files -
_redirectshandles SPA routing -
Docker
- Dockerfile provided (nginx serving
dist/) - Multi-stage build (reduce image size)
7. Accessibility¶
- WCAG 2.1 AA
- Keyboard navigation works
- Screen reader compatible
- Focus indicators visible
- Color contrast ≥ 4.5:1 (text)
-
ARIA labels on interactive elements
-
Responsive Design
- Mobile (< 768px): Sidebar collapses
- Tablet (768-1024px): Single column layouts
- Desktop (> 1024px): Multi-column layouts
8. Observability¶
- Error Tracking
- Sentry integrated (or equivalent)
- Errors include user ID, route, stack trace
-
PII (passwords, tokens) redacted
-
Analytics
- Page views tracked
- User actions logged (button clicks, queries executed)
-
Performance metrics (LCP, FID, CLS)
-
Logging
- Console logs suppressed in production
- Structured logs sent to backend
9. User Documentation¶
- Admin Guide
- Getting started (login, navigation)
- Table browser usage
- SQL console tips
- User management
-
File upload/download
-
Developer Guide
- Setup instructions (
npm install,npm run dev) - Environment variables
- Extending the admin console (add new page)
10. Known Limitations Documented¶
- Limitations
- Dashboard is read-heavy (writes go through API)
- No offline mode (requires network)
- RLS policies not editable via UI (use SQL)
- Large result sets require pagination
Sign-Off¶
Phase 13 is frozen when:
- All checklist items above are complete
- All tests pass (unit, integration, E2E)
- Code review approved by at least one other developer
- Security audit complete (no critical vulnerabilities)
Frozen on: [DATE]
Approved by: [NAME]