Disc is a schema-first, TypeScript-native database built on Deno. It sits on top of PostgreSQL and provides a declarative schema language (SDL), a purpose-built query language (EdgeQL), automatic migrations, and a bundled PostgreSQL instance that requires zero manual setup. Disc is a fork of Gel (formerly EdgeDB), reimplemented in TypeScript while preserving EdgeQL and SDL.
| I want to… | Go to |
|---|---|
| Get up and running from scratch | Getting Started |
| Define types, links, and constraints | Schema (SDL) |
| Write queries and mutations | EdgeQL |
| Look up built-in functions | Functions Reference |
| Use the CLI | CLI Reference |
| Manage schema changes over time | Migrations |
| Generate a typed client (TS/Rust/Go) | Codegen |
| Use the TypeScript SDK in my app | Client SDK |
| Write filter queries against schemas | Filter API |
| Configure the Disc server | Server Configuration |
| Set up authentication | Auth |
| Add row-level security | Access Policies |
| Use extensions | Extensions |
| Browse data in a web UI | Admin UI |
| Understand the bundled PostgreSQL | Bundled PostgreSQL |
| Deploy to production | Production Deployment |
| Deploy on Kubernetes with Helm | Production Deployment → Kubernetes (Helm) |
| Send auth emails over SMTP | Auth → Email Delivery (SMTP) |
| Drive Disc from a Deno script | CLI → Programmatic API |
| Tune queries, indexes, and caches | Performance |
| Run Disc via Docker Compose | Docker Compose |
| Run and write tests | Testing |
| Cut and publish a release | Releasing |
Schema-first. Your data model is defined in .disc files using SDL (Schema Definition Language). Disc parses these definitions, generates migrations, creates PostgreSQL tables, and produces TypeScript types -- all from one source of truth.
EdgeQL. Disc uses EdgeQL, not SQL, as its primary query language. EdgeQL compiles to PostgreSQL SQL under the hood but provides a cleaner syntax for nested data, filtering, and type-safe queries. You never write raw SQL unless you want to.
Bundled PostgreSQL. Running disc init downloads and manages a PostgreSQL instance automatically. Users never install, configure, or maintain PostgreSQL directly. For production, an external PostgreSQL can be connected via --backend-dsn.
TypeScript-native. The entire stack -- schema parser, query compiler, migration engine, server, CLI, and SDK -- is written in TypeScript and runs on Deno. No Python, Rust, or Java dependencies at runtime. (Your application need not be TypeScript: disc codegen also emits Rust and Go clients that speak the same HTTP API.)
SELECT, INSERT, UPDATE, DELETE, shapes, filters, ordering, pagination, aggregation, subqueries, parameters.CLI.* API for scripting Disc from Deno.DiscClient to run queries, manage transactions, subscribe to changes, and handle authentication.AuthManager SDK.deno bench suite.docker compose up./api/openapi.json.version.txt.