Catalog
Phase 2.x β MCP (Model Context Protocol) server scaffolding for the catalog plane. Wraps the catalog plane's APIs as agent-callable tools so AI assistants (Claude, ChatGPT plugins, custom agents) connect with tenant-scoped credentials and call tools rathe
Ask AI about Catalog
Powered by Claude Β· Grounded in docs
I know everything about Catalog. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
Voyant
Voyant is an open-source framework for travel companies. It ships starter apps, durable workflow orchestration, and a wide set of headless domain modules β CRM, products, availability, bookings, finance, distribution, resources, legal, charters, cruises, and more β that you can compose into your own travel platform.
CLI | DMC Template | Operator Template | Packages | Examples | Migrations
Get started
1. Install the CLI
npm install -g @voyantjs/cli
You can also use pnpm add -g @voyantjs/cli.
2. Scaffold a project from a starter
voyant new my-travel-app --template dmc
cd my-travel-app
pnpm install
Built-in starters are downloaded from the matching GitHub Release for your installed CLI version. You can also point --template at a custom local starter directory.
3. Configure the app
cp .dev.vars.example .dev.vars
Set your secrets in .dev.vars and provide DATABASE_URL in .env for Drizzle and local worker processes.
4. Run the app
pnpm db:migrate
pnpm dev
Starter templates
Voyant ships two first-party starters:
| Starter | Purpose | Stack |
|---|---|---|
templates/dmc | Destination management company workflows | Cloudflare Workers, TanStack Start, Hono, Better Auth, Drizzle |
templates/operator | Tour operator workflows | Cloudflare Workers, TanStack Start, Hono, Better Auth, Drizzle |
What you get
- Deployable application shells, not just isolated packages
- A normalized travel operations data model on PostgreSQL + Drizzle
- Headless domain modules for CRM, catalog, availability, bookings, finance, legal, resources, charters, cruises, and more
- Hono-based API transport with optional Next.js route helpers
- Step-based durable workflow orchestration that runs on Cloudflare Workers + Durable Objects, Node, or Voyant Cloud
- Better Auth wiring in first-party starters, with core packages staying auth-provider agnostic
- A shadcn-style component registry per domain (
crm-ui,products-ui,bookings-ui, β¦) for installable UI blocks - React hook libraries (
crm-react,products-react,bookings-react, β¦) that wrap the HTTP contract of each module - Optional integrations for payments, e-invoicing, storage, CMS sync, and notifications
The framework surface
Core platform
@voyantjs/core,@voyantjs/db,@voyantjs/hono,@voyantjs/next,@voyantjs/react@voyantjs/auth,@voyantjs/auth-react,@voyantjs/types,@voyantjs/utils,@voyantjs/voyant-test-utils@voyantjs/cli,@voyantjs/storage,@voyantjs/i18n
Travel domain modules
@voyantjs/crm,@voyantjs/suppliers,@voyantjs/products,@voyantjs/availability@voyantjs/booking-requirements,@voyantjs/resources,@voyantjs/transactions,@voyantjs/bookings@voyantjs/finance,@voyantjs/notifications,@voyantjs/checkout,@voyantjs/legal@voyantjs/distribution,@voyantjs/markets,@voyantjs/pricing,@voyantjs/extras,@voyantjs/sellability@voyantjs/facilities,@voyantjs/hospitality,@voyantjs/ground,@voyantjs/identity,@voyantjs/external-refs,@voyantjs/octo@voyantjs/charters,@voyantjs/cruises,@voyantjs/storefront,@voyantjs/customer-portal,@voyantjs/storefront-verification
Workflows (durable orchestration)
Step-based workflows with durable state, retries, and a shared wire protocol β runnable on Cloudflare Workers + Durable Objects, Node, or Voyant Cloud.
@voyantjs/workflowsβ authoring SDK@voyantjs/workflows-orchestratorβ reference orchestrator core@voyantjs/workflows-orchestrator-cloudflareand@voyantjs/workflows-orchestrator-nodeβ runtime adapters@voyantjs/workflows-bindings,@voyantjs/workflows-config,@voyantjs/workflows-errors@voyantjs/workflows-reactβ UI hooks for run inspection
Reference apps under apps/ compose these into deployable shapes β workflows-orchestrator-worker, workflows-tenant-worker, workflows-selfhost-cloudflare-worker, workflows-selfhost-node-server, workflows-node-step-container, and workflows-local-dashboard.
UI registries and React families
Each domain module has matching -ui (shadcn registry source) and -react (hooks + provider) packages β for example @voyantjs/crm-ui + @voyantjs/crm-react, @voyantjs/bookings-ui + @voyantjs/bookings-react, and so on across products, finance, availability, distribution, markets, pricing, legal, resources, facilities, hospitality, suppliers, identity, external-refs, charters, cruises, extras, sellability, booking-requirements. The shared admin shell lives in @voyantjs/admin; cross-cutting primitives in packages/ui.
Plugins
@voyantjs/plugin-netopiaβ Netopia payments@voyantjs/plugin-smartbillβ SmartBill e-invoicing (Romanian tax compliance)@voyantjs/plugin-payload-cmsβ Payload CMS sync@voyantjs/plugin-sanity-cmsβ Sanity CMS sync
For contributors
This repository is the workspace that powers the framework, starters, runners, and examples.
| Area | What it contains |
|---|---|
packages/* | Reusable business logic, schemas, services, transport adapters, and integrations |
packages/plugins/* | First-party plugin bundles (payments, invoicing, CMS sync) |
templates/* | First-party starter apps |
apps/dev | Internal playground for broader module coverage |
apps/registry | Hosted shadcn registry for installable Voyant UI components |
apps/workflows-* | Reference orchestrator/tenant/self-host workers and the local workflows dashboard |
apps/scripts | Workspace scripts (e.g. seed operator data) |
examples/* | Reference apps that consume Voyant surfaces (e.g. nextjs-booking-portal) |
Monorepo commands
| Command | Description |
|---|---|
pnpm install | Install workspace dependencies |
pnpm build | Build the workspace with Turborepo |
pnpm typecheck | Run workspace typechecks |
pnpm test | Run workspace tests |
pnpm test:bookings:integration | Start or reuse the Docker test Postgres, ensure the bookings test schema, and run the bookings integration files serially |
pnpm lint | Run Biome checks across the repo |
pnpm generate:schema-docs | Regenerate SCHEMA.md from the Drizzle table definitions |
pnpm registry:build | Aggregate per-package shadcn registries into apps/registry/public/r/ |
pnpm -F dmc dev | Start the DMC template on port 3100 |
pnpm -F operator dev | Start the operator template on port 3300 |
pnpm -F dev dev | Start the internal playground on port 3200 |
Integration test database
The shared Docker test Postgres is defined in docker-compose.test.yml.
- default host port:
5436 - override with
TEST_DATABASE_PORT - override the full connection string with
TEST_DATABASE_URL
For the bookings package, contributors can use:
pnpm test:bookings:integration
That helper starts or reuses the Docker test DB, applies template migrations, ensures the current additive bookings-session table exists, and runs the bookings DB-backed integration files serially to avoid deadlocks from concurrent table truncation.
Architecture
Voyant keeps a strict boundary:
packages/*hold reusable business logic, schemas, services, routes, adapters, and contractstemplates/*and app shells own UI, auth wiring, deployment shape, and runtime-specific configuration- Core packages stay framework-agnostic even when first-party starters use React, TanStack Start, Hono, Better Auth, and Cloudflare Workers
- Transport adapters stay thin and call shared domain services rather than owning business logic
- Workflow business logic ships as plain SDK packages; orchestrator/runner apps wrap them for a given runtime
Architecture decisions live in docs/adr/; domain conventions live in docs/architecture/; per-minor migration notes live in docs/migrations/.
Security model
One Postgres database + one runtime per organization. Tenancy is enforced at the deployment boundary, not by in-process middleware. See ADR-0001 for the full rationale, the alternatives considered, and the conditions under which the decision should be revisited.
Credits
Voyant is created and maintained by PixelMakers.
License
Apache License, Version 2.0 (Apache-2.0). See LICENSE.
