rgoussu@goussu: ~/library/frontend/exercises
~/library/frontend/exercises cat realworld-fullstack.md

RealWorld full-stack build

# The RealWorld spec (a Medium clone) built end to end — hexagonal API, disciplined frontend, trophy-shaped tests, a rendering migration, and a real deployment.

Exercisesaved 2026-08-08source #exercise#fullstack#frontend#api#testing#deployment#realworld

Goal

Build Conduit — the RealWorld spec's Medium clone — as a complete product: backend and frontend, authenticated, tested, deployed. RealWorld is the anti-TodoMVC: big enough that every full-stack decision (auth, data modeling, state, testing, delivery) appears for real, small enough to finish. This is the capstone of the full-stack path: nothing new is taught here; everything already learned must hold hands and work.

Subject: full brief & instructions

Practices

Milestones

  1. The API, hexagonally. Implement the RealWorld backend spec (users, auth, profiles, articles, comments, favorites, tags) with a pure domain core, ports for persistence and identity, HTTP and Postgres adapters at the edges. TDD the domain; the published API test collection passes against your endpoint.
  2. The frontend, disciplined. The Conduit UI as a typed SPA: query cache for all server state, URL for filters/pagination, forms via a form library, styling on semantic tokens. No hand-rolled isLoading flags, no state stored twice.
  3. The quality pass. Trophy-shaped test suite — component/integration tests with MSW, Playwright on the money paths (signup → publish → comment), axe clean on every page, a Core Web Vitals budget measured and met. CI runs all of it on every push.
  4. The rendering migration. Move the SPA to a meta-framework (SSR or hybrid); the feed renders server-side, auth-gated pages choose their strategy deliberately. Measure TTFB/LCP/INP before and after and write the honest comparison.
  5. Ship it. Containerized deploy of API + frontend + Postgres behind TLS with structured logs, request tracing, and an uptime check; a tagged release deploys from CI alone.

Stretch goals

Related