# Project Structure

Use this structure as the default baseline for new projects:

```text
src/
  app/
    App.tsx
    AppProviders.tsx
    router.tsx
    layout/
    routes/
  pages/
    app/
      <feature>/
        <Feature>Page.tsx
  features/
    <feature>/
      view/
      model/
      controller/   # only when needed
      services/     # only when needed
  shared/
    lib/
    theme/
    ui/
  styles/
    global.css
  test/
    setup.ts
```

Ownership rules:

- `src/app`: compose the application, do not implement domain behavior here.
- `src/pages`: expose route entrypoints only.
- `src/features`: own real feature implementation.
- `src/shared`: own reusable building blocks that are not tied to one feature.

Thin page wrapper example:

```tsx
import { DashboardPage as DashboardFeaturePage } from '@/features/dashboard/view/DashboardPage'

export function DashboardPage() {
  return <DashboardFeaturePage />
}
```

Do not let wrappers accumulate state, mocks, data loading, layout logic, or feature helpers.
