Gonvex

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.
  1. Quickstart
  2. Installation
  3. Initialize a Project
  4. Projects and Tenants
  5. Frontend Multitenancy
  6. Auth and Membership
  7. Schema
  8. Functions and Bindings
  9. Realtime Subscriptions
  10. Durable Sync Collections
  11. 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.

On this page