아키텍처 개요
핵심 흐름
NotionNext의 주요 흐름은 다음처럼 단순화할 수 있습니다.
- 데이터 가져오기 계층(
lib/db/)
Notion에서 데이터를 가져오고, 구조 정규화, 필드 매핑, 캐시, 중복 제거를 수행합니다. - 서버 데이터 조립 계층(
lib/db/SiteDataApi.js)allPages/tagOptions/categoryOptions/siteInfo등을 일관된 형태로 생성합니다. - 라우팅 계층(
pages/)getStaticProps/getStaticPaths에서 페이지 단위 필터링, 페이지네이션, 렌더링 준비를 처리합니다. - 테마 계층(
themes/)
각 테마는 통일된 데이터 계약에 따라props를 소비하고 서로 다른 UI를 렌더링합니다.
데이터 우선순위
설정 읽기 우선순위(높음 -> 낮음):
- Notion Config 테이블의 같은 이름 키
- 환경 변수(
.env.local/ 배포 플랫폼 env) blog.config.js+conf/*.config.js
“데이터 계층으로 내리기”를 강조하는 이유
어떤 정렬/필터링 전략이 “전역 비즈니스 규칙”에 해당한다면, 여러 페이지 라우트에 흩어 두기보다 데이터 계층에 우선 배치합니다.
장점:
- 변경 범위와 중복 로직을 줄입니다.
- 누락 수정 위험을 낮춥니다(페이지네이션/카테고리/검색 라우트는 빠뜨리기 쉽습니다).
- 모든 테마의 동작을 일관되게 만듭니다.
캐시와 빌드 관련
- 캐시 모듈은
lib/cache/에 있습니다. - 빌드 단계의 동시성 및 예열 로직은
lib/build/에 있습니다. - 이 모듈들은 CI/CD와 대형 사이트 빌드 속도에 영향을 주므로, 변경할 때는 검증 설명을 함께 남겨야 합니다.
