모노레포는 폴더 합치기가 아니다
apps/packages, 계층 규칙, workspace protocol과 naming
모노레포의 가치는 코드가 한곳에 있다는 사실보다 변경 관계와 검증·릴리즈를 일관되게 계산할 수 있다는 데 있습니다. apps는 독립 배포 단위, packages는 재사용 단위로 두고 의존성은 types/config 같은 하위 계층에서 app으로만 흐르게 합니다.
| 계층 | 예시 | 참조 규칙 |
|---|---|---|
| L0 기반 | types·config | 외부만 참조 |
| L1 인프라 | db·api-client·observability | L0만 참조 |
| L2 도메인/UI | billing·auth·ui | L0~L1 참조 |
| L3 apps | web·admin·worker | L0~L2 참조 |
- 배포 단위 목록화각 app의 runtime·domain·owner를 정합니다.
- 패키지 책임하나의 이유로 변경되는 코드만 묶습니다.
- 의존성 방향계층 규칙과 forbidden edge를 선언합니다.
- Workspace 연결내부 package는 workspace:*와 명시적 exports를 씁니다.