약 8개월 전, 저는 이곳에 Umono라는 자체 호스팅 CMS를 게시했습니다. 이 CMS는 '콘텐츠, 테마, 플러그인을 분리하는 것'이라는 하나의 아이디어를 중심으로 구축되었습니다. 당시에는 조회수가 몇천 회가 나왔지만 댓글은 없었습니다. 이는 당연한 수치였습니다. 그때는 주로 이야기와 링크만 담겨 있었기 때문입니다. 그래서 이번에는 Umono가 오늘날 어떻게 생겼고, 어떤 기능을 하는지 보여드리겠습니다.
무엇인가요? 오픈 소스 (MIT) CMS입니다. 하나의 Go 바이너리와 SQLite 파일로 구성되어 있습니다. Linux 및 macOS 환경에서 x86_64와 arm64를 지원합니다. umono.io가 ARM64 VPS 위에서 구동되고 있습니다. CLI(Command Line Interface)를 사용하면 릴리스를 다운로드하고, 체크섬을 검증하며, 사이트를 설정하고 나중에 업그레이드할 수 있습니다. 페이지는 Compono라는 언어로 작성되며, 컴포넌트가 포함된 Markdown 형식을 사용합니다. 관리자 패널에서는 타이핑하는 즉시 페이지 미리보기가 가능합니다. 로컬 또는 S3 호환 스토리지를 지원하는 미디어 라이브러리가 있으며, 이미지는 다양한 크기로 리사이즈됩니다.
AI로 구축되었고, 느낌으로 코딩되지 않았습니다 (Built with AI, not vibe coded). 플레어(flair)에 AI라고 쓰여 있으니, 이것이 무엇을 의미하는지 설명드리겠습니다. 코드는 Claude Code와 opencode 같은 AI 에이전트에 의해 작성되었습니다. 디자인은 그렇지 않습니다. Umono는 '문서 우선(document-first)' 방식으로 개발됩니다. 모든 결정과 사양은 코드보다 먼저 문서로 작성됩니다. 이 과정에 제가 가장 많은 시간을 할애하며, 이것이 프로젝트가 느리게 움직이는 이유입니다. 에이전트는 사양으로부터 작고 구체적인 하나의 작업을 받습니다: 어떤 파일, 어떤 함수, 어떤 동작 방식인지 등을 지정받는 식입니다. 테스트가 가장 먼저 작성됩니다. 새로운 변경 사항은 반드시 실패하는 테스트를 거쳐야만 성공적으로 적용될 수 있습니다. Compono에 대해서는 약 700개의 골든 테스트(golden tests)가 있고, Go 테스트는 약 600개이며, 관리자 패널에는 Playwright 엔드투엔드 테스트가 존재합니다. 저는 사양과 비교하여 모든 변경 사항을 검토합니다. 모든 변경 사항은 GitHub의 풀 리퀘스트(pull request)를 통해 반영됩니다. AI로 작성된 커밋 메시지에는 'Co-Authored-By' 라인에 그 사실이 명시되어 있습니다.
느낌으로 코딩한다는 것은 무언가 작동하는 것처럼 보일 때까지 프롬프트를 반복하는 것입니다. 여기서는 사양이 무엇을 '작동한다'로 정의하는지 결정하며, 테스트들이 이를 유지합니다. 사양은 제 개인 노트에 있지만, 문서는 이 사양으로부터 작성되며, 코드, 테스트, 풀 리퀘스트는 모두 공개되어 있습니다. 이것들을 판단해 주십시오.
0.9 버전의 새로운 기능: 테마(themes) 한 테마는 오직 CSS, 폰트, 이미지로만 구성됩니다. 이는 '계약(contract)'이라고 불리는 게시된 페이지 구조를 스타일링할 뿐이며, 페이지가 무엇을 말하거나 할 수 있는지를 변경할 수는 없습니다. 테마를 전환해도 모든 페이지의 모습은 바뀌지만, 콘텐츠는 전혀 변하지 않습니다.
공식 테마는 두 가지가 있습니다. 간단한 사이트용 Octavo와 블로그용 Folio입니다(위 스크린샷 참조). 사용자는 CLI를 통해 테마 패키지를 설치하며, Umono는 활성화하기 전에 이를 다시 확인합니다.
개인 정보 보호 기본 설정: 공개 페이지는 쿠키를 설정하지 않으며 제3자 요청을 보내지 않습니다. 폰트는 사이트 자체에서 제공하며, Content-Security-Policy는 다른 어떤 것도 허용하지 않습니다. 테마를 활성화할 때, Umono는 umono.dev로의 단일 요청을 통해 해당 계약(contract)을 검증합니다. 이는 계약 버전당 한 번만 발생하며, 사이트 주소를 전송하지 않고, umono.dev는 요청 로그를 보관하지 않습니다.
아직 부족한 점: umono.io를 실행하기에 충분히 안정적이며, 2024년 11월부터 정기적인 릴리스가 있었고 CLI는 사이트를 제자리에서 업그레이드합니다. 하지만 기능적으로 완성된 것은 아닙니다. Compono는 여전히 기술 사용자들을 위한 언어이며, 플러그인 시스템이 아직 없고, 모든 페이지에 메뉴를 작성해야 하는 것과 같은 미흡한 부분이 있습니다.
저는 이 프로젝트에 전념하여 계속 릴리스하고 있습니다. 사용해 보세요: curl -fsSL https://umono.io/install.sh | sh umono create my-website cd my-website umono up 또는 GitHub에서 릴리스를 다운로드하세요. 문서는 빈 디렉토리에서 테마가 적용된 사이트까지 안내합니다: https://docs.umono.dev/getting-started/your-first-site/
제가 알고 싶은 점: 아직 저 외에는 아무도 Umono를 사용하지 않았기 때문에, 실제 사용 경험이 도움이 됩니다. 처음 10분 동안 어디에서 막히셨나요? Compono로 페이지를 작성하는 것이 치명적인 단점인가요? 이 플랫폼에 자신만의 블로그를 운영하기 전에 무엇이 필요할까요? 피드백, 질문 및 비판은 여기 또는 GitHub Discussions: https://github.com/umono-cms/umono/discussions 에 환영합니다. 제출자: /u/abdyek [link] [comments]