# SmartIMS 프로젝트 디렉토리 구조 (Directory Structure) 본 문서는 SmartIMS 플랫폼의 전체 프로젝트 구조와 각 디렉토리의 역할을 설명합니다. --- ## 1. 전체 구조 개요 ```text smartims/ ├── docs/ # 설계서, 가이드, 매뉴얼 등 프로젝트 관련 문서 ├── public/ # 파비콘, 로고 등 정적 자원 ├── server/ # Node.js (Express) 기반 백엔드 서버 ├── src/ # React (Vite) 기반 프론트엔드 어플리케이션 ├── tools/ # 개발 및 관리에 필요한 유틸리티 도구 ├── package.json # 프론트엔드 의존성 및 스크립트 ├── tailwind.config.js # Tailwind CSS 설정 └── vite.config.ts # Vite 빌드 설정 ``` --- ## 2. 프론트엔드 구조 (`src/`) 프론트엔드는 **모듈형 아키텍처**를 따르며, 플랫폼 엔진과 독립적인 비즈니스 모듈로 구성됩니다. ### 2.1 Core & Infrastructure - `src/core/`: 플랫폼의 핵심 인터페이스 및 공통 타입 정의 (`types.ts`). - `src/platform/`: 시스템의 뼈대 구현. - `App.tsx`: 메인 엔트리 및 전체 레이아웃 구성. - `ModuleLoader.tsx`: 등록된 모듈을 동적으로 로드하고 라우팅을 구성. - `styles/`: 전역 스타일 및 디자인 토큰(`global.css`) 관리. - `src/app/`: Context Provider(인증, 시스템 설정 등)와 같은 전역 상태 관리. ### 2.2 Functional Components - `src/modules/`: 독립적인 비즈니스 영역. 각 폴더는 하나의 서비스 모듈을 의미함. - 예: `asset/`, `cctv/`, `license/` 등. - 각 모듈은 `module.tsx` (또는 `index.tsx`)를 진입점으로 가짐. - `src/widgets/`: 여러 페이지에서 재사용되는 복합 UI 블록 (예: `MainLayout`, `Sidebar`). - `src/shared/`: 프로젝트 전역에서 사용되는 공통 UI 컴포넌트, 유틸리티, API 클라이언트. --- ## 3. 백엔드 구조 (`server/`) 백엔드는 RESTful API 제공 및 데이터베이스 관리를 담당합니다. - `server/index.js`: 서버 엔트리 포인트. 환경 설정, 미들웨어 등록, 라우트 연결 총괄. - `server/routes/`: API 엔드포인트 정의. (예: `auth.js`, `system.js`, `asset.js`). - `server/middleware/`: 요청 처리 과정에서 동작하는 공통 로직 (인증 필터, 에러 핸들러). - `server/configs/`: 데이터베이스 연결 (`db.js`) 및 외부 서비스 설정. - `server/utils/`: 서버 측 공통 유틸리티 (로그 관리, 파일 업로드 등). - `server/schema.sql`: 데이터베이스 테이블 명세 및 초기 데이터. --- ## 4. 기타 주요 디렉토리 - `docs/`: - `MODULAR_ARCHITECTURE_GUIDE.md`: 모듈화 상세 설계 원칙. - `DEPLOYMENT_GUIDE.md`: 서버 배포 방법. - `tools/`: - 라이선스 관리 도구, 데이터 마이그레이션 스크립트 등 개발 보조 도구 포함. --- ## 5. 아키텍처 원칙 요약 1. **느슨한 결합 (Loose Coupling)**: 플랫폼은 모듈 내부 로직을 모르며, 모듈은 정의된 인터페이스를 통해 플랫폼과 통신합니다. 2. **높은 응집도 (High Cohesion)**: 특정 기능(예: 자산 관리)에 필요한 코드는 해당 모듈 폴더(`src/modules/asset/`) 내에 모여 있어야 합니다. 3. **디자인 시스템 준수**: 모든 스타일은 플랫폼이 제공하는 CSS Variables를 사용하여 일관성을 유지합니다.