my-backend-architecture
my-backend-architecture
사용자 개인의 백엔드 코드 구조 선호를 정리한 지식 스킬. SKILL.md는 라우팅 테이블 역할만 하고, 실제 내용은 references에 Progressive Disclosure로 분할되어 있다. 사용자 질문 유형에 따라 필요한 파일만 로드해 답한다.
핵심 원칙
- 기본 레이어 4개:
app/domain/infrastructure/shared. 그 사이에 사용자 정의 중간 레이어를 필요할 때만 삽입한다. 이름·개수는 팀이 결정. 빈 레이어는 세금. - 의존은 단방향. 상위 레이어의 module(resource)은 하위 레이어의 module만 참조 가능. 역방향 import 전면 금지. 단
infrastructure는domain인터페이스를 구현하므로 import 방향이 역전(DIP). app은 resource 단위, 나머지는 module 단위.domain은 프레임워크 의존 없는 순수 코드.- 같은 레이어 module 간 참조 금지 (
domain·shared제외). 해결책: 공통 로직을 하위 레이어로 추출하거나, 중간 레이어에 인터페이스를 두고 DIP 적용. - 규칙 판정은
domain에, 오케스트레이션·I/O·트랜잭션은app/ 중간 레이어에. Repository는 Application Service에만 주입, Domain Service에는 인자 전달.
의존 다이어그램
app (resource)
↓
(사용자 정의 중간 레이어)? module. 이름 자유. 선택.
↓
domain ◄───────── infrastructure ← DIP: infrastructure가 domain 인터페이스 구현
(module) (module)
↓ ↓
shared ← 모든 레이어가 shared 참조 가능
라우팅 테이블
| 사용자가 묻는 것 | 파일 |
|---|---|
| 레이어 구조, 참조 방향 규칙, module/resource 명명, Public API(barrel) | references/01-layers-and-modules.md |
| app 레이어 책임, Presentation+Application 결합, 컨트롤러/서비스 구분, 읽기/쓰기 경로 | references/02-app-layer.md |
| 도메인 모델, Aggregate, Domain Service vs Application Service, Repository 주입 원칙, BC 간 참조 | references/03-domain-layer.md |
| infrastructure 책임, DIP import 방향, ORM별 배치, shared/db vs infrastructure, BC 경계 ORM 관계 | references/04-infrastructure-layer.md |
| shared 구성, segment 구분, shared vs infrastructure, DB 스키마 위치 | references/05-shared-layer.md |
| 중간 레이어 도입 시점, 하위 추출 vs 인터페이스 분리, use-cases·features·contracts | references/06-custom-layers.md |
| 테스트 전략, 도메인 단위 테스트, 오케스트레이션 테스트, TransactionManager·외부 서비스 Fake, 통합 테스트 | references/07-testing.md |
| ORM 비교(TypeORM·Drizzle·Prisma), 적용 범위, 의식적 타협 | references/08-misc.md |
원칙
- 완벽한 클린 아키텍처 지향 아님.
domain이shared를 참조하는 건 허용. 상세:08-misc.md. - NestJS가 주 예시지만 원리는 DI 프레임워크가 있는 환경 전반에 적용 가능.
- 테스트 1순위는 도메인 정책·비즈니스 규칙. 나머지는 선택.
- 이 스킬의 "module"은 폴더 단위 코드 경계. DI 프레임워크의 Module/Component 어노테이션과 다른 개념.
More from dev-goraebap/skills
media-storage
파일 업로드·저장소·첨부 관리 패턴. Actions: 파일 업로드, 이미지 업로드, 파일 처리, 저장소 연동, 썸네일 첨부, 색상 추출, file upload, image upload, storage, attachment, thumbnail. Patterns: Active Storage, blobs 테이블, attachments 테이블, 다형적 첨부, 중복 파일 감지. Storage: Cloudflare R2, AWS S3, @aws-sdk/client-s3, UUID key, 2-level 디렉토리, CDN URL, presigned URL. DB: Drizzle ORM, blob, checksum, MD5, metadata JSON, MIME, byte_size. Color: 지배적 색상 추출, dominant color, Gemini API, hex, blobs.metadata. Query: 썸네일 조회, 서브쿼리, leftJoin, view-model, CDN URL 변환.
22html-prototype
>
12sveltekit-shadcn-guidline
SvelteKit 프로젝트에서 shadcn-svelte 컴포넌트를 활용하는 가이드. 사용자가 UI 화면을 구성하거나 어떤 컴포넌트를 써야 할지 고민할 때, 또는 shadcn-svelte 컴포넌트를 설치하거나 초기 설정이 필요할 때 반드시 이 스킬을 사용한다. 버튼, 모달, 카드, 사이드바, 폼, 테이블 등 UI 요소를 언급하면 이 스킬을 적극 참고한다.
11vscode-claude-notify
VSCode Claude 익스텐션은 알림 hook이 Windows/macOS 모두에서 발화하지 않는 알려진 버그가 있다. 이 스킬은 OS 네이티브 알림(Windows BalloonTip, macOS 알림 센터)으로 우회하여 작업 완료·오류 발생 시 알림을 받을 수 있도록 hooks를 설정한다. 사용자가 'Claude 알림 설정', '작업 완료 알림', 'VSCode 알림 안 와요', 'hooks 알림', 'Claude 끝나면 알려줘' 등을 언급하면 이 스킬을 사용한다. Windows(WSL 포함)와 macOS 모두 지원한다.
10usecase-diagram-gen
>
2sitemap-design
>
2