Skip to main content
When you scaffold a project with voyant new, you get a working application shell wired to the framework. This page walks through what is inside and the commands you run day to day.

Configuration

A Voyant project is described by a voyant.config.ts manifest at its root. It declares which modules the app uses, and the framework reads it to assemble schemas, routes, and admin extensions. Inspect it at any time:
voyant config show       # print the resolved manifest
voyant config validate   # check it is well formed
voyant config path       # show which file was resolved

Environment and secrets

Local development uses two files:
  • .dev.vars holds worker secrets for local Cloudflare Workers. Copy it from the example the starter ships:
    cp .dev.vars.example .dev.vars
    
  • .env provides DATABASE_URL for Drizzle tooling and local worker processes.
    .env
    DATABASE_URL="postgres://user:password@localhost:5432/my_travel_app"
    
When you deploy to Voyant Cloud, secrets move into the managed Vault instead of local files.

Database workflow

The framework uses Drizzle ORM over PostgreSQL. The CLI proxies Drizzle Kit and adds Voyant-aware helpers:
voyant db generate       # generate a migration (timestamp-prefixed by default)
voyant db migrate        # apply migrations
voyant db studio         # open Drizzle Studio
voyant db push           # push schema directly (dev only)
voyant db sync-links     # emit link-table DDL for cross-module links
voyant db schemas        # print the manifest-derived schema list
voyant db doctor         # report migration and schema drift
See Data model for how schemas and links fit together.

Preflight checks

Before deploying, run the doctor to catch configuration drift between your env types, wrangler.jsonc, database, and admin manifest:
voyant doctor            # run all preflight gates
voyant doctor --strict   # fail on warnings too

Running locally

The operator starter serves on port 3300:
pnpm dev
For workflow development, the CLI can watch and hot-reload your workflow definitions on their own:
voyant dev --file ./src/workflows.ts

Common scripts

The starters expose a consistent set of package scripts:
CommandWhat it does
pnpm installInstall dependencies
pnpm devStart the dev server
pnpm db:migrateApply database migrations
pnpm buildBuild the app
pnpm typecheckRun TypeScript checks
pnpm testRun tests

How code is organized

The framework draws a hard line between reusable logic and app-specific wiring:
  • Packages (the @voyant-travel/* dependencies) hold business logic, schemas, services, routes, adapters, and contracts. You consume them as ordinary versioned dependencies.
  • Your app shell owns UI, auth wiring, deployment configuration, and the voyant.config.ts manifest that ties chosen modules together.
This keeps upgrades clean: you bump module versions like any other dependency, and your app-specific code stays put.

Next steps

Add a module

Generate a new domain module with the CLI.

Data model

Schemas, links, and migrations in depth.