우리의 Go CMS가 이제 5개 언어를 지원하고, 스스로 테마를 적용하며, 404에 대해 명상합니다
Source: Dev.to
우리는 ForgeCMS – Codeberg 저장소에서 콘텐츠를 가져와 월 €1 VPS에서 제공하는 Go 기반 CMS를 만들고 있습니다. 데이터베이스가 없습니다. 워드프레스도 없습니다. 후회도 없습니다.
오늘 우리는 프로토타입을 넘어 실제 제품처럼 느껴지는 릴리스를 배포했습니다.
🌍 프레임워크 없이 Proper i18n
go-i18n이나 번역 라이브러리를 사용하지 않았습니다. 대신 언어 해석을 SML 페이지 시스템에 직접 구현했습니다:
- 첫 방문 시
Accept-Language헤더 감지 lang쿠키를 설정하는/lang스위처 엔드포인트Page{lang: "es"}로 페이지별 언어 오버라이드
Fallback 체인: atesti/es/index.sml → atesti/index.sml
결과: 바르셀로나에서 온 방문자는 자동으로 스페인어 페이지에 도착합니다. 카탈루냐에서 온 방문자는 카탈라어를 보게 됩니다. JavaScript가 필요 없습니다.
lang-specific SML pages (atesti/es/index.sml fallback to index.sml)
Page{lang:} override for per-page content language
Markdown{src:} with lang injection and no‑lang fallback
또한 현재 언어를 소스 경로에 삽입하는 새로운 Markdown{src:} 구문을 추가했습니다 – 따라서 content.md가 존재한다면 content-es.md 로 자동 변환되고, 없을 경우 기본 파일로 조용히 대체됩니다.
🎨 SML 기반 테마 시스템
테마가 이제 일급 객체가 되었습니다. 두 파일이 모든 것을 제어합니다:
theme.sml– 라이트 모드 CSS 커스텀 프로퍼티theme-dark.sml– 다크 모드 오버라이드
전체 사이트 색상 팔레트, 간격, 타이포그래피가 이 두 파일에서 흐릅니다. 템플릿 곳곳에 흩어져 있던 하드코딩된 HEX 값이 없습니다. 우리의 SML 선언형 UI와 같은 철학을 따릅니다: 의도를 선언하고, 시스템이 나머지를 처리하게 하라.
🔗 OG 메타 태그 + 이미지 경로 해석
이제 모든 페이지가 올바른 OpenGraph 태그를 출력합니다:
og:title, og:description, og:url, og:image
Image{src:} 가 상대 경로를 자동으로 Codeberg raw URL 전체 형태로 변환합니다 – 따라서 콘텐츠 작성자는 이미지가 CDN 어디에 있는지 고민할 필요가 없습니다.
💀 Guru Meditation 오류 페이지
404와 500 페이지가 이제 Amiga 스타일의 Guru Meditation 화면으로 렌더링됩니다:
Software Failure. Press left mouse button to continue.
Guru Meditation
#00000404.DEADBEEF
← back to safety
Amiga에 대한 러브레터이며, 80년대 Toolbox 잡지로 코딩을 배운 사람이 만든 CMS와 완벽히 어울립니다.
🏗️ 내부 구조
실제 의미 있는 인프라 개선 몇 가지:
- ETagFor() – 자산에 대한 올바른 캐시 지문
- Stale cache fallback – Codeberg에 접근할 수 없을 때 마지막으로 정상적인 콘텐츠 제공
- ErrNotFound sentinel – 문자열 매칭 대신 깔끔한 오류 타입 전파
- Asset fingerprinting fix – 파비콘(새싹 🌱 SVG)이 이제 캐시를 올바르게 무효화
- Site‑wide
Menu{}andFooter{}–app.sml에 한 번 정의하고 모든 곳에서 렌더링
⚖️ 듀얼 라이선스
프로젝트는 이제 GPL v3 + 상업용 라이선스 하에 제공됩니다. Qt 모델을 그대로 따릅니다.
- 오픈 소스는 오픈 소스를 위해.
- 상업용 라이선스는 상업적 사용을 위해.
수익은 의도된 커뮤니티 인프라를 위한 토지 구매에 사용됩니다 – 하지만 이는 별도의 포스트에서 다룹니다.
다음 계획
실제 작동하는 프로토타입은 atesti.crowdware.info – Atesti para Dana 라는 선물 기반 대안 화폐가 Minuto 프레임워크 위에 구축된 곳입니다.
다음 목표: 지속 가능한 IndexedDB를 갖춘 SMS/WASM 검색 인덱스 구축, 이를 통해 백엔드 쿼리 없이 CMS 자체 콘텐츠를 검색할 수 있게 합니다.
작고 인간 중심이며 기발한 무언가를 만들고 있다면 – 우리는 Codeberg에서 활동하고 있습니다.
Forge 4D 생태계의 일부 – 선언형 UI, 네이티브 컴파일, 클라우드 불필요.