Context map
The eight bounded contexts of Baseleg. The v1 spine (People, Aircraft, Scheduling) is the primary delivery focus. All other contexts are intentionally lite until the spine is reliable.
v1 primary
v1 lite
adapter
v1 spine
<a href="/domain/bounded-contexts/people/" style="text-decoration:none;display:block;background:color-mix(in srgb,var(--docs-secondary) 12%,#ffffff);border:2px solid var(--docs-secondary);border-radius:10px;padding:14px 16px">
<div style="font-weight:700;color:var(--docs-primary);margin-bottom:4px">People</div>
<div style="font-size:0.75rem;color:color-mix(in srgb,var(--docs-primary) 60%,transparent);line-height:1.4">Members · students · instructors · staff · identity & roles</div>
</a>
<a href="/domain/bounded-contexts/aircraft/" style="text-decoration:none;display:block;background:color-mix(in srgb,var(--docs-secondary) 12%,#ffffff);border:2px solid var(--docs-secondary);border-radius:10px;padding:14px 16px">
<div style="font-weight:700;color:var(--docs-primary);margin-bottom:4px">Aircraft</div>
<div style="font-size:0.75rem;color:color-mix(in srgb,var(--docs-primary) 60%,transparent);line-height:1.4">Fleet registry · airworthiness state · grounded protection</div>
</a>
<a href="/domain/bounded-contexts/scheduling/" style="text-decoration:none;display:block;background:color-mix(in srgb,var(--docs-secondary) 12%,#ffffff);border:2px solid var(--docs-secondary);border-radius:10px;padding:14px 16px">
<div style="font-weight:700;color:var(--docs-primary);margin-bottom:4px">Scheduling</div>
<div style="font-size:0.75rem;color:color-mix(in srgb,var(--docs-primary) 60%,transparent);line-height:1.4">Bookings · conflict detection · calendar views</div>
</a>
MemberId →
booking owner
& instructor ref
booking owner
& instructor ref
Scheduling
→ AircraftId
+ grounded
state check
+ grounded
state check
v1 lite
<a href="/domain/bounded-contexts/training/" style="text-decoration:none;display:block;background:var(--docs-surface-2);border:1px solid var(--docs-border);border-radius:10px;padding:14px 16px">
<div style="display:flex;justify-content:space-between;align-items:baseline">
<div style="font-weight:700;color:var(--docs-primary);margin-bottom:4px">Training</div>
<div style="font-size:0.65rem;color:color-mix(in srgb,var(--docs-primary) 40%,transparent)">lite</div>
</div>
<div style="font-size:0.75rem;color:color-mix(in srgb,var(--docs-primary) 55%,transparent);line-height:1.4">Lessons · flight records · endorsements · training progression</div>
</a>
<a href="/domain/bounded-contexts/compliance/" style="text-decoration:none;display:block;background:var(--docs-surface-2);border:1px solid var(--docs-border);border-radius:10px;padding:14px 16px">
<div style="display:flex;justify-content:space-between;align-items:baseline">
<div style="font-weight:700;color:var(--docs-primary);margin-bottom:4px">Compliance</div>
<div style="font-size:0.65rem;color:color-mix(in srgb,var(--docs-primary) 40%,transparent)">lite</div>
</div>
<div style="font-size:0.75rem;color:color-mix(in srgb,var(--docs-primary) 55%,transparent);line-height:1.4">Currency tracking · compliance alerts · document expiry</div>
</a>
<a href="/domain/bounded-contexts/billing/" style="text-decoration:none;display:block;background:var(--docs-surface-2);border:1px solid var(--docs-border);border-radius:10px;padding:14px 16px">
<div style="display:flex;justify-content:space-between;align-items:baseline">
<div style="font-weight:700;color:var(--docs-primary);margin-bottom:4px">Billing</div>
<div style="font-size:0.65rem;color:color-mix(in srgb,var(--docs-primary) 40%,transparent)">lite</div>
</div>
<div style="font-size:0.75rem;color:color-mix(in srgb,var(--docs-primary) 55%,transparent);line-height:1.4">Charge items · invoice drafts · invoice lifecycle</div>
</a>
<a href="/domain/bounded-contexts/reporting/" style="text-decoration:none;display:block;background:var(--docs-surface-2);border:1px solid var(--docs-border);border-radius:10px;padding:14px 16px">
<div style="display:flex;justify-content:space-between;align-items:baseline">
<div style="font-weight:700;color:var(--docs-primary);margin-bottom:4px">Reporting</div>
<div style="font-size:0.65rem;color:color-mix(in srgb,var(--docs-primary) 40%,transparent)">lite</div>
</div>
<div style="font-size:0.75rem;color:color-mix(in srgb,var(--docs-primary) 55%,transparent);line-height:1.4">Operational reports · data exports · summaries</div>
</a>
adapter
Notifications
no domain rules of its own
Email · SMS · in-app delivery · triggered by events from all other contexts
Cross-context rules
Contexts communicate by identifier only — never by importing another context’s domain package.
| From | To | What is shared |
|---|---|---|
| Scheduling | People | MemberId (booking owner, instructor) |
| Scheduling | Aircraft | AircraftId + grounded/available status |
| Training | People | MemberId (student, instructor) |
| Training | Scheduling | BookingId (optional lesson → booking link) |
| Billing | Scheduling | BookingId (charge items linked to bookings) |
| Billing | People | MemberId (invoice recipient) |
| Compliance | People | MemberId (currency per member) |
| Compliance | Aircraft | AircraftId (airworthiness documents) |
| Notifications | All | Receives events; reads Member contact details |
| Reporting | All | Read-model queries via infrastructure only |
See Context map for the full written description.