본문으로 건너뛰기
Convoke — 홈

프로젝트

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·타입 검사·테스트·프로덕션 빌드를 통과한 뒤 사람이 병합합니다.

상태

아직 프로덕션에 배포되지 않았습니다. 첫 병합과 도메인 연결이 남아 있습니다.