From a40377a3e4f7969c612cc2de8785621e1a1fa11d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=B0=EC=83=81=EB=B9=88?= Date: Sat, 15 Aug 2026 19:44:02 +0900 Subject: [PATCH] content: drop broken repo-path links from the project intro post DESIGN.md/CONTENT.md/DEPLOY.md and tests/markdown-boundary.test.ts were linked as if they were site routes, copied over from README.md. The published blog has no route for these repo paths, so the links 404. Keep the filenames as inline code instead of dead links. Co-Authored-By: Claude Sonnet 5 --- content/posts/true-log-project-introduction.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/posts/true-log-project-introduction.md b/content/posts/true-log-project-introduction.md index 4bfd60e..0ad820b 100644 --- a/content/posts/true-log-project-introduction.md +++ b/content/posts/true-log-project-introduction.md @@ -8,7 +8,7 @@ draft: false pinned: true --- -True Log는 Markdown을 정적 페이지로 만드는 한국어 기술 블로그다. Next.js App Router 위에서 돌아가지만, **글을 다루는 부분은 프레임워크를 모른다.** MDX는 없다. Markdown 파이프라인은 문자열을 받아 문자열을 돌려주는 순수 모듈로 분리돼 있고, `unified` 생태계만 쓴다. `next`, `react`, `node:*`, `@/*` 어떤 것도 그 안에서 import할 수 없다. 이건 컨벤션이 아니라 [테스트로 강제된다](tests/markdown-boundary.test.ts) — 허용 목록 방식이라, 아무도 예상 못한 import도 그대로 실패한다. 타입 체크만으로는 이걸 잡지 못한다. 모듈 해석이 상위 `node_modules`까지 걸어 올라가기 때문이다. +True Log는 Markdown을 정적 페이지로 만드는 한국어 기술 블로그다. Next.js App Router 위에서 돌아가지만, **글을 다루는 부분은 프레임워크를 모른다.** MDX는 없다. Markdown 파이프라인은 문자열을 받아 문자열을 돌려주는 순수 모듈로 분리돼 있고, `unified` 생태계만 쓴다. `next`, `react`, `node:*`, `@/*` 어떤 것도 그 안에서 import할 수 없다. 이건 컨벤션이 아니라 `tests/markdown-boundary.test.ts` 테스트로 강제된다 — 허용 목록 방식이라, 아무도 예상 못한 import도 그대로 실패한다. 타입 체크만으로는 이걸 잡지 못한다. 모듈 해석이 상위 `node_modules`까지 걸어 올라가기 때문이다. 글은 `content/posts/.md`에 놓인다. 파일명이 곧 URL이다. Frontmatter에 제목, 날짜, 태그, 카테고리를 쓰고, 필요하면 `draft`와 `pinned`를 더한다. `draft: true`인 글과 미래 날짜로 예약된 글은 dev 서버에서는 보이지만 production build에는 들어가지 않는다. 이 판단은 `getAllPosts()` 하나에 모여 있다 — 어떤 글이 공개되는지 결정하는 곳이 파일 하나뿐이라는 뜻이다. @@ -31,6 +31,6 @@ src/ config/ site · navigation · integrations ``` -문서는 세 개로 나눠 뒀다. [DESIGN.md](DESIGN.md)는 색상·타이포그래피·간격·컴포넌트 규칙을, [CONTENT.md](CONTENT.md)는 frontmatter 스키마와 작성 규칙을, [DEPLOY.md](DEPLOY.md)는 컨테이너 배포와 캐시 정책, 보안 헤더를 담는다. lint, typecheck, test, build 네 개의 게이트가 모든 PR에서 돈다. +문서는 세 개로 나눠 뒀다. `DESIGN.md`는 색상·타이포그래피·간격·컴포넌트 규칙을, `CONTENT.md`는 frontmatter 스키마와 작성 규칙을, `DEPLOY.md`는 컨테이너 배포와 캐시 정책, 보안 헤더를 담는다. lint, typecheck, test, build 네 개의 게이트가 모든 PR에서 돈다. 이 블로그에 쓰는 글은 대부분 구현하면서 실제로 마주친 질문과 그 답을 담는다. 왜 이 캐시 전략을 골랐는지, 왜 이 경계를 이렇게 그었는지, 나중에 조건이 바뀌면 무엇을 다시 볼지. True Log 자체가 그 기록의 첫 번째 대상이다.