Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
공통 기능 모듈 (재사용 코드 보관소)
생성 사이트에 반복해서 들어가는 기능을 표준 코드로 보관한다. AI 가 사이트를 만들거나 수정할 때
켜진 모듈의 widget.html 이 프롬프트에 그대로 들어가고, 사이트 디자인에 맞게 CSS 만 바꿔서 쓴다.
구조
modules/<id>/widget.html— 사이트에 삽입되는 표준 마크업. 맨 위 주석 블록 "재사용 설정" 에 바꿔도 되는 값(데이터 속성)과 바꾸면 안 되는 값을 적는다. v1.3.16: 화면에 보이는 글자는 템플릿에 직접 쓰지 않고{{t:문구id}}로 쓴다(원문은locales/site/ko.json, 사이트 본문 언어로 채워짐 —lib/sitemsg.js renderTemplate). 런타임(public/wm-modules.js)도L('문구id', {값})만 쓰고, API 오류는sitemsg.err('err.…')로 만든다. 새 문구는scripts/site-msg-catalog.py에 추가하고 실행한다.public/wm-modules.js— 모든 모듈의 브라우저 런타임(목록 조회·전송·렌더). 사이트는<script src="<서비스>/wm-modules.js">로 불러오고, 동작은data-*속성으로만 설정한다. 사이트별 하드코딩이 없으므로 한 번 고치면 모든 사이트에 반영된다. 사이트 안에 복사해 쓰고 싶으면 파일을 그대로js/wm-modules.js로 두고 src 만 바꾼다.lib/modules.js— 서버(API·저장소·권한·관리자 기능). 모듈 목록(CATALOG)에 설정 스키마와 관리자 표 열이 정의되어 있다.- 관리자 페이지 —
/site-admin/<사이트ID>/(별도 페이지, 사이트 관리자 계정 또는 빌더 로그인) 와 빌더 관리 탭 안의 "여기서 관리"(같은 페이지를 내장) 두 방식 모두 가능.
치환 토큰
{{SITE_ID}} 사이트 ID, {{API}} 이 사이트의 모듈 API 주소(<서비스>/api/m/<사이트ID>), {{SCRIPT}} 런타임 스크립트 주소.
그 밖의 {{대문자}} 는 모듈 설정값(소문자 키) 으로 치환된다(예: {{STYLE}} → settings.style).
모듈
| id | 기능 | 데이터 |
|---|---|---|
| members | 회원가입·로그인(사이트 범위 토큰) | members |
| board | 게시판: 리스트형/포럼형, 읽기·쓰기·댓글 권한, 비밀글, 댓글·답글·비밀댓글 | posts, comments |
| inquiry | 문의폼: 유형·발신자·제목·내용·첨부 → 관리자 페이지·빌더·이메일 | (빌더 inquiries 저장소) |
| survey | 설문/참가 신청 양식(구글폼식 문항) → 관리자 페이지·xlsx·이메일 | surveys, responses |
| booking | 예약: 가능 요일·시간대·간격·정원, 예약 접수·확정 | bookings |
| gallery | 사진·포트폴리오 격자 + 크게 보기 | gallery |
| map | 주소 → 지도(OpenStreetMap/Leaflet, 확대·축소) | 설정만 |
| reviews | 후기 접수 → 승인 → 리스트/칸반 | reviews |
| faq | 질문·답변 아코디언 | faq |
| blog | 블로그: 글·검색·분류·태그·댓글 (v1.4.0) | blogPosts, blogComments |
| library | 자료실: 파일 올리기·내려받기 (v1.4.0) | libraryFiles |
| calendar | 일정관리: 월간·주간·일간 캘린더, 음력·만세력 간지·24절기 표시, 시·분/일/주 단위 일정, 반복, 음력 기준 일정 (v1.4.18, lib/calendar.js·lib/lunar.js, docs/CALENDAR.md) |
events |
새 모듈 추가 방법
lib/modules.jsCATALOG 에 항목(label, desc, feature, options, collections) 추가, 필요한 API 함수 작성.modules/<id>/widget.html작성(재사용 설정 주석 포함).public/wm-modules.js에 렌더러 추가(R.<id>),public/site-admin.js에 관리 화면(대부분 범용 표로 충분).