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>-contractsdescribes the wire types shared between server and client.@voyant-travel/<domain>-reactprovides hooks, clients, query keys, view-model helpers, and reusable components for that domain.
@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.