Gonvex
Build realtime Go + Postgres backends with generated TypeScript bindings.
Gonvex
Gonvex is a Convex-style backend for teams that want to write backend logic in Go while keeping the frontend developer experience tight: generated TypeScript bindings, realtime subscriptions, durable local sync, schema sync, and a self-hosted runtime that knows about projects, tenants, users, and roles.
The application workflow is:
npm create gonvex@latest my-app
cd my-app
npm install
npm run dev
Then define backend code next to your app:
my-app/
gonvex/
schema.go
tasks.go
_generated/
api.ts
react.ts
client.ts
Your React app imports generated bindings:
import { api } from "./gonvex/_generated/api";
const tasks = useQuery(api.tasks.list, { status: "open" });
const createTask = useMutation(api.tasks.create);
What Gonvex Provides
- Go backend functions: queries, mutations, actions, HTTP handlers, internal mutations, LiveGrid functions, and sync collections.
- Generated TypeScript bindings: frontend-safe references to your app backend functions.
- Postgres schema management: define tables and indexes in Go.
- Realtime subscriptions: declared dependencies refresh only relevant query results when writes commit.
- Durable sync collections: keep authorized, bounded table data in IndexedDB and resume from a Postgres change cursor.
- Browser query cache: replay safe scoped snapshots while the server revalidates them.
- Multi-project runtime: one runtime can host many projects.
- Multi-tenant projects: route verified members to isolated tenant databases.
- User and membership model: users can belong to multiple tenants with roles and permissions.
- Scheduling: register interval, cron-expression, per-tenant, and one-shot background work.
- Dashboard: inspect projects, schemas, functions, tenants, files, errors, logs, metrics, realtime connections, and scheduler health.
Core Concepts
Project
A Gonvex application, usually one product/app/repo.
Tenant
A customer/account/workspace inside a project. Tenants can have isolated databases.
Landlord database
Runtime-owned control database that stores projects, tenants, users, memberships, and routing info.
Tenant database
The actual application data store for one tenant or tenant group.
Gonvex folder
The app-local backend source folder checked into your frontend repo.
Generated bindings
TypeScript files generated from your Go backend registrations.
Recommended Reading
- Quickstart
- Installation
- Initialize a Project
- Projects and Tenants
- Frontend Multitenancy
- Auth and Membership
- Schema
- Functions and Bindings
- Realtime Subscriptions
- Durable Sync Collections
- Scheduling and Background Jobs
Current Status
Gonvex is in beta. These docs distinguish implemented behavior from roadmap work. Migration rollouts, tenant fleet operations, deployment automation, scheduler retention/dead-letter controls, and a public hosted service are the largest remaining platform boundaries; see Current Limits.