Skip to main content

Invoice

A simple invoice example project can be found on the project's github. It shows off a small EquinoxJS application that allows registering payers and raising invoices against them.

This is the "ordinary application" example. It shows that you do not need a workflow or integration-heavy scenario to get value from EquinoxJS; the same primitives work well for a straightforward service with a read model and a reaction.

This example is useful as a counterweight to the hotel example. Where the hotel app shows a process manager composed from deciders and reactions, the invoice app shows the simpler end of the spectrum: a conventional service with a read model and a reaction.

Components

What It Demonstrates

  • A straightforward service-oriented EquinoxJS application
  • A category-driven reaction that performs side effects
  • A PostgreSQL read model alongside the write model
  • Correlation and causation metadata flowing through the system
  • The smaller end of the same model that also scales to the hotel workflow example

Tech used

  • EquinoxJS
  • zod to create upcasters and validators
  • ramda for functional utilities
  • express for serving HTTP requests