Files
portfolio/Ralph/IMPLEMENTATION_PLAN.md
T
2026-02-13 17:43:09 +00:00

202 lines
8.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Implementation Plan — GP System Dashboard Overhaul
## Project Overview
Replace the "CareerRecord PMR" sidebar-nav + view-switching interface with a tile-based GP System dashboard called "CVMIS" Reference design: `References/GPSystemconcept.html`.
## Quality Checks
- `npm run typecheck` — zero errors
- `npm run lint` — pass (pre-existing AccessibilityContext warning OK)
- `npm run build` — must succeed
## Important
**This file is for progress tracking only.** For implementation detail on any task, read the referenced file in `Ralph/refs/`. Do NOT bloat this file with implementation notes — keep it lean.
---
## Tasks
### Phase 0: Foundation
#### Task 1: Update design tokens and Tailwind config
> Detail: `Ralph/refs/ref-01-design-tokens.md`
- [x] Update CSS custom properties in `src/index.css` (new palette, shadows, layout vars)
- [x] Update `tailwind.config.js` (colors, shadows, borders, radius)
- [x] Keep boot/ECG/login tokens unchanged
- [x] Run quality checks
#### Task 2: Create new data files and update types
> Detail: `Ralph/refs/ref-02-data-types.md`
- [x] Create `src/data/profile.ts` (personal statement)
- [x] Create `src/data/tags.ts` (sidebar tags)
- [x] Create `src/data/alerts.ts` (sidebar alert flags)
- [x] Create `src/data/kpis.ts` (Latest Results metrics)
- [x] Create `src/data/skills.ts` (skills with medication frequency + years)
- [x] Update `src/types/pmr.ts` (new interfaces)
- [x] Run quality checks
#### Task 3: Update CLAUDE.md for new architecture
- [x] Already completed during project setup (manual intervention 2026-02-13)
### Phase 1: Core Layout
#### Task 4: Build TopBar component
> Detail: `Ralph/refs/ref-03-topbar-sidebar.md` (TopBar section)
- [x] Create `src/components/TopBar.tsx`
- [x] Brand section (icon + name + version tag)
- [x] Search bar (triggers command palette, not inline search)
- [x] Session info (mono font, pill badge)
- [x] Fixed position, 48px height, white bg, bottom border
- [x] Run quality checks
#### Task 5: Build new Sidebar — PersonHeader
> Detail: `Ralph/refs/ref-03-topbar-sidebar.md` (Sidebar PersonHeader section)
- [x] Create `src/components/Sidebar.tsx`
- [x] Avatar circle (52px, teal gradient, initials)
- [x] Name, title, status badge with pulse dot
- [x] Details grid (GPhC, Education, Location, Phone, Email, Registered)
- [x] 272px width, light background, right border
- [x] Run quality checks
#### Task 6: Build new Sidebar — Tags + Alerts
> Detail: `Ralph/refs/ref-03-topbar-sidebar.md` (Tags and Alerts section)
- [x] Section title component (uppercase, divider line)
- [x] Tags section (flex wrap pills, color variants)
- [x] Alerts section (colored flag items with icons)
- [x] Run quality checks
#### Task 7: Build DashboardLayout and wire up App.tsx
> Detail: `Ralph/refs/ref-04-dashboard-layout.md`
- [x] Create `src/components/DashboardLayout.tsx`
- [x] Three-zone layout: TopBar (fixed) + Sidebar (fixed) + Main (scrollable card grid)
- [x] Card grid: 2 columns desktop, 1 column <900px
- [x] Framer Motion entrance animations (topbar → sidebar → content)
- [x] Update App.tsx: replace PMRInterface with DashboardLayout in PMR phase
- [x] Verify boot → ECG → login → dashboard transition works
- [x] Run quality checks
### Phase 2: Dashboard Tiles
#### Task 8: Build reusable Card component
> Detail: `Ralph/refs/ref-05-card-and-top-tiles.md` (Card section)
- [x] Create `src/components/Card.tsx`
- [x] Base card styling (white, border, radius 8px, shadow-sm, hover shadow-md)
- [x] `full` variant (spans both grid columns)
- [x] CardHeader sub-component (dot + title + optional right text)
- [x] Run quality checks
#### Task 9: Build PatientSummary tile
> Detail: `Ralph/refs/ref-05-card-and-top-tiles.md` (PatientSummary section)
- [x] Create `src/components/tiles/PatientSummaryTile.tsx`
- [x] Full-width card, first in grid
- [x] Personal statement from `src/data/profile.ts`
- [x] Run quality checks
#### Task 10: Build LatestResults tile
> Detail: `Ralph/refs/ref-05-card-and-top-tiles.md` (LatestResults section)
- [x] Create `src/components/tiles/LatestResultsTile.tsx`
- [x] Half-width card, 2x2 metric grid
- [x] Four KPI metric cards with colored values
- [x] Data from `src/data/kpis.ts`
- [x] Run quality checks
#### Task 11: Build CoreSkills tile ("Repeat Medications")
> Detail: `Ralph/refs/ref-05-card-and-top-tiles.md` (CoreSkills section)
- [x] Create `src/components/tiles/CoreSkillsTile.tsx`
- [x] Half-width card, next to LatestResults
- [x] Skills listed as medications with frequency + years
- [x] Data from `src/data/skills.ts`
- [x] Run quality checks
#### Task 12: Build LastConsultation tile
> Detail: `Ralph/refs/ref-06-bottom-tiles.md` (LastConsultation section)
- [x] Create `src/components/tiles/LastConsultationTile.tsx`
- [x] Full-width card
- [x] Header info row (Date, Org, Type, Band)
- [x] Role title + achievement bullet list
- [x] Data from first entry in `src/data/consultations.ts`
- [x] Run quality checks
#### Task 13: Build CareerActivity tile
> Detail: `Ralph/refs/ref-06-bottom-tiles.md` (CareerActivity section)
- [x] Create `src/components/tiles/CareerActivityTile.tsx`
- [x] Full-width card, two-column activity grid
- [x] Merge roles + projects + certs + education into timeline
- [x] Color-coded dots by entry type
- [x] Run quality checks
#### Task 14: Build Education tile
> Detail: `Ralph/refs/ref-06-bottom-tiles.md` (Education section)
- [x] Create `src/components/tiles/EducationTile.tsx`
- [x] Full-width card, below Career Activity
- [x] Education entries from documents data
- [x] Run quality checks
#### Task 15: Build Projects tile
> Detail: `Ralph/refs/ref-06-bottom-tiles.md` (Projects section)
- [x] Create `src/components/tiles/ProjectsTile.tsx`
- [x] Full-width card, prominent presentation
- [x] Status badges, project names, years, descriptions
- [x] Data from `src/data/investigations.ts`
- [x] Run quality checks
### Phase 3: Interactions
#### Task 16: Tile expansion system
> Detail: `Ralph/refs/ref-07-interactions.md` (Tile Expansion section)
- [x] CareerActivity items expand to show full role detail
- [x] Projects items expand to show methodology, tech stack, results
- [x] CoreSkills items expand to show prescribing history
- [x] Height-only animation (200ms, no opacity fade)
- [x] Single-expand accordion
- [x] Keyboard: Enter/Space to expand, Escape to collapse
- [x] Run quality checks
#### Task 17: KPI flip card interaction
> Detail: `Ralph/refs/ref-07-interactions.md` (KPI Flip section)
- [ ] LatestResults metrics flip on click
- [ ] Front: value + label. Back: explanation text
- [ ] CSS perspective flip (400ms) or instant swap with reduced motion
- [ ] One card flipped at a time
- [ ] Run quality checks
#### Task 18: Build Command Palette
> Detail: `Ralph/refs/ref-07-interactions.md` (Command Palette section)
- [ ] Create `src/components/CommandPalette.tsx`
- [ ] Ctrl+K trigger + search bar click trigger
- [ ] Overlay with backdrop blur, ESC to close
- [ ] Fuzzy search via fuse.js (adapt `src/lib/search.ts`)
- [ ] Grouped results by section + Quick Actions
- [ ] Keyboard navigation (arrows, Enter, Escape)
- [ ] Run quality checks
### Phase 4: Polish
#### Task 19: Responsive design
> Detail: `Ralph/refs/ref-08-polish.md` (Responsive section)
- [ ] Desktop (>1024px): full sidebar + 2-column grid
- [ ] Tablet (7681024px): collapsed/hidden sidebar + adapted grid
- [ ] Mobile (<768px): no sidebar, single-column tiles, simplified topbar
- [ ] Touch-friendly targets (48px+)
- [ ] Run quality checks
#### Task 20: Accessibility audit
> Detail: `Ralph/refs/ref-08-polish.md` (Accessibility section)
- [ ] Semantic HTML (header, nav, main, article, section)
- [ ] Keyboard navigation (Tab, Enter/Space, Escape, Ctrl+K, arrows)
- [ ] ARIA (expanded, controls, labels, live regions, dialog)
- [ ] Focus management (trap in palette, visible rings, return focus)
- [ ] `prefers-reduced-motion` on all animations
- [ ] Color contrast verification
- [ ] Run quality checks
#### Task 21: Clean up and final polish
> Detail: `Ralph/refs/ref-08-polish.md` (Cleanup section)
- [ ] Remove unused old components (PatientBanner, ClinicalSidebar, Breadcrumb, etc.)
- [ ] Remove unused hooks (useScrollCondensation if unused)
- [ ] Verify no dead imports
- [ ] Final visual review against concept HTML
- [ ] Run quality checks (clean build)