Home/Database & Cache/Convex
Database & Cache
convex

Convex

TypeScriptOpen SourceRealtimeServerless

Serverless database with real-time reactivity — write server functions in TypeScript, get live queries and automatic consistency without a separate backend.

License

Apache 2.0

Language

TypeScript

73
Trust
Good

Why Convex?

Real-time collaborative apps where the database should push updates to clients

Teams that want a combined database + backend-as-a-service with strong TypeScript types

Startups prototyping fast without managing a separate API layer

Signal Breakdown

What drives the Trust Score

npm downloads
90k / wk
Commits (90d)
200 commits
GitHub stars
3.5k ★
Stack Overflow
150 q's
Community
Growing
Weighted Trust Score73 / 100

Download Trend

Last 12 months

Tradeoffs & Caveats

Know before you commit

Complex SQL analytics or reporting workloads — Convex is not a SQL database

Apps that need direct SQL access or existing ORM tooling

Pricing

Free tier & paid plans

Free tier

Free: 1M function calls/mo, 1GB storage

Paid

Pro: $25/mo

Alternative Tools

Other options worth considering

supabase
Supabase95Excellent

Open-source Firebase alternative. Combines Postgres, auth, file storage, realtime subscriptions, and edge functions in one platform. The default backend for indie SaaS with a generous free tier.

turso
Turso74Good

Edge-native SQLite database built on libSQL — embed a database per tenant or deploy replicas globally close to your users with a generous free tier.

planetscale
PlanetScale79Good

Serverless MySQL platform with database branching — deploy schema changes like code with non-blocking migrations and global replication.

Often Used Together

Complementary tools that pair well with Convex

nextjs

Next.js

Frontend & UI

98Excellent
View
clerk

Clerk

Auth & Users

80Strong
View

Learning Resources

Docs, videos, tutorials, and courses

Get Started

Repository and installation options

View on GitHub

github.com/get-convex/convex-backend

npmnpm install convex

Quick Start

Copy and adapt to get going fast

// convex/tasks.ts (server function)
import { query, mutation } from './_generated/server';

export const list = query(async (ctx) => ctx.db.query('tasks').collect());
export const create = mutation(async (ctx, { text }) => {
  await ctx.db.insert('tasks', { text, isCompleted: false });
});

// React component
import { useQuery, useMutation } from 'convex/react';
const tasks = useQuery(api.tasks.list);

Community Notes

Real experiences from developers who've used this tool