Architecture Decision Record (ADR)
An Architecture Decision Record (ADR) is a document that captures an important architectural decision made along with its context and consequences. We use them to provide a clear history of our technical choices and the reasoning behind them.
This practice is valuable for several reasons:
Onboarding: It helps new team members understand why the system is built the way it is.
Clarity: It provides a single source of truth for architectural decisions, avoiding ambiguity.
Consistency: It encourages a consistent decision-making process.
Knowledge Sharing: It documents the trade-offs and outcomes of decisions, which is valuable for future choices.
ADR Template
When creating a new ADR, use the following template. Each ADR should be a separate Markdown file.
# ADR-000X: [Title of Decision]
**Date:** YYYY-MM-DD
**Status:** [Proposed | Accepted | Deprecated | Superseded by ADR-000Y]
## Context
Describe the problem, the driving forces, and the constraints. What is the issue that needs to be addressed? This section should provide enough information for someone to understand the state of the project before this decision was made.
*Example: "Our current user authentication process is handled in-house, leading to significant maintenance overhead and security concerns. We need a more robust and scalable solution."*
## Decision
Clearly state the decision that was made. It should be a concise statement of the chosen approach.
*Example: "We will integrate a third-party authentication service, Auth0, to handle all user authentication and management."*
## Consequences
Outline the results and impact of the decision. This is the most critical part of the ADR, as it details the trade-offs.
### Positive Consequences
- What are the benefits of this decision?
- *Example: "Reduced development and maintenance effort for authentication."*
- *Example: "Improved security by leveraging a specialized service."*
- *Example: "Access to features like multi-factor authentication (MFA) and social logins out-of-the-box."*
### Negative Consequences
- What are the downsides or trade-offs?
- *Example: "Introduction of a new external dependency and a single point of failure."*
- *Example: "Increased operational costs due to the subscription fee for Auth0."*
- *Example: "Data privacy concerns as user data will be stored on a third-party platform."*
Location
All ADRs should be stored in a dedicated directory, such as /docs/adr/
, and named sequentially (e.g., 0001-use-auth0-for-authentication.md
).
Last modified: 08 September 2025