Skip to content

Build a modernized Help Desk sample on Marten + Wolverine #8

Description

@jeremydmiller

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions