24 lines
2.2 KiB
Plaintext
24 lines
2.2 KiB
Plaintext
모든 답변은 한국어로 제시,
|
|
제공되는 md 파일도 한국어로 제공,
|
|
git push 등은 요청이 있을 때 만 수행,
|
|
|
|
📘 SOKUREE 플랫폼 개발 규칙 (Architecture Rules)
|
|
[원칙: 느슨한 결합(Loose Coupling) 및 높은 응집도(High Cohesion)]
|
|
플랫폼(Platform)의 최소 범위: 플랫폼은 전체 레이아웃(Header, Sidebar), 인증(AuthContext), 그리고 공통 테마(CSS Variables)만 관리한다. 모듈의 내부 비즈니스 로직에 깊게 관여하지 않는다.
|
|
모듈(Module)의 독립성: 모든 비즈니스 기능은 src/modules/[module-name]/ 폴더 내에 응집되어야 한다. 모듈은 독립적인 Route 정보를 가져야 하며, 플랫폼과는 정의된 인터페이스로만 소통한다.
|
|
[디렉토리 구조 상세 및 역할]
|
|
src/core/: 플랫폼 엔진의 인터페이스 및 공통 타입 정의 (types.ts).
|
|
src/platform/: 시스템의 뼈대 구현 (App.tsx, ModuleLoader.tsx, 공통 스타일).
|
|
src/modules/[name]/: 개별 비즈니스 영역. module.tsx 파일이 모듈의 진입점(Entry Point)이 된다.
|
|
shared/: 여러 모듈에서 공통으로 재사용하는 순수 유틸리티나 무상태(Stateless) 컴포넌트.
|
|
[인터페이스 준수 사항]
|
|
모든 모듈은 src/core/types.ts에 정의된 IModuleDefinition을 구현해야 한다.
|
|
모든 모듈은 자신의 기능을 routes 배열로 정의하고, 플랫폼의 App.tsx에 등록함으로써 기능을 주입(Injection)한다.
|
|
플랫폼 코드 내의 Routes에 모듈별 경로를 하드코딩하지 않으며, 반드시 ModuleLoader를 통해 동적으로 로드한다.
|
|
[스타일링 및 디자인 시스템 규칙]
|
|
CSS Variables 사용 강제: 색상, 간격, 둥근 모서리 등 브랜드 요소는 직접 값을 쓰지 않고 반드시 플랫폼이 제공하는 --sokuree-* 변수를 사용한다.
|
|
예: color: var(--sokuree-brand-primary);, padding: var(--sokuree-spacing-md);
|
|
기술 스택 자유도: 모듈 내부적으로는 Tailwind, CSS Modules, Styled-components 등을 자유롭게 선택할 수 있으나, 플랫폼의 디자인 토큰은 항상 준수해야 한다.
|
|
[권한 및 보안]
|
|
모듈은 requiredRoles 속성을 통해 접근 권한을 선언해야 한다.
|