TypebaseTypebase
CLI

typebase-io-cli generate-server

Generate server files locally for custom hosting or inspection.

Last updated on

The generate-server command builds your server files locally instead of deploying them. This is useful when you want to:

  • Self-host your server on your own infrastructure
  • Inspect the generated code to understand what Typebase produces
  • Customize the deployment process beyond what npx typebase-io-cli deploy offers

Quick start

npx typebase-io-cli generate-server

This generates a complete, runnable server in the typebase/_server/ directory (by default).

Output formats

You can choose between three output formats:

TypeScript (default)

npx typebase-io-cli generate-server --output ts

Generates TypeScript source files. You'll need to compile them yourself before running.

ESM (ECMAScript Modules)

npx typebase-io-cli generate-server --output esm

Generates JavaScript files using import/export syntax. Ready to run with Node.js (with "type": "module") or Deno.

CommonJS

npx typebase-io-cli generate-server --output cjs

Generates JavaScript files using require/module.exports syntax. Ready to run with Node.js without "type": "module".

HTTP adapters

Typebase supports multiple HTTP adapters. The adapter determines how your server handles incoming HTTP requests:

AdapterDescriptionBest for
nodeNode.js built-in http.createServerSelf-hosting with Node.js (default)
bunBun's built-in HTTP serverSelf-hosting with Bun
honoHono frameworkVercel, general-purpose
fastifyFastify frameworkHigh-performance Node.js
denoDeno's built-in Deno.serveDeno Deploy
cloudflareCloudflare Workers fetch handlerCloudflare Workers
npx typebase-io-cli generate-server --adapter hono
npx typebase-io-cli generate-server --adapter node
npx typebase-io-cli generate-server --adapter fastify

Options

FlagDescriptionDefault
--output <type>Output format: ts, esm, or cjsts
--adapter <adapter>HTTP adapter: node, bun, hono, fastify, deno, cloudflarenode
--skip-load-envDon't include dotenv/config importfalse
--out-dir <path>Output directory for generated files_server
--port <number>Port the generated server listens on8080

Default configuration

You can set defaults in your typebase.json so you don't have to pass flags every time:

typebase.json
{
  "server": {
    "output": "esm",
    "adapter": "hono",
    "skipLoadEnv": false,
    "outDir": "_server",
    "port": 8080
  }
}

See the Configuration page for all available options.

What gets generated

The generated server directory contains:

_server/
  src/
    index.ts          # Server entry point (with the chosen adapter)
    _generated/
      server.ts       # Action builder and middleware setup
    actions/          # Your action files (copied and processed)
    db/               # Your schema and relations (if applicable)
    auth.ts           # Your auth config (if applicable)
  package.json        # Dependencies for the server
  tsconfig.json       # TypeScript config

Running the generated server

After generating the server, you can run it like any Node.js project:

cd typebase/_server

# Install dependencies
npm install

# Run (if TypeScript output)
npx tsx src/index.ts

# Run (if ESM output)
node src/index.js

# Run (if CJS output)
node src/index.js

The server starts on port 8080 by default. Override it with --port or the server.port field in typebase.json.

On this page