Bedrock
The starter where clean architecture is enforced, not hoped for.
Every rule is a pass or fail gate wired into one command. Your AI cannot drift: it ships scalable, SOLID code by construction, or the build stops. Start by reading AGENTS.md.
Live example: a counter
This widget is one orchestrator, one hook, one presenter. State lives in the hook, rendering lives here, wiring lives in the orchestrator.
0
Every component, three roles
Orchestrator
orchestrators/Wires data and state to a presenter. Calls hooks, passes ready props down.
Presenter
presenters/Pure and presentational. Props in, JSX out. No transforms, no effects.
Hook
hooks/Logic and state. Returns data and handlers, never JSX.
SOLID, by construction
S
Single Responsibility
One component or function does one thing.
O
Open/Closed
Extend via composition or props, never by editing internals.
L
Liskov Substitution
A variant is usable wherever the base is used.
I
Interface Segregation
No component is forced to accept props it does not use.
D
Dependency Inversion
Depend on abstractions, not concrete implementations.