Organization conventions
Route groups —(auth) and (dashboard) separate public and protected pages. The grouping doesn’t affect URLs.
Feature-based components — components are grouped by feature domain (canvas, memory, prd) rather than by type (buttons, forms). The ui/ directory holds shared primitives from shadcn/ui.
Lib for shared logic — business logic, API clients, and integration code live in lib/, organized by domain. Components import from lib/ for data operations.
Stores for UI state — Zustand stores handle state that changes rapidly (canvas interactions, view filters). Server-derived data uses SWR instead.