Functional Programming Application Framework
- Railway Oriented Programming. Result (either) (neverthrow)
- Clean Architecture, ports and adapters
- Rich Domain Model
- Persistence Ignorant Domain
- Command/Query Handlers
- Domain Events (and Integration Events)
- Screaming Architecture
- Domain Driven Design
- Dependency Injection (IoC), but lightweight, just enough to manage some lifecycles (singleton and scoped)
TrainTrip.router.ts for paths and methods, and
router-schema.json for a complete picture.
- Authentication (for whole router [DONE], for just a route, opt-in or opt-out)
- Based on command/query metadata or is it infrastructure concern?
- future: OAuth based
- Keep up with Typescript improvements for Generic inference etc.
- Enhance container to prevent dependency capturing (ie a singleton that 'captures' a transient or scoped dependency)
- Remove "opinionation"
- Make it easy to use any validation framework
- Look into performance signatures and identify areas that need improvement
Additional usecase samples
- Soft delete
- MediatR Request/Event handlers and Pipelines.