skemio.tech
Documentation

Getting Started

Everything you need to design, build, and export database schemas with Skemio.

1

Installation & Setup

Install the Skemio CLI and authenticate with your account to get started.

Terminal
# Install the Skemio CLI globally
npm install -g @skemio/cli

# Authenticate with your account
skemio auth login

# Initialize a new project
skemio init my-database
You can also use Skemio directly in the browser at /studio without installing the CLI.
2

Creating Your First Schema

Initialize a schema with a name, target database, and description.

TypeScript
// Create a new schema programmatically
import { Skemio } from "@skemio/sdk";

const skemio = new Skemio({ apiKey: process.env.SKEMIO_API_KEY });

const schema = await skemio.schemas.create({
  name: "my-app-db",
  database: "postgresql",
  description: "Main application database",
});
3

Adding Tables & Attributes

Define tables with typed attributes, constraints, and default values.

TypeScript
// Add a users table
await skemio.tables.create(schema.id, {
  name: "users",
  attributes: [
    { name: "id", type: "uuid", primaryKey: true, default: "gen_random_uuid()" },
    { name: "email", type: "varchar(255)", unique: true, notNull: true },
    { name: "name", type: "varchar(255)", notNull: true },
    { name: "created_at", type: "timestamp", default: "now()" },
  ],
});
Attribute names must be unique within a table. Using duplicate names will throw a validation error.
4

Defining Relationships

Connect tables with foreign key relationships and cascade rules.

TypeScript
// Define a one-to-many relationship
await skemio.relationships.create(schema.id, {
  from: { table: "users", attribute: "id" },
  to: { table: "posts", attribute: "author_id" },
  type: "one-to-many",
  onDelete: "CASCADE",
});
5

Exporting Code

Export your schema to production-ready code in your preferred language and ORM.

Terminal
# Export to TypeScript (Drizzle ORM)
skemio export --schema my-app-db --lang typescript --orm drizzle

# Export to Python (SQLAlchemy)
skemio export --schema my-app-db --lang python --orm sqlalchemy

# Export raw SQL migrations
skemio export --schema my-app-db --format sql --output ./migrations
Pro and Enterprise plans support all export formats. Free tier is limited to TypeScript output.

Key Concepts

Schema

A complete database design containing tables, relationships, and constraints.

Table

A data entity with named attributes, types, and constraints like PK/FK.

Attribute

A column in a table with a data type, default value, and optional constraints.

Relationship

A connection between tables — one-to-one, one-to-many, or many-to-many.

Migration

A versioned set of SQL statements that evolves your database schema.

Workspace

An isolated environment containing schemas, settings, and team members.

Canvas Controls

ScrollZoom in/out
Space + DragPan canvas
Ctrl + ClickMulti-select tables
Ctrl + ASelect all
Ctrl + 0Reset zoom
Ctrl + FFit to screen

Troubleshooting

Tables are not rendering on the canvas

Clear your browser cache and ensure WebGL is enabled. Try disabling browser extensions that may interfere with canvas rendering.

Export generates empty files

Ensure your schema has at least one table with one attribute. Check the output language selector in the export dialog.

Real-time sync is delayed

Check your network connection. Skemio requires a stable WebSocket connection for real-time collaboration.

CLI authentication fails

Run `skemio auth login` to re-authenticate. Ensure your API key hasn't expired in Settings > API Keys.

API Reference

Method
Endpoint
Description
GET/api/v1/schemasList all schemas in your workspace
POST/api/v1/schemasCreate a new schema
GET/api/v1/schemas/:idGet schema by ID with all tables
PUT/api/v1/schemas/:idUpdate an existing schema
POST/api/v1/schemas/:id/exportExport schema to code
DELETE/api/v1/schemas/:idDelete a schema

Need More Help?

Join our community or reach out to support at hello@skemio.tech.