From 487754d3a23899bcd271222710f61fe61306b7de Mon Sep 17 00:00:00 2001 From: jwinterm Date: Sat, 17 Jan 2026 12:10:18 -0500 Subject: [PATCH] Add Playwright a11y tests, structured data, and reduced motion support - Add Playwright tests with axe-core (42 tests across 3 browsers) - Add prefers-reduced-motion support to NebulaField - Add JSON-LD structured data (Organization schema) - Add canonical URLs to all pages - Consolidate TODO files, update README --- README.md | 153 +++++--------------- TODO.md | 140 +++++------------- TODO_ACCESS.md | 106 -------------- apps/web/package.json | 7 +- apps/web/playwright.config.ts | 33 +++++ apps/web/src/app/about/page.tsx | 3 + apps/web/src/app/layout.tsx | 36 +++++ apps/web/src/app/services/page.tsx | 3 + apps/web/tests/a11y.spec.ts | 151 +++++++++++++++++++ packages/ui/src/procedural/nebula-field.tsx | 24 +++ pnpm-lock.yaml | 56 ++++++- 11 files changed, 381 insertions(+), 331 deletions(-) delete mode 100644 TODO_ACCESS.md create mode 100644 apps/web/playwright.config.ts create mode 100644 apps/web/tests/a11y.spec.ts diff --git a/README.md b/README.md index 8393370..8553642 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Corporate website for Such Software LLC, a full-service software provider based in Kennett Square, PA. -## Lighthouse Scores (Production Build) +## Lighthouse Scores | Page | Performance | Accessibility | SEO | Best Practices | |------|-------------|---------------|-----|----------------| @@ -10,147 +10,70 @@ Corporate website for Such Software LLC, a full-service software provider based | Services | 98% | **100%** | **100%** | **100%** | | About | 99% | **100%** | **100%** | **100%** | -*Home page Best Practices is 77% due to Cloudflare Turnstile third-party cookies for bot protection. +*Home page Best Practices is 77% due to Cloudflare Turnstile third-party cookies. ## Tech Stack -### Core Framework -- **Next.js 15** - React framework with App Router -- **React 18** - UI library -- **TypeScript 5** - Type safety - -### Styling & Animation -- **Tailwind CSS 3** - Utility-first CSS -- **Framer Motion 11** - Animations and transitions -- **tailwind-merge** - Conditional class merging -- **class-variance-authority** - Component variants - -### UI Components -- **Radix UI** - Accessible primitives -- **Lucide React** - Icon library -- **react-icons** - Additional icons (FontAwesome, etc.) - -### Theming -- **next-themes 0.4** - Dark/light mode with system preference detection - -### Forms & Validation -- **Zod** - Schema validation -- **Cloudflare Turnstile** - Bot protection via `@marsidev/react-turnstile` - -### Build & Dev Tools -- **Turborepo** - Monorepo build system -- **pnpm 9** - Package manager -- **ESLint** - Linting -- **Prettier** - Code formatting +- **Next.js 15** with App Router +- **React 18** + **TypeScript 5** +- **Tailwind CSS 3** + **Framer Motion 11** +- **Radix UI** accessible primitives +- **next-themes** for dark/light mode +- **Zod** for validation +- **Cloudflare Turnstile** for bot protection +- **Turborepo** + **pnpm 9** ## Project Structure ``` such-software-site/ -├── apps/ -│ └── web/ # Next.js website -│ ├── src/ -│ │ ├── app/ # App Router pages -│ │ │ ├── page.tsx # Homepage -│ │ │ ├── services/ # Services page -│ │ │ ├── about/ # About page -│ │ │ └── layout.tsx # Root layout -│ │ ├── components/ -│ │ │ ├── about/ # About page components -│ │ │ ├── contact/ # Contact form -│ │ │ ├── landing/ # Homepage components -│ │ │ ├── layout/ # Header, Footer, etc. -│ │ │ └── portfolio/ # Portfolio grid -│ │ ├── actions/ # Server actions -│ │ └── lib/ # Utilities -│ └── public/ # Static assets -├── packages/ -│ ├── ui/ # Shared UI components -│ │ └── src/ -│ │ ├── components/ # Button, Card, etc. -│ │ ├── procedural/ # Canvas animations (NebulaField, DataGrid) -│ │ └── lib/ # Utilities (cn) -│ └── config/ # Shared TypeScript/ESLint config -├── turbo.json # Turborepo config -├── pnpm-workspace.yaml # pnpm workspace config -└── package.json # Root package.json +├── apps/web/ # Next.js website +│ ├── src/app/ # Pages (home, services, about) +│ ├── src/components/ # React components +│ ├── tests/ # Playwright a11y tests +│ └── public/ # Static assets +├── packages/ui/ # Shared UI components +└── packages/config/ # Shared config ``` ## Development -### Prerequisites -- Node.js >= 20.0.0 -- pnpm >= 9.0.0 - -### Getting Started - ```bash -# Install dependencies -pnpm install - -# Start development server -pnpm dev - -# Build for production -pnpm build - -# Start production server -pnpm start +pnpm install # Install dependencies +pnpm dev # Start dev server at localhost:3000 +pnpm build # Production build +pnpm start # Start production server ``` -The dev server runs at `http://localhost:3000`. - -## Accessibility & Quality - -### WCAG 2.2 AA Compliance - -This site achieves **100% Lighthouse Accessibility** on all pages through: - -- Skip-to-main-content link -- Semantic HTML5 structure (`
`, `