Back to all case studies

Case study

CodeHerWay Education Platform

A frontend-focused learning platform for women entering tech — structured lessons, quizzes, visible progress, and a calm beginner experience. Behind the calm surface is real frontend product behavior: Supabase authentication, persisted learner state, a deduplicated and retry-safe progress and learning-state system, and honest semantics that frame progress as practice and proof of learning rather than verified mastery. Built on React 19 and TypeScript, with an Anthropic-powered AI companion (Ada) as a standalone Next.js app.

  • React 19 + TypeScript + Supabase auth and data
  • 22 courses · 170 modules · 922 lessons on custom v2 schema
  • Deduplicated, retry-safe progress system
  • Playwright smoke + accessibility coverage
Project type
Learning platform and portfolio product
Stack
React 19, TypeScript, Vite, Supabase, PostgreSQL, Vercel — AI companion on Next.js + Anthropic API
Proof points
Auth, progress persistence with retry/replay, quizzes, a deduplicated learning-state system, accessible UI, async states, and Playwright smoke coverage.
Last verified
— static, link, and route-readiness checks pass; deployed field profiling is still pending.
CodeHerWay Education Platform landing and account creation interface
Captured from the public live demo on May 12, 2026.

Learning product lens

The core challenge was keeping beginners moving without overwhelming them — or overstating what they've mastered.

CodeHerWay needed to feel structured, encouraging, and honest. I designed the interface around guided lessons, visible progress, quiz feedback, and saved learner state so learners could understand what to do next and feel momentum without confusing completion with mastery. The progress and learning-state system behind that momentum is hardened against the failure modes that make progress untrustworthy: double-counting, lost writes, and silent sync failures.

Guided learning

Lessons are organized around a clear next step instead of dumping content at once.

Feedback loops

Quiz feedback helps learners understand mistakes immediately.

Grounded progress

Progress is framed around completed lessons, quiz feedback, and saved work — deduplicated and retry-safe so the count stays honest, not cosmetic.

Evidence Snapshot

What I built

  • Course browsing and lesson UI for HTML, CSS, JavaScript, and React tracks
  • Supabase auth and learner data
  • Progress save/reload with same-browser retry/replay
  • Quiz feedback, bookmarks, and lesson notes
  • Mobile learning flow with sticky nav and a tools sheet
  • Custom v2 lesson content schema — 22 courses, 170 modules, 922 lessons shipped
  • Ada AI companion — standalone Next.js app on the Anthropic API with usage-cap enforcement

The engineering that matters

  • Unified progress & learning-state system: completed lessons, quiz outcomes, and saved progress with dedupe
  • Local progress-event processing with retry/reconciliation and sync-failure visibility
  • Feature-gated Supabase learning-state backend for future cross-device idempotency
  • Atomic progress-update RPC + migrations, behind a flag until duplicate-write flows are verified

What was hard

  • Balancing beginner-friendly UX with real product logic
  • Showing visible progress without implying mastery before real practice happens
  • Keeping progress counts honest across retries, replays, and sync failures

Honest semantics

  • Completed lessons and quiz outcomes signal practice, not verified mastery
  • The Progress Summary PDF reflects app progress and is explicitly not a credential
  • Cross-device sync stays off until the backend path is verified

What to verify in 90 seconds

  • Open the live demo and start a lesson flow
  • Trigger quiz feedback and watch progress update
  • Reload mid-flow to confirm progress persists
  • Inspect the responsive mobile learning layout
  • Skim the repo's progress/learning-state and Supabase service modules

Honest limits

  • Cross-device progress is single-device today; multi-device sync is scaffolded but gated
  • Authenticated flows still need a configured staging backend for full validation
  • Deployed Lighthouse field numbers are not captured yet

Current Product Direction

CodeHerWay is moving toward a practice-and-proof model: progress is earned through completed lessons, quiz feedback, saved work, and practice outcomes rather than cosmetic rewards.

Current focus: structured lessons, quiz feedback, saved progress, practice challenges, learning evidence, and completed-work summaries that read as portfolio-friendly proof.

Out of scope for now: XP-heavy gamification, badges, leaderboards, certificates, AI grading, and production credentialing.

Learning Friction

Beginners can lose momentum when learning resources are scattered, next steps are unclear, or progress feels invisible. The product needed to feel supportive without hiding the technical rigor of learning HTML, CSS, JavaScript, and React.

Still to validate: real learner retention, completion friction, and where beginners most often need intervention should be measured before making outcome claims.

Users

  • Women entering tech who need a structured, beginner-friendly path.
  • Self-directed learners who benefit from visible progress, review, and consistency cues.
  • Technical reviewers evaluating whether the project behaves like a real product rather than a static demo.

