How Convex Works, from first principles

Interactive explainers that take you on a journey through building complicated systems.

MUTATION · buyHat()COMMITTED
const hat = await db.get("hat");
await db.patch("hat", {
  stock: hat.stock - 1
});
READ SEThat · stock 2 · seen at ts 12
COMMITTER
✓  read set still true✓  commit at ts 13
TRANSACTION LOG
ts 12stock: 2
ts 13stock: 1

Next on the bench

One piece of Convex per explainer, with demos you drive yourself.

  1. 02

    Inside the Batch Worker

    Why one process can commit thousands of transactions a second without a lock in sight.

    Drafting
  2. 03

    How a query stays fresh

    Subscriptions, read sets and the log, from the browser's point of view.

    Planned
  3. 04

    Build your own vector search

    Embeddings, nearest neighbours, and why the index is the interesting part.

    Planned
  4. 05

    Crons, retries and the scheduler

    What "run this in five minutes" has to survive to actually run in five minutes.

    Planned

Get new explainers by email

One email when a new explainer is published. That’s it.