admin c3316b9c45 Task 15: Accessibility audit complete
- Sidebar: Replace <aside role="navigation"> with <nav> to avoid conflicting roles
- Sidebar search: Add combobox role, aria-expanded, aria-controls, aria-autocomplete
- Search results: Add listbox/option roles, group labels for screen reader navigation
- PMRInterface: Remove redundant role="main", fix aria-label to use CV-friendly labels
- Mobile search: Add aria-label and type="search" for proper semantics
- Breadcrumb: Add aria-current="page" to current item, aria-hidden on separators
- Clinical alert: Add aria-label="Acknowledge clinical alert" on button per spec
- Patient banner: Change focus:ring to focus-visible:ring on action buttons
- Patient banner: Add role="img" to StatusDot for aria-label accessibility
- Login screen: Change role="status" to role="dialog" with aria-modal
- Login screen: Add loginButtonRef with auto-focus when typing completes
- Login screen: Add focus-visible ring style to Log In button
- Medications tabs: Add id="tab-{id}" to tab buttons, fix aria-labelledby on panels
- Consultations: Wrap entries in <article> per semantic HTML spec
- Problems: Change TrafficLight dot from role="img" to aria-hidden (text label handles it)
- App: Add sr-only live region announcing "Patient Record for Charlwood, Andrew" on PMR entry
- Skip button: Add focus-visible ring for keyboard users

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 01:42:05 +00:00
2026-02-10 23:38:00 +00:00
2026-02-13 00:20:25 +00:00
2026-02-10 23:38:00 +00:00
2026-02-13 01:42:05 +00:00
2026-02-13 00:20:25 +00:00
2026-02-10 23:38:00 +00:00
2026-02-11 02:50:28 +00:00
2026-02-10 23:38:00 +00:00

Andy Charlwood - Interactive CV

A distinctive interactive portfolio website featuring a three-phase cinematic loading experience: terminal boot sequence → ECG heartbeat animation → main content. Built with React, TypeScript, and Vite.

Features

  • Three-Phase Loading Experience: Terminal boot (~4s) → ECG animation (~5-6s) → content reveal
  • Interactive Sections: Hero, Skills, Experience, Education, Projects, Contact
  • Smooth Animations: Framer Motion for scroll reveals and staggered transitions
  • SVG Skill Visualization: Circular progress indicators for skill levels
  • Floating Navigation: Active section tracking as you scroll
  • Responsive Design: Tailwind CSS with custom breakpoints

Tech Stack

  • Framework: React 18 + TypeScript
  • Build Tool: Vite 6
  • Styling: Tailwind CSS 3
  • Animations: Framer Motion + Canvas API
  • Icons: Lucide React
  • Linting: ESLint 9

Getting Started

# Install dependencies
npm install

# Start development server
npm run dev

# Build for production
npm run build

# Preview production build
npm run preview

Available Scripts

Command Description
npm run dev Start dev server (localhost:5173)
npm run build TypeScript compile + Vite production build
npm run typecheck TypeScript type checking only
npm run lint Run ESLint
npm run preview Preview production build

Project Structure

src/
├── components/    # React components (PascalCase)
├── hooks/         # Custom hooks (use* prefix)
├── lib/           # Utility functions
├── types/         # TypeScript interfaces
├── App.tsx        # Phase manager (root component)
└── index.css      # Global styles + Tailwind

Design Tokens

  • Primary: Teal #00897B
  • Accent: Coral #FF6B6B
  • Fonts: Plus Jakarta Sans (primary), Inter Tight (secondary), Fira Code (mono)
  • Breakpoints: xs 480px, sm 640px, md 768px, lg 1024px, xl 1280px

License

Private - All rights reserved.

S
Description
No description provided
Readme MIT 26 MiB
Languages
TypeScript 71.7%
HTML 25.5%
CSS 2.3%
JavaScript 0.5%