1.3 KiB
1.3 KiB
ADR 0001: Backend Framework — Express.js
Date: 2026-04-26 Status: Accepted
Context
The backend serves a JSON REST API consumed by the Angular frontend. The requirements are straightforward: HTTP routing, middleware chaining, JSON body parsing, JWT authentication, and database access. No server-side rendering, no real-time features, no heavy framework conventions are needed.
Decision
Use Express.js as the HTTP framework. The application is structured around:
src/routes/api/<domain>/— route definitions by functional domainsrc/controllers/— request/response handlingsrc/services/— business logicsrc/middlewares/— cross-cutting concerns (auth, error handling, async wrapper)createApp.js— application factory (separates app creation from server startup, enabling testability)
Consequences
- Positive: Minimal abstraction. Full control over middleware order and request lifecycle.
- Positive: Large ecosystem. Well-understood by the team.
- Negative: No convention over configuration — project structure is manually maintained.
- Negative: Async error handling requires explicit wrapping (
asyncHandlermiddleware) since Express 4 does not catch promise rejections natively. Express 5 (not yet used) handles this automatically.