# app 레이어

앱을 한 번 세우는 층. 화면 로직은 여기 두지 않는다.

## import 경계

- 가능: 모든 하위 레이어 (pages · widgets · features · entities · shared)
- 금지: 없음 (최상위 레이어)

## 여기 두는 것

- 진입점(`main.tsx`), 전역 provider(`providers/`), 라우터(`router.tsx`)와 라우트 셸(`RootLayout` · `RouteError`)
- 전역 테마 토큰(`index.css`) — 색·간격·radius의 단일 출처

## 두지 않는 것

- 화면·도메인 로직 → `pages/` 이하
- 재사용 UI → `shared/ui`

## 자주 나는 실수

- **라우터 파일에 컴포넌트를 같이 두기** — `router.tsx`에는 라우트 정의만, 셸 컴포넌트는 형제 파일로 분리한다.
- **경로 문자열 하드코딩** — `@/shared/routing`의 `paths` 상수를 쓴다.
- 새 화면을 정적 import로 등록 — 화면은 `lazy`로 등록해야 첫 로딩이 화면 수에 비례해 무거워지지 않는다.

## 더 보기

`.claude/skills/fsd-router/SKILL.md` · `docs/architecture.md`
