Skip to content

UX revamp: JS SPAs (fastapi-todo, redis-counter, task-queue)#1683

Closed
IEvangelist wants to merge 3 commits into
mainfrom
ievangelist/js-spa-ux-revamps
Closed

UX revamp: JS SPAs (fastapi-todo, redis-counter, task-queue)#1683
IEvangelist wants to merge 3 commits into
mainfrom
ievangelist/js-spa-ux-revamps

Conversation

@IEvangelist
Copy link
Copy Markdown
Member

Summary

Part of the coordinated effort to give every Aspire sample frontend a distinct, accessible, secure identity (replacing the boring shared purple gradient). This PR covers 3 JS SPA samples, each with its own visual language, CSS approach, and icon pack — no two look alike.

Sample Identity CSS approach Icons Stack
vite-react-fastapi Claymorphism — soft puffy pastel todos, big radii, playful Open Props Heroicons React JSX + FastAPI
node-express-redis Memphis-pop — bold geometric data dashboard, primary colors CSS Modules Tabler React TS + Redis
polyglot-task-queue Cyberpunk control room — neon HUD, glowing status chips, mono accents Tailwind v4 Lucide React TS + RabbitMQ

Quality bar (met for all three)

  • Distinct identities — unique palette, radius, type, motion, and texture per app; deliberately varied CSS frameworks + icon packs.
  • Accessibility — WCAG 2.2 AA floor, pushed to AAA (7:1). Semantic landmarks, skip links, visible focus, keyboard-operable, labelled controls, aria-live regions, honors prefers-reduced-motion + prefers-color-scheme. Inline SVG favicons (no /favicon.ico 404). Zero console errors.
  • Light + dark themes — both captured; READMEs use GitHub theme-aware image markup (#gh-light-mode-only / #gh-dark-mode-only).
  • Security — preserved server-side validation/limits; no client-side secrets; user content escaped; deps pinned to latest.
  • Functionality preserved — every flow and endpoint intact (CRUD todos; Redis visit counter + stats; task submit/poll/clear). Latest deps (React 19.2, Vite 8, Tailwind 4.3, etc.).

Validation protocol (per app)

Each app was run via aspire run (resources confirmed Healthy through the Aspire MCP), then driven end-to-end with a standalone Playwright harness:

  • Functional — every flow exercised; DOM/text asserted; zero console errors.
  • axe-core 4.11.3{wcag2a, wcag2aa, wcag21a, wcag21aa, wcag22aa} and {color-contrast-enhanced}0 violations in both light and dark.
  • Screenshots — deterministic 2880×2048 (1440×1024 @ deviceScaleFactor 2), networkidle + seeded data, both themes.
  • Endpoints re-confirmed 200/201 after changes; apps stopped cleanly; working tree clean (no dist/, temp logs, or stray artifacts).

polyglot-task-queue note

Both workers (Python/C#) consume the shared tasks queue round-robin and skip the other's type — existing behavior, left unchanged. The screenshot seeder submits serially and waits for terminal states so the board reliably shows completed cards (with live pandas/report results) alongside a skipped chip, exercising the full HUD status palette. Live task IDs/timestamps are inherent to the demo.


Opening as draft for review. Each app is a separate commit with a Co-authored-by: Copilot trailer.

IEvangelist and others added 3 commits June 6, 2026 11:04
Replace the shared purple-gradient todo UI with a distinct soft, puffy claymorphism identity built on Open Props design tokens and Heroicons.

- Layered clay shadows, large radii, pastel palette; light + dark themes via prefers-color-scheme.
- Semantic landmarks, skip link, labelled controls, aria-live status, visible focus, keyboard-operable toggle/add/delete.
- Motion gated behind prefers-reduced-motion; View Transitions for add/toggle/delete.
- Guards against duplicate in-flight requests; inline SVG favicon (no /favicon.ico 404).
- Validated: todo CRUD via Playwright, zero console errors, axe WCAG 2.2 AA + AAA color-contrast-enhanced clean in light and dark.
- Latest deps (react 19.2.7, vite 8.0.16). New light/dark screenshots with GitHub theme-switch README markup.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Give the Express + Redis visit counter a bold, distinct `Memphis-pop` identity to replace the shared purple-gradient look, while preserving the Redis-backed visit-counter flows.

- Rebuild the React/TS frontend with CSS Modules (App.module.css) plus a global token layer (style.css); no runtime CSS framework.
- Tabler icons per page; neo-brutalist cards with thick ink borders, hard offset shadows, primary-color fills, and a dotted Memphis grid background.
- Add a hero `total visits` panel summing all pages, a live-status pill, and decorative geometric SVG confetti.
- Accessibility: skip link, semantic header/main landmarks, each card a labelled button announcing its current count, a single role=status live region for user actions only (not the 5s poll), visible focus, and prefers-reduced-motion + prefers-color-scheme support. WCAG 2.2 AA clean and AAA color-contrast-enhanced clean in light and dark (validated with axe-core 4.11.3 via Playwright).
- Guard against duplicate in-flight requests; preserve GET /api/stats, POST /api/visit/:page, and DELETE /api/stats.
- Inline SVG favicon + color-scheme metas to avoid a favicon 404 and zero console errors.
- Bump deps to latest (React 19.2, Vite 8, TypeScript 6, @tabler/icons-react 3.44).
- Capture deterministic light + dark screenshots and switch the README image to GitHub light/dark markup.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Give the polyglot-task-queue frontend a distinct "neon HUD control room"
identity to replace the generic shared gradient, while preserving every
flow and API call.

- Tailwind v4 (@tailwindcss/vite) + Lucide icons; monospace HUD accents on
  fully opaque surfaces so neon never carries readable text.
- Semantic landmarks, skip link, labelled controls, aria-describedby help,
  single aria-live status region, visible focus, prefers-reduced-motion and
  prefers-color-scheme honored; inline SVG favicon (no /favicon.ico 404).
- Live /health status dot, per-status count HUD, glowing status chips for
  queued/processing/completed/skipped/error, worker + type chips.
- Light and dark themes, both validated WCAG 2.2 AA and AAA
  (color-contrast-enhanced) with zero console errors; new light/dark
  screenshots with GitHub theme-aware README markup.
- Preserves GET/POST/DELETE /tasks and the live 2s task-board poll; latest
  pinned deps (react 19.2, vite 8).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@IEvangelist
Copy link
Copy Markdown
Member Author

Consolidated into the single umbrella UX-revamp PR #1682. The vite-react-fastapi (Claymorphism), node-express-redis (Memphis-pop) and polyglot-task-queue (Cyberpunk) commits are merged into ievangelist/samples-ux-revamp (merge 30d1d27); all fleet work lands in one branch/PR. Closing in favor of #1682 — branch ievangelist/js-spa-ux-revamps preserved, no history rewrite.

@IEvangelist IEvangelist closed this Jun 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant