Awesome
Equinox Tutorial
Practical example for learning how to model a bi-temporal domain using Jet.com's Equinox Event Sourcing Platform.
Features
- Bi-temporal, event sourced API in F# using Jet.com's Equinox platform and gRPC :milky_way:.
- Protobuf files compiled with Uber's Prototool :wrench:.
- Fully typed GraphQL API using FSharp.Data.GraphQL :fireworks:.
- Centralized logging with Seq :scroll:.
- Web application using React and TypeScript :computer:.
- Fully Dockerized for fast local development :whale:.
- Integration tests and example CI using GitHub Actions :zap:.
- Build automation using FAKE :hammer:.
The domain model is a lease, such as a car lease. A more detailed explanation about the motivation for modeling a bi-temporal domain can be found in the accompanying blog post.
TL;DR
docker-compose up -d --build web-app
Endpoints:
- http://localhost:2113 -> Event Store UI (database; user:admin password:changeit)
- http://localhost:8081 -> Seq UI (logging)
- http://localhost:3000 -> Web application
Structure
equinox-tutorial
├── README.md --> You are here
├── .github --> CI/CD
├── docker-compose.yml --> Dockerization
├── web-app --> Web application
├── graphql-api --> GraphQL API
├── lease-api --> Lease gRPC API (business logic)
└── protos --> Protobuf files
Screenshots
Application
GraphQL Playground
Seq Logs
Event Store