Skip to content

Repository files navigation

📝 Conduit — RealWorld Example App (Modernized Fork)

Quality CodeQL

📜 View the portfolio page →

Last updated: August 20, 2026

This repository is an independently modernized fork of the RealWorld Conduit example app — a Medium-style publishing platform (CRUD, JWT auth, pagination) built with React 19 / Vite + SWC / Express 5 / Sequelize / PostgreSQL. It's not affiliated with the RealWorld project or the original repo author.

Rather than copying the source app over wholesale, this fork is being rebuilt one file at a time: each file is re-added deliberately, with dependencies and patterns brought up to their current latest versions along the way, and every real bug fixed via a real failing test — not read twice and assumed fine.

At a glance: 214/214 backend tests passing, 6/6 frontend tests passing, 0 open CodeQL alerts, 27 real bugs found and fixed — see the Quality/CodeQL badges above for live CI status. Known gap: the frontend's 20 files built so far have zero behavioral test coverage yet (typecheck+lint+/simplify only) — tracked openly as issue #71, not hidden.

🧭 Start Here

  • System Architecture — the dev-proxy → Express → Postgres request path, and where the (in-progress) frontend fits
  • Auth & Request Flow — how verifyToken's soft-auth-by-default pattern actually works, and the real bug it's responsible for
  • Data Model — the 4 models and 6 associations, and the two real FK bugs migrations now catch
  • Testing Strategy — the four test layers this repo runs, real in-memory SQLite instead of hand-stubbed mocks

The rest of the wiki goes deeper per backend module.

  • todo.md — the primary, detailed record: a phase-by-phase written log of everything done and everything still open, with dates and the reasoning behind each decision. This is the source of truth.
  • GitHub Project board — a Scrum-style Backlog/Planned/In Progress/Verification & QA/Done view of the same work, for a quick at-a-glance status without reading the full log. Kept in sync with todo.md.

🧭 Why This Matters

RealWorld's Conduit is a well-known "same app, N stacks" demo, useful precisely because it's common ground — but reference implementations age: pinned dependencies, no TypeScript, no CI, no tests, a schema that only worked because sequelize.sync({ alter: true }) quietly patched it at boot. The point of this repo is doing the unglamorous work of actually modernizing one, file by file, with the reasoning for every real decision written down as it happened.

🏗 What's Here So Far

  backend/            Express 5 + Sequelize 6 + PostgreSQL, 100% TypeScript   ✅ done
  frontend/config     package.json, tsconfig, vite.config, index.html        ✅ done
  frontend/helpers    dateFormatter, errorHandler                            ✅ done
  frontend/types      Profile, Article, Comment, User, AuthState, + more     ✅ done
  frontend/services   all 16 planned API service modules                    ✅ done
  frontend/context    AuthContext, FeedContext                              ✅ done
  frontend/components 2 of ~24 (FormFieldset, ArticleTags)                  🚧 in progress
  frontend/routes     ~10 route pages                                       ⏳ not started
  frontend/App+main   entry point — last, once everything above exists      ⏳ not started

See todo.md for the full file-by-file build-out plan.

🖥 Getting Started

Steps 1–4 (env, database, migrations, seed data) work today against the backend alone. Step 5 (yarn dev) won't render anything yet — the frontend workspace exists, but its entry point (main.tsx) and every route/component that depends on it are still being built.

yarn install
  1. Create a .env file in backend/ per backend/.env.example.
  2. Create the database:
    yarn sqlz db:create
  3. Run the migrations — the backend no longer auto-syncs the schema at boot, so this step is required:
    yarn sqlz db:migrate
  4. (Optional) seed it with dummy data:
    yarn sqlz db:seed:all
  5. Start the dev servers:
    yarn dev

License

MIT — see LICENSE. Original work Copyright (c) 2021 RealWorld.

About

Independently modernized, file-by-file fork of the RealWorld Conduit example app: a Medium-style publishing platform (CRUD, JWT auth, pagination). Backend complete -- Express 5, Sequelize 6, PostgreSQL, TypeScript, Vitest -- runnable as a single Express process. React frontend planned but not yet built. No Docker/containerization.

Topics

Resources

Code of conduct

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages