Sample apps/Production pattern

Place Contribution Desk

Embed the public Add a Place form, preserve contributor-reported submission as testimony, reconcile independently, and close only with attributable publication evidence.

JourneyProduction pattern
Draft → open → report → reconcile → publish, reject, or withdraw
Node.jsResponsive operations UIAdd a Place iframeReconciliation evidence ledger

A small app with production bones.

The download separates browser experience, command API, Mappls adapter, aggregate state, audit history, transactional outbox, fixtures, tests, and deployment guidance.

01Experience
02Mappls adapter
03Journey state
04Events + recovery
05Observability

Implemented and verified.

17 implemented capabilitiesResponsive contribution operations desk · Corrected public iframe query shape · No undocumented submission endpoint · No invented callback or receipt · Contributor testimony separated from provider evidence · Seven explicit lifecycle states · Immutable widget attempts · Mappls Pin evidence validation · Allow-listed evidence sources · Explicit application-side withdrawal boundary · Rejection and immutable retry · Idempotent commands · Optimistic concurrency · Append-only audit events · Transactional outbox · Atomic restart recovery · Credential-free fixture mode
Browser application

A responsive operations console backed by the included JSON API.

Durable domain

Aggregate snapshots, audit events, idempotency records, evidence, and outbox entries are committed together.

Fixture adapter

A credential-safe provider boundary aligned to named Mappls endpoint contracts.

Executable tests

8 tests covering lifecycle, HTTP, replay, conflicts, domain recovery, and restart behavior.

Architecture notes

Trust boundaries, aggregate invariants, adapter ownership, evidence lineage, and recovery design.

Deployment guide

Database, identity, secrets, outbox, privacy, observability, migration, and rollback work.