The app uses the Narrative approach, which adds a few additional patterns to standard Rails. Each link will take you to their explanation.
- ApplicationStruct - a slight enhancement over plain old ruby objects, with portrayal, ActiveModel, and better JSON support
- Page objects — presenter objects that work for both API and server-side rendering
- Form objects - param filters and validators that work for both API and server-side rendering
- Urls - all URL helpers for use in pages and forms
- Cron objects - periodic jobs
- Client objects — app-specific adapters for API clients and SDKs
- ADRs - architectural decision records
- Transactionality helper - use transactions in controllers to create procedural narratives
- App config - this is where the application-specific non-secret config goes