Skip to main content

Architecture decision records

Status: Proposed 2026-09-24

An ADR records one decision, the context that forced it, the alternatives that lost, and the consequences we accept. Most of Vegan Grove's early ADRs are privacy decisions, because privacy is where this product differs from its lineage.

ADRDecisionStatus
0001Four repositories, one shared API, mirroring The Trick BookProposed
0002API on one EC2 t4g.micro with PM2, not LambdaProposed
0003Password, magic link, Apple, and Google sign-in over opaque hashed sessionsProposed
0004Profiles are never publicProposed
0005Data minimization: the field list, no GPS, EXIF stripped on deviceProposed
0006MapLibre with OpenFreeMap tiles, no Google MapsProposed
0007No third-party analytics, aggregate counters onlyProposed
0008MongoDB Atlas M0 with Mongoose schemasProposed
0009Public repositories under a proprietary license, with push protection and gitleaksProposed
0010Account deletion is a self-serve hard delete in v1Proposed
0011Messages encrypted at rest with retention, end-to-end laterProposed
0012Ivy runs on the Anthropic API with ephemeral conversationsProposed
0013Images through S3 presigned uploads, video through Bunny StreamProposed

Format​

---
title: "ADR-NNNN: Short title"
description: One sentence.
---
# ADR-NNNN: The decision as a sentence

| Field | Value |
|---|---|
| **Status** | Proposed, Accepted, Superseded by ADR-NNNN, or Rejected |
| **Date** | YYYY-MM-DD |
| **Deciders** | names |
| **Related** | other ADRs, optional |

## Context
## Decision
## Alternatives considered
## Consequences
### Positive
### Negative

Files are docs/architecture/adrs/adr-NNNN-kebab-title.md. The numeric prefix is part of the filename on purpose so the doc id stays stable. Add the row here and the entry in sidebars.ts in the same PR.

When to write one​

When a choice is hard to reverse, touches member data, adds a third party, or would surprise a future contributor. A choice that can be undone in an afternoon is a commit message, not an ADR.