Convoke.space
이 사이트를 굴리는 퍼블리싱 시스템 — 저장소 두 개, 한국어·영어 동등 구조, 에이전트가 유지보수하는 정적 사이트.
- 상태
- 진행 중
- 시작
- 소스
- github.com/convoke-space/public
Convoke.space는 사이트이면서 그 사이트를 퍼블리싱하는 시스템입니다. 이 글은 현재 저장소에 실제로 구현되어 있는 내용을 기록합니다.
구성
- Next.js App Router, TypeScript, Tailwind CSS. 콘텐츠는 디스크 위의 MDX이고, 빌드 시점에 정적으로 생성됩니다.
- 데이터베이스도 인증도 CMS도 없습니다. 콘텐츠는 Git 안의 파일이고, 글을 추가하는 일은 Pull Request 하나입니다.
- 웹폰트와 클라이언트 분석 스크립트가 없습니다. 타이포그래피는 운영체제에 이미 있는 서체만 사용합니다.
- 프런트매터 검증기를 직접 작성했습니다. 의존성 없이 약 300줄이며, 파일 하나의 문제를 한 번에 모아 보고하고 모르는 필드는 빌드를 실패시킵니다.
이중 언어 구조
한국어와 영어가 동등한 1급 경로입니다.
- 콘텐츠는
content/<컬렉션>/<로케일>/아래에 있고, 디렉터리가 로케일의 기준입니다. 프런트매터에 로케일을 중복 저장하지 않습니다. - 같은 글의 두 판본은
translationKey로 연결됩니다. 로케일별 슬러그는 서로 달라도 됩니다. /는 어느 언어의 페이지도 아닌 선택 화면입니다. 브라우저 언어에 따른 자동 리다이렉트는 하지 않습니다.- 한쪽 언어판이 없으면 그 URL도, hreflang도 만들지 않습니다.
운영
저장소는 둘입니다. convoke-space/public에는 애플리케이션과 공개된 글이,
convoke-space/private에는 초고와 작업 자료가 있습니다. 프로덕션은 공개
저장소만으로 빌드됩니다. 교차 클론도, 빌드 토큰도, 런타임 조회도 없습니다.
변경은 한 번에 한 사람(또는 한 에이전트)이 소유하는 작업 브랜치에서 이루어지고, Pull Request로 올라와 lint·타입 검사·테스트·프로덕션 빌드를 통과한 뒤 사람이 병합합니다.
상태
아직 프로덕션에 배포되지 않았습니다. 첫 병합과 도메인 연결이 남아 있습니다.