1. 최상위 폴더 / 파일 구조
프로젝트 루트(dxcms-803/)에는 다음과 같은 폴더와 핵심 파일이 위치합니다.
DXCMS/
├── index.php ← 단일 진입점 (모든 HTTP 요청 처리)
├── .htaccess ← Apache URL Rewrite 규칙
├── nginx.conf.example ← Nginx 설정 예시
├── web.config ← IIS URL Rewrite 규칙
├── fix_permissions.bat ← Windows 권한 일괄 설정
│
├── core/ ← CMS 엔진 핵심 (직접 수정 비권장)
├── admin/ ← 관리자 패널
├── boards/ ← 게시판 핸들러 • 스킨
├── themes/ ← 프론트엔드 테마
├── plugins/ ← 확장 플러그인
├── assets/ ← CSS • JS • 에디터 • 이미지
├── controllers/ ← 페이지 컨트롤러
├── routes/ ← URL 라우팅 정의
├── extend/ ← 코드 자동 삽입 폴더
├── data/ ← 런타임 데이터 (캐시 • 업로드)
├── pages/ ← 커스텀 페이지 핸들러
├── api/ ← 외부 API 엔드포인트
├── install/ ← 설치 마이그레이션
└── docs/ ← 개발 문서
2.1 index.php — 단일 진입점
모든 HTTP 요청은 index.php 하나로 집중됩니다. URL Rewrite 설정이 없는 환경에서는 ?_url=/경로 쿼리스트링 방식으로도 동작합니다. 이 파일은 다음 순서로 실행됩니다.
- 보안 초기화 (Secure.php)
- 사이트 설정 로드 (DxSite.php)
- URL 파싱 및 라우팅 (Router → Dispatcher)
- 테마 레이아웃 렌더링 (DxTheme.php)
2.2 .htaccess / nginx.conf.example / web.config
각 웹서버 환경에 맞는 URL Rewrite 설정 파일입니다. 모든 요청을 index.php로 포워딩하여 PHP가 라우팅을 전담합니다. .htaccess는 Apache용, nginx.conf.example은 Nginx용, web.config는 IIS용입니다.
3. core/ — CMS 엔진
CMS의 핵심 로직이 담긴 폴더입니다. 직접 수정은 권장하지 않으며, 보안 패치의 경우 core/Secure.php 한 파일만 수정하면 됩니다.
3.1 핵심 클래스 파일
| 파일명 |
역할 설명 |
| Secure.php |
★ 보안 전담 — CSRF 토큰, XSS 방어, 세션 보안, 비밀번호 해시(bcrypt), 업로드 검증, 보안 헤더 일괄 처리 |
| functions.php |
공통 유틸리티 함수 모음. dx_esc(), dx_csrf_*() 등 전역 함수 정의 |
| DxCache.php |
파일/APCu 이중 캐시 드라이버. APCu 설치 여부를 자동 감지하여 최적 드라이버 선택 |
| DxSeo.php |
SEO 헬퍼 — OG 태그, Twitter Card, JSON-LD 구조화 데이터, 동적 사이트맵 생성 |
| DxCategory.php |
카테고리 렌더링 헬퍼. DB 기반 무한 깊이 계층구조 처리 및 스킨 렌더링 |
| DxSanitizer.php |
입력값 정제 및 HTML 필터링. XSS 공격 방지를 위한 출력 이스케이프 |
| DxTheme.php |
테마 엔진 — 테마 로드, 레이아웃 렌더링, 파트(header/footer) 처리 |
| DxSite.php |
멀티사이트 관리 — 도메인별 독립 설정(사이트명•테마•메뉴•시간대) 로드 |
| DxExtend.php |
extend/ 폴더 자동 실행 엔진. 파일명 오름차순 실행, 개별 오류 격리 |
| DxPoint.php |
포인트/경험치/레벨 시스템 — 게시글 작성•댓글•추천 시 포인트 자동 적립 |
| DxBoardSkin.php |
게시판 스킨 폴백 체인 — 테마 스킨 → 지정 스킨 → 기본 스킨 순서로 탐색 |
| DxMarket.php |
마켓 시스템 — 플러그인 배포, 구매, 라이선스 관리 |
| PluginRegistry.php |
플러그인 등록/활성화 관리. dx_register_plugin() 함수로 등록된 플러그인 처리 |
| DxRouter.php |
URL 파싱 및 라우트 결정. RESTful URL 패턴 매칭 |
| DxContainer.php |
의존성 주입(DI) 컨테이너 — 서비스 인스턴스 관리 |
| DxCss.php |
CSS 변수 및 테마 색상 동적 생성 |
| DxCaptcha.php |
캡차 생성 및 검증 처리 |
| DxMailer.php |
이메일 발송 처리 (SMTP / PHP mail) |
| DxSms.php |
SMS 발송 연동 |
| DxSocialAuth.php |
소셜 로그인 (카카오/네이버/구글/GitHub) OAuth2 처리 |
| DxShop.php |
쇼핑몰 기능 — 상품 관리, 주문, 결제 플러그인 연동 |
| DxNotification.php |
실시간 알림 시스템 — 알림 생성, 조회, 읽음 처리 |
| DxMigration.php |
DB 마이그레이션 자동 실행 관리 |
| DxPopup.php |
팝업창 관리 |
| DxThumb.php |
이미지 썸네일 생성 (GD 기반 리사이즈) |
| DxMemberMonitor.php |
회원 접속 모니터링 |
| DxFriend.php |
친구/팔로우 기능 |
3.2 core/ 하위 폴더
| 하위 폴더 |
역할 |
| core/api/ |
내부 API 핸들러 — upload.php(파일 업로드), download.php(파일 다운로드), comment.php(댓글 CRUD), like.php(좋아요), sitemap.php(동적 XML 사이트맵), robots.php |
| core/auth/ |
세션 기반 인증 처리 (Auth.php). 로그인/로그아웃/회원가입 로직 |
| core/db/ |
PDO 래퍼 싱글턴 (Database.php). 쿼리 실행, 트랜잭션, 에러 처리 |
| core/router/ |
Router.php(URL 파싱 • 라우트 결정), Dispatcher.php(라우트 → 핸들러 실행) |
| core/hook/ |
훅 시스템 (HookManager.php). dx_add_hook(), dx_do_hook() 처리 |
| core/cache/ |
캐시 드라이버 구현체 — 파일 캐시, APCu 캐시 |
| core/security/ |
추가 보안 모듈 — Rate Limit, IP 차단 등 |
| core/mailer/ |
메일 발송 드라이버 구현체 |
| core/sms/ |
SMS 발송 드라이버 구현체 |
| core/captcha/ |
캡차 이미지 생성 |
| core/search/ |
전문 검색 처리 모듈 |
4. admin/ — 관리자 패널
사이트 전반을 관리하는 백엔드 패널입니다. admin/index.php가 공통 레이아웃(사이드바•헤더)을 담당하며, 각 기능은 하위 폴더의 index.php로 분리되어 있습니다.
| 폴더 |
기능 설명 |
| admin/dashboard/ |
관리자 대시보드 — 통계 요약, 최근 게시글, 접속 현황 한눈에 보기 |
| admin/boards/ |
게시판 관리 — 생성/수정/삭제, 에디터 선택(CKEditor4/Jodit/TinyMCE), 카테고리 스킨 지정, 권한 설정 |
| admin/board_groups/ |
게시판 그룹 관리 — 여러 게시판을 묶어 메뉴에 표시 |
| admin/categories/ |
카테고리 관리 — 계층 카테고리 생성, 표시 위치(리스트 탭/뷰 배지) on/off, 배지 색상 지정 |
| admin/members/ |
회원 관리 — 회원 목록, 상세 정보 수정, 포인트 조정, 레벨 변경, 탈퇴 처리 |
| admin/menus/ |
메뉴 관리 — 내비게이션 메뉴 구성, 게시판•페이지 빠른 선택 UI 제공 |
| admin/pages/ |
독립 페이지 관리 — 헤더•푸터 없이 단독 실행 가능한 커스텀 페이지 |
| admin/themes/ |
테마 관리 — 활성 테마 선택, 테마 미리보기 |
| admin/plugins/ |
플러그인 관리 — 설치된 플러그인 활성화/비활성화, 플러그인별 설정 |
| admin/settings/ |
사이트 설정 — 기본 정보, SEO 설정(OG•Analytics), 캐시 설정, 메일 설정 |
| admin/statistics/ |
방문자 통계 — 일별/월별 방문자 그래프, 인기 검색어 순위 |
| admin/levels/ |
회원 레벨 설정 — 레벨별 포인트 기준, 권한 설정 |
| admin/points/ |
포인트 관리 — 적립/차감 이력, 포인트 지급 규칙 설정 |
| admin/market/ |
마켓 관리 — 플러그인 마켓 상품 등록 및 관리 |
| admin/shop/ |
쇼핑몰 관리 — 상품 목록, 주문 내역, 재고 관리 |
| admin/downloads/ |
다운로드 파일 관리 — 첨부파일 현황, 불필요 파일 정리 |
| admin/global_notices/ |
전역 공지사항 — 사이트 전체에 표시되는 공지 관리 |
| admin/popup/ |
팝업 관리 — 팝업 생성, 기간 설정, 위치 설정 |
| admin/sendmail/ |
메일 발송 — 회원 대상 일괄 메일 발송 |
| admin/sendsms/ |
SMS 발송 — 회원 대상 일괄 SMS 발송 |
| admin/sites/ |
멀티사이트 관리 — 도메인별 사이트 등록 및 설정 |
| admin/social/ |
소셜 로그인 설정 — 카카오/네이버/구글/GitHub OAuth 키 관리 |
| admin/socket/ |
실시간 소켓 모니터 — WebSocket 연결 현황, 접속자 목록 |
| admin/ranking/ |
랭킹 관리 — 포인트•레벨 기반 회원 순위 |
| admin/popular/ |
인기 콘텐츠 — 조회수•추천 기반 인기글 현황 |
5. boards/ — 게시판 시스템
게시판 기능의 핵심 처리 로직과 스킨 템플릿이 위치하는 폴더입니다.
boards/
├── handler.php ← 게시판 메인 핸들러 (목록/보기/쓰기/수정/삭제/댓글)
├── skins/ ← 게시판 스킨 (화면 렌더링 템플릿)
│ ├── default/ ← 기본 스킨
│ ├── gallery/ ← 갤러리형 스킨
│ └── shop/ ← 쇼핑몰형 스킨
└── category/
└── skins/ ← 카테고리 탭 스킨
├── default/ ← 기본 카테고리 탭
└── (커스텀)/ ← 관리자에서 지정 가능
5.1 handler.php
게시판의 모든 액션을 처리하는 핵심 파일입니다. URL 파라미터에 따라 목록/보기/쓰기/수정/삭제/댓글 처리를 분기합니다.
- 목록 (list): 페이지네이션, 검색, 카테고리 필터, 정렬(최신/추천) 처리
- 보기 (view): 게시글 상세, 조회수 증가, 댓글 목록, 이전/다음 글 링크
- 쓰기/수정 (write/edit): CSRF 토큰 검증, 파일 업로드(MIME+이중확장자 검증), 포인트 적립
- 삭제 (delete): 첨부파일 unlink, 댓글•좋아요•스크랩 완전 삭제
5.2 게시판 스킨 구조
스킨은 HTML/PHP 템플릿 파일의 집합으로, 게시판의 시각적 표현을 담당합니다. 스킨 폴백 체인은 다음 우선순위로 동작합니다.
1순위: themes/[테마명]/board/ ← 테마별 커스텀 스킨
2순위: boards/skins/[지정 스킨명]/ ← 게시판에 지정된 스킨
3순위: boards/skins/default/ ← 기본 스킨 (폴백)
6. themes/ — 테마 시스템
사이트의 프론트엔드 디자인 전체를 담당합니다. 현재 default 테마가 포함되어 있으며, 추가 테마를 이 폴더에 배치하면 관리자에서 선택 가능합니다.
themes/
└── default/
├── theme.json ← 테마 메타정보 (이름, 버전, 설명)
├── style.css ← 테마 전역 스타일 (CSS 변수 기반)
├── layout/ ← 레이아웃 템플릿
│ ├── main.php ← 메인 레이아웃 (header+content+footer)
│ ├── header.php ← 헤더 (네비게이션, 로고)
│ └── footer.php ← 푸터
├── board/ ← 게시판 테마 오버라이드 스킨
├── board_latest/ ← 최신글 위젯 스킨 (list/card/simple)
├── page/ ← 독립 페이지 렌더링
├── parts/ ← 공통 파트 (알림, 팝업, 소셜 버튼 등)
├── search/ ← 검색 결과 페이지
└── icons/ ← 테마 아이콘 파일
6.1 theme.json
테마의 메타 정보를 정의하는 JSON 파일로, 이름•버전•설명•지원 해상도•색상 팔레트 등이 포함됩니다.
6.2 style.css — CSS 변수 기반 테마
CSS 커스텀 프로퍼티(변수)를 활용하여 색상•폰트•간격 등 디자인 토큰을 중앙에서 관리합니다. 다크 모드도 CSS 변수 전환만으로 완전 지원됩니다.
6.3 board_latest/ — 최신글 위젯
홈이나 사이드바에 삽입하는 최신글 위젯입니다. 세 가지 스킨을 제공합니다.
- list: 제목+날짜 심플 리스트형
- card: 썸네일 이미지 + 제목 + 발췌문 카드형
- simple: 제목만 표시하는 초경량형
7. plugins/ — 플러그인 시스템
기능 확장을 위한 플러그인 폴더입니다. 각 플러그인은 독립 폴더로 분리되어 있으며, plugin.php 파일에서 dx_register_plugin()으로 등록됩니다.
7.1 플러그인 등록 구조
// plugins/my-plugin/plugin.php
dx_register_plugin(array(
'id' => 'my-plugin',
'type' => 'editor', // editor | payment | socket | captcha
'name' => 'My Plugin',
'version' => '1.0.0',
'settings' => array( ... ),
));
7.2 기본 제공 플러그인 목록
| 플러그인 폴더 |
타입 |
설명 |
| ckeditor4-editor |
editor |
CKEditor 4 WYSIWYG 에디터 (기본 활성) |
| dx-socket |
socket |
WebSocket 실시간 기능 — 접속자 수, 실시간 댓글•알림•채팅 |
| example-plugin |
기타 |
플러그인 개발 참고용 예제 |
| tosspay-payment |
payment |
토스페이 결제 연동 |
| kakaopay-payment |
payment |
카카오페이 결제 연동 |
| naverpay-payment |
payment |
네이버페이 결제 연동 |
| danal-payment |
payment |
다날 결제 연동 (신용카드•휴대폰) |
| kcp-payment |
payment |
NHN KCP 결제 연동 |
| kg-inicis-payment |
payment |
KG이니시스 결제 연동 |
| nicepay-payment |
payment |
나이스페이먼츠 결제 연동 |
| payletter-payment |
payment |
페이레터 결제 연동 |
| paypal-payment |
payment |
PayPal 해외 결제 연동 |
| stripe-payment |
payment |
Stripe 해외 결제 연동 |
| custom-payment-template |
payment |
커스텀 결제 플러그인 개발 템플릿 |
7.3 dx-socket 플러그인 구조
WebSocket 기반 실시간 기능을 제공하는 핵심 플러그인입니다. 별도 Node.js 서버와 통신합니다.
plugins/dx-socket/
├── plugin.php ← 플러그인 등록 • PHP-측 WebSocket 클라이언트
├── admin/ ← 소켓 서버 상태 모니터링 관리자 페이지
└── chats/ ← 실시간 채팅 UI 컴포넌트
8. assets/ — 정적 자원
CSS, JavaScript, 이미지, CKEditor 에디터 등 프론트엔드 정적 자원이 모두 이 폴더에 위치합니다.
assets/
├── ckeditor4/ ← CKEditor 4.25.1-LTS (로컬 서빙 — CDN 의존 없음)
│ ├── ckeditor.js ← CKEditor 메인 파일
│ ├── config.js ← 에디터 기본 설정
│ ├── lang/ ← 다국어 지원 (40개+ 언어)
│ ├── plugins/ ← 에디터 플러그인 (코드하이라이트, 이미지 업로드 등)
│ └── skins/ ← 에디터 UI 스킨
├── css/ ← 공통 CSS 파일
├── js/ ← 공통 JavaScript 파일
└── img/ ← 시스템 공통 이미지
8.1 CKEditor 4 로컬 서빙
CKEditor 4는 CDN 없이 로컬 파일로 서빙됩니다. 이는 인터넷이 제한된 환경에서도 에디터가 정상 동작하며, 외부 의존성을 제거하여 보안과 성능을 향상시킵니다. 주요 기능은 다음과 같습니다.
- 멀티 이미지 업로드 (툴바 버튼 + 드래그&드롭)
- 유튜브 URL 붙여넣기 → iframe 자동 변환
- 코드 하이라이트 (monokai_sublime 테마)
- 댓글 에디터 활성화 옵션
9. extend/ — 코드 자동 삽입
훅 등록 없이 파일만 폴더에 넣으면 CMS가 자동으로 실행해주는 코드 삽입 폴더입니다. 파일명 오름차순으로 실행되며, 개별 파일에서 오류가 발생해도 다른 파일에 영향을 주지 않습니다.
extend/
├── top/ ← index.php 초기화 직후 실행 (보안•인증 전처리)
│ ├── 01_maintenance.php ← 점검 모드 구현 예시
│ └── 02_ip_block.php ← IP 차단 구현 예시
├── middle/ ← 라우팅 결정 후, 컨트롤러 실행 전
│ └── 01_visit_log.php ← 방문자 로그 기록 (기본 포함)
└── bottom/ ← 출력 완료 직전 (성능 측정•애널리틱스)
└── 99_perf.php ← 성능 측정 예시
9.1 실행 시점
| 폴더 |
실행 시점 |
주요 활용 |
| extend/top/ |
보안 초기화 직후 |
점검 모드, IP 차단, 커스텀 인증 처리 |
| extend/middle/ |
라우팅 결정 후 |
방문자 로그, A/B 테스트, 리다이렉트 로직 |
| extend/bottom/ |
응답 출력 직전 |
성능 측정, 외부 트래킹 코드 삽입 |
10. data/ — 런타임 데이터
CMS가 실행 중 생성하는 파일들이 저장되는 폴더입니다. 웹 서버는 이 폴더에 쓰기 권한을 가져야 합니다.
data/
├── cache/ ← 파일 캐시 저장 (.cache 파일)
│ ├── settings_*.cache ← 사이트 설정 캐시 (TTL 5분)
│ ├── board_*.cache ← 게시판 목록 캐시 (TTL 1분)
│ └── sitemap_*.cache ← 사이트맵 캐시 (TTL 10분)
├── boards/ ← 게시판별 업로드 파일
│ ├── [board_key]/ ← 게시판 키별 업로드 폴더
│ └── [board_key]/.htaccess ← PHP 실행 차단 보안 설정
└── pages/ ← 독립 페이지 업로드 파일
10.1 캐시 자동 무효화
데이터 변경 시 관련 캐시는 자동으로 삭제됩니다.
- 설정 저장 → 전체 캐시 flush
- 게시글 작성/수정/삭제 → 해당 게시판 캐시만 삭제
- 카테고리 변경 → 전체 게시판 목록 캐시 삭제
11. routes/ — URL 라우팅
URL 패턴과 핸들러를 연결하는 라우팅 정의 파일이 위치합니다. core/DxRouter.php가 이 폴더의 정의를 읽어 라우팅을 처리합니다.
| URL 패턴 |
처리 대상 |
| / |
홈 (메인 페이지) |
| /[board_key] |
게시판 목록 |
| /[board_key]/view/[id] |
게시글 보기 |
| /[board_key]/write |
게시글 작성 |
| /[board_key]/edit/[id] |
게시글 수정 |
| /[slug] |
커스텀 독립 페이지 |
| /auth/login |
로그인 |
| /auth/register |
회원가입 |
| /mypage |
마이페이지 |
| /admin |
관리자 대시보드 |
| /api/upload |
파일 업로드 API (CSRF 보호) |
| /api/comment |
댓글 CRUD API |
| /api/like |
좋아요 API |
| /sitemap.xml |
동적 사이트맵 인덱스 |
| /sitemap-posts-N.xml |
게시글 사이트맵 (페이지 분할) |
| /robots.txt |
동적 robots.txt |
12. controllers/ — 페이지 컨트롤러
로그인, 회원가입, 마이페이지, 검색 등 특수 페이지의 처리 로직을 담당하는 컨트롤러 파일들이 위치합니다. 각 컨트롤러는 라우터에 의해 호출됩니다.
13. api/ — 외부 API 엔드포인트
외부에서 직접 접근 가능한 API 엔드포인트 파일들입니다. AJAX 요청이나 외부 연동에 활용됩니다. 모든 API는 CSRF 토큰 검증을 통해 보안이 유지됩니다.
14. install/ — 설치 및 마이그레이션
최초 설치와 버전 업그레이드 시 DB 스키마를 자동 생성•수정하는 마이그레이션 파일이 위치합니다.
install/
├── migrate.php ← 메인 마이그레이션 실행기
├── schema.sql ← 최초 설치용 DB 스키마
└── migrations/ ← 버전별 증분 마이그레이션 파일
├── v1.0.0.php
├── v1.2.0.php ← 마이페이지 프로필 확장 (컬럼 8개 추가)
└── v1.2.3.php ← 소셜 로그인 테이블 추가
15. 보안 구조
DXCMS의 모든 보안 코드는 core/Secure.php 한 파일에 집중되어 있습니다. 보안 패치가 필요할 때 이 파일만 수정하면 됩니다.
| 보안 항목 |
구현 방식 |
| CSRF 방어 |
모든 POST 요청에 토큰 검증 (dx_csrf_token/dx_csrf_verify) |
| XSS 방어 |
출력 시 dx_esc() 이스케이프 함수 강제 사용 |
| 세션 보안 |
HttpOnly • Secure • SameSite=Lax 쿠키 플래그 |
| 파일 업로드 보안 |
MIME 타입 + 확장자 이중 검증, 이중 확장자 공격 차단 |
| 경로 순회 방어 |
Path Traversal 공격 입력값 차단 |
| 비밀번호 해시 |
bcrypt (PHP 5.6 폴백 포함) |
| 보안 헤더 |
X-Frame-Options • X-Content-Type-Options • Referrer-Policy 자동 삽입 |
| Rate Limiting |
단위 시간당 요청 횟수 제한 |
| 업로드 폴더 보호 |
data/boards/ 하위에 PHP 실행 차단 .htaccess 자동 생성 |
16. 훅 시스템
WordPress 방식의 훅 시스템을 지원합니다. 플러그인이나 extend 파일에서 특정 실행 시점에 코드를 삽입할 수 있습니다.
// 훅 등록
dx_add_hook('dx_head', function() {
echo '<link rel="stylesheet" href="/my.css">';
}, 10); // 우선순위 (낮을수록 먼저 실행)
// 훅 실행
dx_do_hook('dx_head');
| 훅 이름 |
실행 위치 |
| dx_head |
<head> 태그 내부 |
| dx_body_bottom |
</body> 직전 |
| dx_board_list_context |
게시판 목록 컨텍스트 생성 후 |
| dx_board_view_context |
게시글 보기 컨텍스트 생성 후 |
| dx_board_after_save |
게시글 저장 후 |
| dx_admin_top |
관리자 본문 상단 |
| dx_editor_render |
에디터 렌더링 시점 |
17. 멀티사이트 구조
dx_sites 테이블에 도메인을 등록하면 도메인별로 완전히 독립된 사이트 설정이 적용됩니다. 하나의 CMS 설치로 여러 사이트를 운영할 수 있습니다.
| 독립 적용 항목 |
설명 |
| 사이트명 • 설명 • URL |
각 도메인별 고유 사이트 정보 |
| 테마 |
도메인마다 다른 테마 적용 가능 |
| 메뉴 그룹 |
도메인마다 다른 내비게이션 메뉴 |
| 언어 • 시간대 |
다국어/다지역 사이트 운영 지원 |
| SEO 사이트맵 |
각 도메인이 자신의 URL 기준으로 독립 생성 |
18. 전체 폴더 구조 요약
DXCMS/
├── index.php 단일 진입점
├── .htaccess Apache URL Rewrite
├── nginx.conf.example Nginx 설정 예시
├── web.config IIS URL Rewrite
│
├── core/ CMS 엔진 (Secure, Cache, SEO, Router, DB, 훅 등)
├── admin/ 관리자 패널 (게시판•회원•통계•설정 등 25개 메뉴)
├── boards/ 게시판 핸들러 + 스킨 (default/gallery/shop)
├── themes/ 프론트엔드 테마 (레이아웃•파트•위젯)
├── plugins/ 확장 플러그인 (에디터•결제•소켓•예제)
├── assets/ 정적 자원 (CSS•JS•CKEditor4•이미지)
├── controllers/ 페이지 컨트롤러 (로그인•마이페이지•검색)
├── routes/ URL 라우팅 정의
├── extend/ 자동 실행 코드 삽입 (top/middle/bottom)
├── data/ 런타임 데이터 (캐시•업로드 파일)
├── pages/ 커스텀 독립 페이지
├── api/ 외부 API 엔드포인트
├── install/ DB 설치 • 마이그레이션
└── docs/ 개발 문서