Principles
These principles are constraints. When in doubt, follow them.
Architecture
- UI is composed of independent Web Components.
- Components communicate using CustomEvents only.
- Components do not call methods on other components.
- State flows through events, not direct imports or global singletons.
- The app shell is the coordinator, not a mega-controller.
Interaction
- Hover is a preview, never commits.
- Click commits navigation.
- Every view reflects hover/selection instantly.
- Back/forward and shareable URLs are first-class.
Data
- Multiple webs are supported from day one.
- Export/import must be simple and portable.
- External enrichment is optional and pluggable, not required.
Incremental delivery
- Build by vertical slices, not by “complete modules”.
- Every slice must be demoable in the browser.
- Every slice must update specs when it introduces new contracts.
Style
- Vanilla JS and ESM.
- Standard JS coding style.
- Prefer readability and small modules over clever abstractions.
Ethics and bias
- Make the “box” visible. Every web is partial and biased.
- Avoid presenting unknown/low-confidence data as fact.
✒️
edit (requires access)