Sixième Étoile — Documentation

Data Model Overview

Prisma multi-file schema layout, bounded-context grouping, and how the data model mirrors the API route structure.

Sixième Étoile uses a Prisma multi-file schema split across bounded-context files under packages/database/prisma/schema/. Each file groups the models that belong to a single business domain, mirroring the API route structure (/vtc/contacts, /vtc/quotes, /vtc/missions, etc.).

Schema file layout

FileDomainKey models
base.prismaGenerator / datasourcePrisma client config, Zod generator
enums.prismaShared enumerationsAll enums (TripType, QuoteStatus, MissionStatus, …)
auth.prismaIdentity & multi-tenancyUser, Organization, Member, Session, Invitation
crm.prismaContacts & CRMContact, EndCustomer, CrmActivity, AgencyValidationRule
quotes.prismaCommercial layerQuote, QuoteLine, BlockTemplate
orders.prismaOrders & contractsOrder, PartnerContract, SubcontractorProfile
missions.prismaOperationsMission, MissionExpense
mission-transitions.prismaMission lifecycleMissionTransition
billing.prismaFinanceInvoice, InvoiceLine, InvoicePayment, BankAccount, DocumentCounter
fleet-vehicles.prismaFleetVehicle, VehicleCategory, OperatingBase, LicenseCategory
fleet-drivers.prismaDriversDriver, DriverLicense, DriverCalendarEvent, DriverRSECounter, DriverReview
pricing-config.prismaPricing engine configOrganizationPricingSettings, AdvancedRate, SeasonalMultiplier, OptionalFee, Promotion
pricing-zones.prismaGeographic pricingPricingZone, ZoneRoute, ExcursionPackage, DispoPackage
agency-portal.prismaAgency portalAgencyPortalUser, StaffDelegation
tracking.prismaCustomer trackingTrackingToken, TrackingMessage, TrackingNotification
driver-location.prismaReal-time GPSDriverLocation, DriverLocationHistory
documents.prismaDocument managementDocument
driver-documents.prismaDriver legal docsDriverDocument
audit.prismaAudit trailComplianceAuditLog, QuoteStatusAuditLog, QuoteNotesAuditLog
activity.prismaBusiness event logActivity
broadcast.prismaDispatch broadcastsBroadcast, BroadcastRecipient
notifications.prismaPush notificationsPushSubscription, SilentAlert
email.prismaEmail systemEmailConfig, EmailTemplate, EmailLog
finance-portal.prismaFinance magic linksFinanceMagicLink
export-job.prismaExport jobsExportJob
developer.prismaDeveloper APIsApiKey, WebhookConfig, AuditLog
maps-cache.prismaMaps & toll cacheTollCache, MapsCacheEntry
realtime.prismaSSE real-timeSseEvent

Bounded-context grouping

The schema follows the same bounded-context boundaries as the Hono API:

packages/api/src/routes/vtc/
├── contacts.ts          →  crm.prisma
├── quotes.ts            →  quotes.prisma
├── missions.ts          →  missions.prisma + mission-transitions.prisma
├── orders.ts            →  orders.prisma
├── invoices.ts          →  billing.prisma
├── fleet/               →  fleet-vehicles.prisma + fleet-drivers.prisma
├── pricing/             →  pricing-config.prisma + pricing-zones.prisma
├── agency/              →  agency-portal.prisma
└── tracking/            →  tracking.prisma + driver-location.prisma

Keeping schema files aligned with API route files makes it easy to locate the Prisma model for any endpoint without a global search.

Multi-tenancy: organizationId on every VTC model

Every business model carries an organizationId foreign key to Organization. Row-level isolation is enforced in every API handler via this column — no query fetches data across organization boundaries.

Organization
└── Contact / Quote / Mission / Invoice / Vehicle / Driver / …
      └── all scoped to organizationId

The Organization model is managed by Better Auth and serves as the top-level tenant.

Core data flow

Contact ──────────┐

              Quote ────── QuoteLine ───── Mission
                │                              │
                ▼                              ▼
             Invoice ── InvoiceLine        MissionTransition


            InvoicePayment

An Order optionally groups multiple quotes, missions, and invoices under a single reference (ORD-2026-001).

Section pages

PageContents
Core entitiesOrganization, Contact, Quote, Mission, Driver, Vehicle
RelationshipsFK graph, nullable quoteId, multi-tenancy
Constraints & semanticsHT pricing, vatRate format, TripType enum, key indexes

See also: API Reference — every route maps back to the models described here.

Was this page helpful?

On this page