We did the first of a three meetup series where we implement a CQRS/ES microservice based system, start to finish. Thanks all who made it on Thursday, hope to see you for the next one on June 14th! If you aren’t in Vancouver, BC – we’ll be streaming the session.
Requirements: Event stormed, of course!
We never did find a better, simpler and more entertaining way to understand requirements than event storming, so we did that. Participants settled on building an electric scooter sharing system, like Vancouver’s MobiBikes but with charging stations. Lively discussions about the ubiquitous language of the “scooter sharing” bounded context was ongoing when the evening ended. Here’s one possible “happy path” which tells the story of a scooter being added to the inventory, assigned to a docking/charging station and being checked out by a member (click to enlarge):
To try it out, copy/paste the following into webeventstorming.com:
# Scooter Sharing
Add Dockingstation-> lat, long, description
Dockingstation Added // lat, long, description
Dockingstation Lookup* // dockingstationId, lat, long, description
Add Scooter to Inventory-> serialNumber
Scooter Added To Inventory // serialNumber
ScooterLookup* //scooterId, serialNumber
Move Scooter to Dockingstation-> dockingstationId, scooterId
Dockingstation Inventory Added // dockingstationId, scooterId, dateTime
Scooter Charging Started // dockingstationId, scooterId, dateTime
Scooter Battery Charging Log* // scooterId, serialNumber, dockingstationId, chargingStartTime, chargingEndTime
Register Scooter Sharing Member-> email
Member Registered // email
Member Lookup* // memberId, email
Check out scooter-> // scooterId, memberId, dockingstationId, dateTime
Scooter Checked Out // scooterId, memberId, dockingstationId, dateTime
Scooter Charging Ended // scooterId, dateTime
Return Scooter-> scooterId, dockingstationId, dateTime, memberId
Scooter Returned // scooterId, dockingstationId, dateTime, memerId
Scooter Charging Started
The next session is on June 14th:
- User Experience. We’ll design ourselves a nice UI, starting from the event storming, with dotted lines from screen mockups to commands showing how the user journey unfolds.
- Building the Scooter Sharing API. We’ll take the “Event Markdown” and turn it directly into NodeJS using some tooling Adaptech have recently open soured. This is going to be an event sourced system which using the Eventstore database and (optionally) Postgres or Cassandra for queries and lookups. There’s a tutorial at https://docs.letseventsource.org/ if you’d like to get a head start.
See you there!
By Robert Reppel