A TypeScript event sourcing framework with DynamoDB storage, Effect-TS integration, and comprehensive tooling.
Prerequisites: mise or Node.js 22.15.1+ and pnpm 10.11.0+
# Setup (with mise)
mise install
# Install and build
pnpm install
pnpm build
# Test and lint
pnpm test
pnpm lint
Core Packages:
packages/core
- Event system and domain typespackages/dynamo-event-store
- DynamoDB event storagepackages/effects
- Effect-TS AWS integrationspackages/fastify
- Web server with OpenAPI support
Utilities:
packages/common
- Shared utilities (retry, sleep, encoders)packages/cypher
- Encryption/decryption (AES, RSA)tools/events
- CLI tools
Uses pnpm catalog for centralized version management:
pnpm deps:check # Check outdated dependencies
pnpm deps:sync # Update catalog to latest versions
pnpm deps:verify # Verify catalog consistency
- TypeScript with strict configuration and composite builds
- Effect-TS for functional programming and dependency management
- Turbo for monorepo task orchestration and caching
- pnpm workspaces with catalog dependency management
- DynamoDB for event storage with AWS integrations
- Fastify with OpenAPI 3.1 schema generation
- Jest with swc for fast testing
Multi-stage Dockerfile for containerized deployments:
# Build and run fastify sample service
docker build --target fastify-sample -t wee-events-fastify-sample .
docker run -p 3000:3000 wee-events-fastify-sample
Individual package commands:
pnpm --filter @weegigs/events-core build
pnpm --filter @weegigs/events-fastify test
pnpm --filter @weegigs/events-effects lint
Features:
- Turbo caching for fast rebuilds
- TypeScript composite builds with proper dependency order
- Jest testing with swc compilation and HTML coverage reports
- ESLint with TypeScript and Prettier configurations