Skip to content

아키텍처 개요

English

핵심 흐름

NotionNext의 주요 흐름은 다음처럼 단순화할 수 있습니다.

  1. 데이터 가져오기 계층(lib/db/)
    Notion에서 데이터를 가져오고, 구조 정규화, 필드 매핑, 캐시, 중복 제거를 수행합니다.
  2. 서버 데이터 조립 계층(lib/db/SiteDataApi.js)
    allPages / tagOptions / categoryOptions / siteInfo 등을 일관된 형태로 생성합니다.
  3. 라우팅 계층(pages/)
    getStaticProps/getStaticPaths에서 페이지 단위 필터링, 페이지네이션, 렌더링 준비를 처리합니다.
  4. 테마 계층(themes/)
    각 테마는 통일된 데이터 계약에 따라 props를 소비하고 서로 다른 UI를 렌더링합니다.

데이터 우선순위

설정 읽기 우선순위(높음 -> 낮음):

  1. Notion Config 테이블의 같은 이름 키
  2. 환경 변수(.env.local / 배포 플랫폼 env)
  3. blog.config.js + conf/*.config.js

“데이터 계층으로 내리기”를 강조하는 이유

어떤 정렬/필터링 전략이 “전역 비즈니스 규칙”에 해당한다면, 여러 페이지 라우트에 흩어 두기보다 데이터 계층에 우선 배치합니다.
장점:

  • 변경 범위와 중복 로직을 줄입니다.
  • 누락 수정 위험을 낮춥니다(페이지네이션/카테고리/검색 라우트는 빠뜨리기 쉽습니다).
  • 모든 테마의 동작을 일관되게 만듭니다.

캐시와 빌드 관련

  • 캐시 모듈은 lib/cache/에 있습니다.
  • 빌드 단계의 동시성 및 예열 로직은 lib/build/에 있습니다.
  • 이 모듈들은 CI/CD와 대형 사이트 빌드 속도에 영향을 주므로, 변경할 때는 검증 설명을 함께 남겨야 합니다.