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