Skip to content

ESLint boundaries

ESLint owns frontend architecture gates.

  • Atomic layers cannot reverse-import higher layers.
  • src/features/** is migration debt, not an allowed target layer.
  • New imports from src/features/** must fail, not warn.
  • Existing src/features/** files must shrink toward atomic UI, Nanostores UI stores, or src/lib/*-client.ts wrappers.
  • src/features/**/*.tsx UI is blocked; promote UI to the atomic layer.
  • Business-flow state must use Nanostores, not React local/context state hooks.
  • Frontend must not recompute RBAC, reservation transition, payment amount, settlement readiness, discount, subsidy, or workflow decisions. Those fields come from backend contracts.
  • Reservation/payment/settlement E2E runs cannot close a checklist item while the route still imports src/features/** or computes backend-owned decisions in browser code.
  • Features cannot bypass generated contract clients.
  • Direct Supabase SDK access is restricted to approved wrappers.
  • npm, npx, yarn, and bun flows are blocked by scripts and CI.

Frontend edits are handled by the assigned frontend worker, not by backend migration work.