35 lines
1.3 KiB
Markdown
35 lines
1.3 KiB
Markdown
# DECISIONS.md — Architecture Decision Log
|
|
|
|
Record any choice that deviates from or fills a gap in the docs. Newest at the bottom.
|
|
|
|
Format:
|
|
```
|
|
## D-NNN: Title
|
|
- Date:
|
|
- Context: (what problem / ambiguity)
|
|
- Decision: (what you chose)
|
|
- Alternatives considered:
|
|
- Consequences:
|
|
```
|
|
|
|
## D-001: SQLite + better-sqlite3 as the datastore
|
|
- Date: (project start)
|
|
- Context: Needs persistent accounts and game state with zero setup for a local build.
|
|
- Decision: SQLite file in `data/`, synchronous driver, WAL mode.
|
|
- Alternatives considered: Postgres (heavier setup), JSON files (no integrity/transactions).
|
|
- Consequences: Single-process deployment; synchronous transactions give simple double-spend protection. Migrate to Postgres only if scaling beyond one server.
|
|
|
|
## D-002: Lazy time evaluation instead of tick loops
|
|
- Date: (project start)
|
|
- Context: Game must progress while players are offline.
|
|
- Decision: Store timestamps; compute energy/timers on demand.
|
|
- Consequences: No background workers, trivially testable with injected clocks.
|
|
|
|
## D-003: Vanilla frontend, no build step
|
|
- Date: (project start)
|
|
- Context: Reduce tooling surface area for a local-model build.
|
|
- Decision: Static HTML/CSS/JS served by Express.
|
|
- Consequences: Slightly more DOM boilerplate; far fewer moving parts.
|
|
|
|
<!-- Add D-004 onward below -->
|