양쪽이 쓰는 계약 여부
요청/응답 DTO와 ApiResult<T> 같은 제네릭 래퍼는
shared에 둔다.
shared에는 양쪽이 합의해야 하는 타입만 두고, 실제 구현과 검증은 책임 계층에 배치한다.
요청/응답 DTO와 ApiResult<T> 같은 제네릭 래퍼는
shared에 둔다.
화면 상태, 데이터 접근, 배포 설정은 client/server 내부로 제한한다.
API 경계에서 먼저 검증해 unknown을 안전한 도메인
타입으로 좁힌다.
shared가 커질수록 결합도도 커진다. 공유는 계약으로 제한하고, 변경이 잦은 구현은 각 패키지 안에서 닫아 둔다.