feat: bootstrap walking skeleton
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
# ADR 0001: Web Stack And Engine Boundary
|
||||
|
||||
## Status
|
||||
|
||||
Accepted, 2026-06-11.
|
||||
|
||||
## Context
|
||||
|
||||
Idlegame is a text-first idle/incremental RPG. The UI is mostly panels, progress
|
||||
bars, action lists, resources, logs, and branching story choices. It must run
|
||||
well on phones from day one and remain easy to wrap later for desktop or mobile
|
||||
stores.
|
||||
|
||||
## Decision
|
||||
|
||||
Use TypeScript strict, Vite, React 19, Zustand, Tailwind v4, Vitest, Biome, and
|
||||
vite-plugin-pwa.
|
||||
|
||||
Keep gameplay rules in a pure TypeScript engine under `src/engine/`. React,
|
||||
Zustand, browser storage, requestAnimationFrame, and lifecycle hooks belong
|
||||
outside the engine.
|
||||
|
||||
Use plain JavaScript numbers behind `src/engine/num.ts` for M0/M1. Human-readable
|
||||
values are a design pillar; a Decimal-style dependency is deferred until a later
|
||||
layer proves it is needed.
|
||||
|
||||
## Consequences
|
||||
|
||||
- Engine behavior is headless-testable with Vitest.
|
||||
- UI and wrapper changes should not force gameplay rewrites.
|
||||
- Offline progress uses the same fixed-timestep simulation path as online play.
|
||||
- Save/load validation sits at explicit boundaries with versioned schemas.
|
||||
- Dependencies must be permissive; no GPL packages are allowed.
|
||||
Reference in New Issue
Block a user