A TypeScript event sourcing framework with DynamoDB storage, Effect-TS integration, and comprehensive tooling.
Prerequisites: mise is recommended for automatic tool setup.
- Install Tools & Dependencies:
mise install
will set up the correct versions of Node.js, pnpm, and other tools. - Run Commands: Use
just
to see and run all common tasks.
just # Show all available commands
just build # Build all packages (with Turbo caching)
just test # Run all tests
just lint # Run linting
just release # Start an interactive release
For manual setup without mise, see Development Tooling.
- Type Safety: Strict TypeScript with composite builds.
- Intelligent Caching: Turbo only rebuilds what has changed.
- Real Dependency Testing: Uses Testcontainers instead of mocks.
- Automated Releases: Conventional commits drive versioning.
- Synchronized Versioning: All packages share the same version.
- Comprehensive Tooling:
mise
+just
for a streamlined workflow.
packages/core
: Core event system and domain types.packages/dynamo-event-store
: DynamoDB event storage implementation.packages/effects
: Effect-TS integrations for AWS services.packages/fastify
: Web server with OpenAPI support.packages/nats
: NATS messaging implementation.packages/common
: Shared utilities (e.g., retry, sleep).packages/cypher
: Encryption and decryption utilities.samples/receipts
: An example application demonstrating usage.tools/events
: Internal CLI tools.
This project uses conventional commits to automate versioning and releases.
fix:
triggers a patch release.feat:
triggers a minor release.feat!:
or aBREAKING CHANGE:
footer triggers a major release.
To release, run just release
for an interactive, guided process. For more details, see the Release Process Documentation.
- Run
mise install
to set up the development environment. - Use conventional commits for all changes (enforced by git hooks).
- Run
just build
before submitting a pull request.
- Coding Practices: Standards and patterns for development.
- Release Process: Detailed release workflow.
- Development Tooling: Guide to tools and setup.