처음 블로그는 Markdown 파일만으로 충분했다. 글을 파일로 쓰고, 검토하고, 빌드해서 배포하면 된다. 이 방식은 단순하고 안전하다. 하지만 블로그를 계속 운영하려면 언젠가 웹 화면에서 글을 쓰고 고칠 수 있어야 한다.
댓글도 마찬가지다. 독자가 의견을 남길 수 있으면 글은 닫힌 문서가 아니라 대화의 출발점이 된다. 다만 교육과 AI를 다루는 블로그에서 댓글을 바로 공개하는 것은 좋은 선택이 아니다. 승인 과정이 필요하다.
그래서 이 블로그에는 웹 편집과 댓글 승인을 위한 작은 CMS 구조를 붙였다.
Markdown과 D1을 함께 쓰기
기존 글은 계속 Markdown으로 둔다. 이미 저장소 안에서 검토할 수 있고, 변경 이력이 남으며, 블로그의 기본 포트폴리오 글로 쓰기 좋기 때문이다.
새로 웹 관리자에서 쓰는 글은 Cloudflare D1에 저장한다. 이렇게 하면 /admin 화면에서 제목, 주소, 설명, 본문, 카테고리, 발행 상태를 바꿀 수 있다. Markdown 글과 D1 글은 공개 목록에서 함께 보이도록 합쳤다.
이 구조는 완전히 깔끔한 CMS는 아니다. 대신 지금 필요한 만큼만 동작한다. 저장소 기반 글과 웹 기반 글을 동시에 유지하면서, 나중에 어느 쪽을 중심으로 갈지 선택할 수 있다.
댓글은 바로 공개하지 않는다
댓글은 글 하단에서 받을 수 있지만, 처음에는 pending 상태로 저장된다. 관리자가 /admin에서 승인해야 공개된다. 이 과정은 번거롭지만 필요하다.
블로그가 다루는 주제는 교육, 학생 상담, AI 도구, 입시 데이터다. 댓글이 엉뚱한 방향으로 흐르거나 개인 정보가 섞일 가능성을 무시할 수 없다. 그래서 공개 전에 한 번 멈추는 구조를 둔다.
댓글 기능의 목표는 많은 반응을 모으는 것이 아니다. 글을 읽은 사람이 질문이나 의견을 남길 수 있는 통로를 열어 두는 것이다. 공개 여부는 블로그의 책임 안에서 결정해야 한다.
큰 CMS보다 작은 운영 도구
처음부터 거대한 관리자 시스템을 만들 수도 있었다. 하지만 지금 필요한 것은 복잡한 권한 관리나 편집 워크플로가 아니다. 글을 쓰고, 고치고, 발행 상태를 바꾸고, 댓글을 승인하는 정도면 충분하다.
그래서 구조도 작게 잡았다. D1에는 글, 댓글, 관리자 세션 테이블만 둔다. 관리자 로그인은 비밀번호 해시와 세션 쿠키로 처리한다. 공개 글 페이지는 승인된 댓글만 보여준다.
아직 실제 Cloudflare 리소스 생성과 원격 migration은 남아 있다. 하지만 방향은 정해졌다. 블로그는 정적 문서에서 출발했지만, 필요한 만큼만 동적 기능을 갖춘 포트폴리오 출판 도구로 확장하고 있다.
이 구조가 안정되면 다음 단계는 글쓰기 자동화가 아니라 편집 기준을 더 엄격하게 만드는 일이다. 쉽게 발행할 수 있게 되었을수록, 무엇을 공개하지 않을지 정하는 기준이 더 중요해진다.
댓글
아직 공개된 댓글이 없습니다.