Home
DESIGN.mdStar on GitHub
Build with confidence

The backend building blocks for your agents

A reactive database with serverless functions — your queries stay in sync automatically, no cache to manage.

DatabaseFunctionsFile storageSchedulingSearchAuth
Foundation
Antique White
#f6eedb
Page canvas
Half White
#fffff9
Cards, surfaces
CTA (n11)
#292929
Primary buttons
Ink (n12)
#141414
Text, dark base
Brand accents
Plum
#8d2676
Brand accent
Gold
#f3b01c
Highlight
Red
#ee342f
Errors, destructive
Green
#4fb014
Success, in sync
Function types
query
#3d72f5
Read functions
mutation
#f3b01c
Write functions
action
#8d2676
Side effects
httpAction
#4fb014
HTTP endpoints
Chalk syntax (code only)
Pink
#fc618d
Green
#7bd88f
Purple
#948ae3
Cyan
#5ad4e6
Yellow
#fce566
serif · italic
Build with confidence
Publico30px
display
Everything is code
GT America500
h2
Always in sync
22px500
body
Not just a database — a reactive backend for full-stack apps.
15px400
pixel · label
Backend built-ins
VCROSD Mono
code
await ctx.db.query("tasks").collect()
ui-monospace
Buttons
Function types
query mutation action httpAction
Convex function · Chalk syntax
// convex/tasks.ts
export const list = query({
  args: {},
  handler: async (ctx) => {
    return await ctx.db.query("tasks").collect();
  },
});
mutationconvex/tasks.ts
export const add = mutation({
  args: { text: v.string() },
  handler: async (ctx, { text }) => {
    await ctx.db.insert("tasks", {
      text, completed: false,
    });
  },
});
Clients subscribed to api.tasks.list update automatically.
text_id_creationTime
3 documents · table "tasks"

Run the mutation → a document is inserted and the reactive query flashes it into the table live.

Unofficial design reference · built from live convex.dev · not affiliated with Convex