Build a modern Help Desk sample application on Marten + Wolverine.
Background
Marten used to carry a Helpdesk sample in-tree at src/samples/Helpdesk (originally derived from Oskar Dudycz's Helpdesk application). It has now been retired — see marten#5069 — because it had stopped compiling against current Marten some time ago and nothing in that repository was building it.
Marten's docs now point readers here for end to end samples, but there is no Help Desk equivalent in this repo, so that pointer currently leads nowhere for anyone looking for that specific application.
What it should cover
The retired sample exercised a useful slice of the stack, and a replacement is worth building deliberately rather than porting the old code:
- an event sourced
Incident aggregate with a realistic lifecycle — logged, categorised, prioritised, assigned, customer/agent responses, resolved, acknowledged, closed
- single stream projections for incident details and short info
- a multi stream projection for a per-customer incidents summary, including a custom grouper
- an inline projection alongside async ones, to show the trade-off
- optimistic concurrency via ETag /
If-Match on the HTTP endpoints
- Wolverine for command handling and messaging, rather than the hand-rolled mediator style the old sample used
- integration tests using Alba (the old sample used Ogooreck, which is xunit v2 bound and was part of why it had to go)
Notes for whoever picks this up
The API drift that killed the previous version is inventoried in marten#5078 — namespace moves into JasperFx.Events, SingleStreamProjection<TDoc, TId> gaining a second type argument, and changed IJasperFxProjection.ApplyAsync / IJasperFxAggregateGrouper.Group signatures. Useful as a checklist of what "current" looks like.
One lesson from the retirement: the old sample rotted precisely because it sat in its own solution, outside the main build and outside CI, so nothing ever compiled it. Whatever lands here should be in a build that actually runs.
Pairs with the Polecat + Wolverine version of the same application.
Build a modern Help Desk sample application on Marten + Wolverine.
Background
Marten used to carry a Helpdesk sample in-tree at
src/samples/Helpdesk(originally derived from Oskar Dudycz's Helpdesk application). It has now been retired — see marten#5069 — because it had stopped compiling against current Marten some time ago and nothing in that repository was building it.Marten's docs now point readers here for end to end samples, but there is no Help Desk equivalent in this repo, so that pointer currently leads nowhere for anyone looking for that specific application.
What it should cover
The retired sample exercised a useful slice of the stack, and a replacement is worth building deliberately rather than porting the old code:
Incidentaggregate with a realistic lifecycle — logged, categorised, prioritised, assigned, customer/agent responses, resolved, acknowledged, closedIf-Matchon the HTTP endpointsNotes for whoever picks this up
The API drift that killed the previous version is inventoried in marten#5078 — namespace moves into
JasperFx.Events,SingleStreamProjection<TDoc, TId>gaining a second type argument, and changedIJasperFxProjection.ApplyAsync/IJasperFxAggregateGrouper.Groupsignatures. Useful as a checklist of what "current" looks like.One lesson from the retirement: the old sample rotted precisely because it sat in its own solution, outside the main build and outside CI, so nothing ever compiled it. Whatever lands here should be in a build that actually runs.
Pairs with the Polecat + Wolverine version of the same application.