Architecture Decision Records¶
This directory is the code-native home for BetterFleet-wide architecture decision records. Product-specific ADRs should live in the relevant product repository, but cross-product decisions belong here.
Working Rule¶
- Before changing shared architecture, platform conventions, API standards, persistence strategy, observability, delivery conventions, or cross-service patterns, review the relevant ADRs here.
- If a change intentionally conflicts with an accepted ADR, update or supersede the ADR in the same change rather than silently drifting from it.
- Create and maintain BetterFleet-wide ADRs in this repo.
ADRs¶
Notes¶
0019still carries a placeholder status line.0021and0022do not currently expose explicitDateorStatusheadings.0028and0029do not currently expose explicitDateheadings.0004remains marked as superseded so the decision history stays intact.
Guidance¶
Architecture Decision Records (ADRs) are a way to record decisions that we make in our architecture. An architectural decision can simply be viewed as decisions that may be expensive to change later.
This list of ADRs are ones that apply across all our products. Individual repositories should their own list, stored in the repository, that is specific to that product. adr-tools can be used to create and manage these, both for the handbook and individual projects.
We’re using the Decision record template from Michael Nygard.
When and how to record an ADR¶
As above, any time an decision could be expensive to change later, it's good to get a clear understanding for that. It could be around the use of a specific pattern, or 3rd party library, database, etc.
If the decision has already been made with consensus (making sure relevant people have had a say), it just needs to be documented as Accepted. If it's a decision that should get input from more people, create it as Proposed, and circulate to the team to add comments to the page. When the decision has been suitable shaped and ratified, set it to Accepted.
Sometimes, a decision will supersede another decision. In that case, update the status of the superseded ADR to "Superseded by x", with a document link to the superseding ADR.
Also, set the page icon accordingly, to quickly convey status in the side menu: ❓= Proposed ✅ = Accepted ❌ = Rejected, Deprecated, Superseded