Learner Experience Goals

  • Make the first learning path clear and guided.
  • Keep lesson, quiz, bookmark, and progress states understandable.
  • Frame progress through completed lessons, quiz feedback, and saved work without overstating mastery.
  • Keep the product reviewable through quality gates and documented limitations.

My Role

I own the product end to end: frontend architecture, learning and quiz UI, progress tracking with retry/replay, the unified progress and learning-state system, the feature-gated Supabase learning-state backend (migrations, atomic progress-update RPC, and a service wrapper that preserves local fallback), Supabase authentication/data integration, the Playwright smoke suite, and the portfolio documentation around product quality and current limits.

Beginner Momentum Decisions

  • Guided course flow with visible navigation so learners know where they are and what comes next.
  • Immediate quiz feedback and review surfaces that help learners understand mistakes without harsh tone.
  • Progress language that separates motivational completion from verified mastery.
  • Honest sync and recovery copy when persistence depends on browser-local state or backend validation.

Progress & Learning-State Engineering

  • Unified progress system. Completed lessons, quiz outcomes, and practice activity flow through one learning-state engine, with deduplication so a single completion can't be counted twice.
  • Local-first with reconciliation. Progress events are processed locally with retry/reconciliation evidence and diagnostics, and sync failures are made visible instead of swallowed.
  • Feature-gated cross-device path. A Supabase learning-state backend is scaffolded for future cross-device idempotency — progress migrations, an atomic progress-update RPC, and a frontend service wrapper that preserves local fallback. The flag stays off until migrations run and authenticated duplicate-write flows are verified.
  • Quiz inventory under audit. Active quiz coverage for all four tracks is complete; quiz variant groups and legacy orphan quizzes are classified and monitored by an audit so the content surface stays trustworthy.
  • Server-mediated workflows stay behind functions rather than exposing sensitive keys in the browser.

Learning Progress Tradeoffs

  • Constraint

    Beginners need encouragement and visible progress, but the platform should not imply mastery before real practice happens.

  • Decision

    Progress is surfaced through completed lessons, quiz feedback, saved state, and practice evidence on a deduplicated, retry-safe system, while quiz review remains the place for learning feedback and the progress PDF is labelled as not a credential.

  • Tradeoff

    This makes progress feel more honest, but it requires stronger practice-and-proof features so learners still feel momentum — and retention and completion impact still need real learner validation.

Accessibility Considerations

  • Covered by the smoke suite: Playwright includes an accessibility check alongside landing, auth, visual-snapshot, and first-lesson preview entry coverage.
  • Keyboard navigation and focus handling are treated as product behavior, especially in lessons, dialogs, and panels.
  • Quiz and progress interactions use clearer semantic relationships and user-facing status copy.
  • Feedback states are kept purposeful so the interface supports learning rather than distracting from it.

Performance Considerations

  • The project uses explicit local and CI checks to keep regressions visible.
  • Route and lesson surfaces are structured so future performance work can target specific product areas instead of a single global bundle.
  • Next iteration includes deployed Lighthouse reporting and continued CSS modularization to reduce global surface area — captured from a real URL, not asserted as a target.

QA Notes

  • Public smoke coverage: a Playwright suite exercises landing, auth, accessibility, visual snapshots, and first-lesson preview entry on the live deployment.
  • Learning-state integrity: local retry/reconciliation evidence and dedupe behavior are the focus of progress-system testing, with sync-failure states surfaced rather than hidden.
  • Evidence standard: accessibility and performance content is framed as considerations and next work, not as unmeasured outcome claims; the cross-device backend is described as gated, not done.
  • Still to validate: authenticated learner flows against a configured staging backend and fresh Lighthouse reporting.

Current Status

CodeHerWay is an active portfolio product and learning-platform build. It demonstrates real product architecture, a deduplicated and retry-safe progress system, and quality practices, but it is presented honestly as portfolio-ready, not production-grade — a stabilized project still moving toward full production readiness.

What I Learned

The strongest education-product evidence comes from connecting the learner-facing interface to real state rules: auth, progress, quiz review, learning-state integrity, and recovery paths. The next level is validating which of those choices actually helps beginners continue — and lifting the cross-device gate once duplicate-write flows are proven.

What I Would Improve Next

  • Validate authenticated learner flows against a configured staging backend, then lift the cross-device sync gate.
  • Build out practice challenges and completed-work summaries so progress is backed by visible proof of learning.
  • Add deployed Lighthouse reporting and performance budgets.
  • Refine onboarding analytics around drop-off and lesson completion friction.
  • Continue reducing global CSS and clarifying shared UI primitives.