19 lines
1 KiB
Markdown
19 lines
1 KiB
Markdown
---
|
||
type: project-doc
|
||
parent: "[[Tia]]"
|
||
status: verified
|
||
tags: [tia, decisions]
|
||
---
|
||
# ⚖️ Tia — Key Decisions
|
||
> Pulled from the project memory files. Full entries in [[Decision Log]].
|
||
|
||
1. **Derived usage, never accumulated** ([[Decision Log#TD-001]]) — storage = live SUM; pending excluded.
|
||
2. **`tier` is the only plan column** ([[Decision Log#TD-002]]) — payment behind `isPaidFamily()`.
|
||
3. **Migrations via hot-apply + `Date.now()` rule** ([[Decision Log#TD-003]]) — after Drizzle silently skipped 0003–0010.
|
||
4. **R2 served through `/api/img` proxy** ([[Decision Log#TD-004]]) — Cloudflare bot-mgmt 503'd cross-origin imgs.
|
||
5. **(marketing) vs (app) route groups** ([[Decision Log#TD-005]]) — keep `/` static; dashboard at `/home`.
|
||
6. **Downgrade = freeze, not delete** — existing members keep roles; only new invites blocked.
|
||
7. **Pre-aggregate analytics with CTEs** — the engagement query was a cartesian blow-up; fixed by per-table CTEs to avoid 500s on real data.
|
||
|
||
## Related
|
||
[[Tia]] · [[Tia - Architecture]] · [[Decision Log]]
|