Product Tech Stack Standard
Scope
This is the default product stack standard across RL applications. Teams should keep libraries and platform choices consistent across apps unless an explicit exception is approved.
Frontend standard
- Framework: Flutter
- Deployment targets: product-dependent; may be desktop-only, web-only, or web + Android only
Default Flutter libraries
Use these by default unless there is an approved reason not to:
envied
go_router
riverpod
auth0
graphql
Backend standard
- API framework: NestJS
- Primary product endpoint: GraphQL
- REST usage: only for health endpoints and external integrations where GraphQL is not supported
NestJS library rule
Use @nestjs/* packages by default. Third-party libraries should only be introduced when:
- they are dependency requirements, or
- they are explicitly needed and approved
Data and messaging standard
- Database: MongoDB
- Backend-to-backend request/response: RabbitMQ RPC / request-response
- System-wide event signaling: RabbitMQ events where the publisher does not care which consumers listen
- Queues / async transport: RabbitMQ
- Error management / APM: Sentry
- CI/CD: CircleCI
- Pipeline and runtime secrets/config: Doppler
- Frontend testing: BrowserStack
Consistency rule
Libraries should be:
- kept consistent across apps
- explicitly listed in documentation
- added only with explicit approval when introducing something outside the shared standard
Documentation expectation
When an app deviates from this standard, the app documentation must explicitly state:
- what differs
- why it differs
- who approved the exception
- whether the exception is temporary or permanent