ModelingEvolution.Booking 1.0.0-preview.1
ModelingEvolution.Booking
Meeting booking as an event-sourced module on MicroPlumberd 1.2.x / KurrentDB: one BookingCalendar-{mailbox}
stream arbitrates non-overlap of meetings on a mailbox (optimistic concurrency — a lost version race retries once,
then refuses as slot_taken); each booking lives on its own Booking-{BookingId} stream (MeetingBooked,
MeetingCancelled); availability is synced from O365 and offered per meeting type; bookings carry an
ExternalReference (kind:value) a consumer uses to find them again.
builder.Services.AddPlumberd(KurrentDBClientSettings.Create(connectionString));
builder.Services.AddBooking(builder.Configuration); // command handlers, read models, calendar integration (Booking:* options)
Read models: BookingLookupModel (by id / by reference), AvailableSlotsModel, BookingConfigModel.
The concurrency invariant is tested against a real KurrentDB in the source repository
(RealStoreSlotArbitrationTests), on both the pre- and post-1.2 client libraries.
No packages depend on ModelingEvolution.Booking.
.NET 10.0
- MicroPlumberd (>= 1.2.2)
- MicroPlumberd.Services (>= 1.2.2)
- MicroPlumberd.SourceGenerators (>= 1.2.2)
- ModelingEvolution.JsonParsableConverter (>= 1.0.1)
| Version | Downloads | Last updated |
|---|---|---|
| 1.0.0-preview.11 | 0 | 08/19/2026 |
| 1.0.0-preview.10 | 0 | 08/19/2026 |
| 1.0.0-preview.9 | 0 | 08/19/2026 |
| 1.0.0-preview.8 | 6 | 08/17/2026 |
| 1.0.0-preview.7 | 0 | 08/17/2026 |
| 1.0.0-preview.6 | 5 | 08/17/2026 |
| 1.0.0-preview.5 | 1 | 08/17/2026 |
| 1.0.0-preview.4 | 3 | 08/17/2026 |
| 1.0.0-preview.3 | 0 | 08/17/2026 |
| 1.0.0-preview.2 | 3 | 08/17/2026 |
| 1.0.0-preview.1 | 0 | 08/17/2026 |