Skip to main content
A Voyant application is assembled from domain modules. Each module owns one subdomain of the travel business: its tables, its services, its HTTP routes, and its React UI. You install the ones you need and link them together. This page is the index. For the internal shape behind these modules, see How Voyant is built.

How a module is packaged

A single domain ships as a small family of packages:
  • @voyant-travel/<domain> is the headless core: Drizzle schema, services, and HTTP routes.
  • @voyant-travel/<domain>-contracts describes the wire types shared between server and client.
  • @voyant-travel/<domain>-react provides hooks, clients, query keys, view-model helpers, and reusable components for that domain.
For example, bookings ships as @voyant-travel/bookings, @voyant-travel/bookings-contracts, and @voyant-travel/bookings-react.

Selling and sourcing

Sales and relationships

Commitment and operations

Money and compliance

Travel verticals

Platform packages

These are not domain modules, but the runtime and surfaces everything builds on: @voyant-travel/core, @voyant-travel/db, @voyant-travel/hono, @voyant-travel/auth, @voyant-travel/storage, @voyant-travel/i18n, the Public API, and the admin shell. There are also supporting modules such as catalog-authoring, identity, and octo (OCTO-standard connectivity for tours and activities).
Each headless module has matching -contracts and -react packages where a UI surface exists. The tables list the core module name; install the family that fits your app.

Next steps

How modules work

The internal shape, at the altitude you need to use the API.

Links

How modules relate without coupling.

Data models

How module schemas are authored.

Glossary

The vocabulary these modules share.