DevNote — 이 사이트는 어떻게 만들어졌나

테마지도(korea-info-map.com) 의 데이터·API·기술 스택을 모두 공개합니다. 같은 방식으로 만들고 싶은 분들이 참고할 수 있도록 전 과정을 기록했습니다.

1. 무엇을 만들었나

한국 산후조리원 472곳의 가격·위치·주변 인프라·운영 정보를 한 화면에서 비교할 수 있는 지도입니다. 다른 산후조리원 정보 사이트와 가르는 두 가지 강점:

  • 비용 분석 — 일반실 / 특실 가격, 시군구 평균 대비 비교, 8년치(2018~2025) 가격 추이 시계열, 3주 비용 안내(2주 + 50% 추가)
  • 주변 인프라 동시 조회 — 시설별로 가까운 지하철 · 산부인과 · 종합병원 · 버스정류장 거리를 미리 계산

2. 데이터 소스 연대기

  1. 1차 (2025)가격

    보건복지부 「산후조리원 현황」 공시 자료

    data/raw/postpartum-care-2025-h2.xlsx — 반기마다 한 번씩 갱신되는 PDF/Excel. 일반실 / 특실 가격(14일 기준), 운영주체, 주소, 전화번호.

    URL: mohw.go.kr → 정책정보 → 산후조리원 현황

  2. 2차 (2018~2025)가격 시계열

    14년치 반기별 산후조리원 현황

    같은 보건복지부 페이지에서 과거 반기 자료 14개를 모두 받아 시설별 가격 추이를 만들었습니다. 시설명·전화번호로 매칭(471/473 시설 커버).

    스크립트: scripts/ingest-postpartum-history.mts · xlsx 스키마 4종 · 매칭 폴백: 전화 → 주소+이름 → 이름+시군구

  3. 3차 (2026-05)영업상태/인력/정원

    행정안전부 LOCALDATA API

    매일 갱신되는 공공 API 로 영업상태(영업/폐업/휴업), 인허가일자, 산모/영아 정원, 간호사 / 간호조무사 / 영양사 / 조리사 인원을 가져옵니다.

    Endpoint: https://apis.data.go.kr/1741000/postpartum_care/info
    포털: data.go.kr/data/15154981
    인증: serviceKey (URL 인코딩된 키 verbatim 박기 — 더블 인코딩 금지)
    페이지네이션: numOfRows 100 으로 캡됨, 11페이지 순회

  4. 좌표좌표 변환

    카카오 REST API (지오코딩)

    주소 텍스트를 위경도 좌표로 변환. 빌드 타임에만 호출하고 결과를 JSON 캐시(data/cache/geocode.json)에 영구 저장 → 재빌드 시 외부 API 호출 0회.

    Endpoint: dapi.kakao.com/v2/local/search/address.json · 폴백: 주소 검색 실패 시 키워드 검색(시군구 + 시설명)

  5. 주변 인프라POI

    카카오 REST API (장소 검색)

    각 시설 좌표를 중심으로 반경 검색해서 가까운 지하철역 · 산부인과 · 종합병원 · 버스정류장 정보를 미리 계산해 둡니다.

    스크립트: scripts/ingest-postpartum-nearby.mts · 결과: data/parenting/postpartum-nearby.json

  6. 버스정류장보조

    국토교통부 전국 버스정류장 데이터

    CSV 원본을 시설 좌표와 매칭. 카카오 API 호출 줄이는 용도로 사용.

    원본: data/raw/국토교통부_전국 버스정류장 위치정보_*.csv

3. 종합 등급 (S/A/B/C/D) 산정 기준

시설 상세 페이지 우상단에 표시되는 종합 등급은 다섯 가지 축의 가중 평균입니다. 결측 정보가 있는 축은 분모에서도 빠지므로 정보 부족 패널티는 주지 않습니다.

가중치기준
케어 밀도25%산모 정원 ÷ 간호 인력(간호사 + 간호조무사). 산모 2명당 간호인력 1명이면 만점, 6명당 1명이면 0점
영양 · 조리 인력20%(영양사 + 조리사) ÷ 산모 정원. 산모 20명당 1명이면 만점
가격 합리성25%시군구 평균 대비. 평균의 70% 이하면 만점, 130% 이상이면 0점
영업 안정성15%영업 5년 이상이면 만점, 신규(0년) 는 0.3 부터 시작
정원 적정성15%산모 정원이 작을수록 ↑. 20명 이하 만점, 50명 이상 0점

등급 임계: S 88점 이상 (상위 ~10%) · A 75~87점 ·B 62~74점 · C 50~61점 ·D 50점 미만 · 폐업·휴업 시설은 등급을 부여하지 않습니다.

소스: src/lib/parenting/grade.ts

4. 기술 스택

  • Next.js 16 (App Router, Turbopack, React 19) — 모든 페이지를 빌드 타임에 정적 HTML 로 생성(SSG). 600개 이상의 페이지가 미리 만들어져 있어 검색엔진 색인이 빠릅니다.
  • Tailwind CSS v4 — 디자인 토큰은 globals.css 의 CSS 변수로 정의(--theme-50/100/300/500/700). Toss · Apple · 카카오 디자인 톤 합성.
  • 카카오맵 SDK — 지도 + 마커 렌더링. 한국 행정구역 · 지하철 · 도로명 정보가 가장 정확.
  • Vercel — 정적 호스팅 + GitHub 자동 배포. 빌드 타임에 모든 데이터가 처리되므로 서버 비용 거의 0.

5. 데이터는 모두 빌드 타임에 처리

외부 API(카카오 / data.go.kr)는 모두 빌드 타임 또는 ingest 스크립트에서만 호출합니다. 런타임에서는 외부 API 호출이 없습니다.

  • SEO 점수 안정 — 첫 응답이 즉시
  • API 무료 한도 절약 — 좌표는 한 번 정해지면 안 변하므로 캐시
  • API 키가 운영 환경에 남아 있을 필요 없음 (보안 상한선)

ingest 스크립트 목록

  • npm run ingest:postpartum-care — 보건복지부 xlsx → 지오코딩 → JSON
  • npm run ingest:postpartum-history — 14년치 반기별 xlsx → 시계열 JSON (외부 API 호출 0회)
  • npm run ingest:postpartum-localdata — 행정안전부 LOCALDATA API → 영업상태 / 정원 / 인력 JSON
  • npm run ingest:postpartum-nearby — 시설별 주변 POI 검색 (카카오 장소 검색 API)

6. 직접 만들어 보고 싶다면

비슷한 사이트를 만들고 싶다면 다음 단계를 따라가면 됩니다:

  1. data.go.kr 가입 → 활용 신청: 원하는 카테고리의 LOCALDATA API 신청 (산후조리업은 15154981). 즉시 자동 승인 · 1~2시간 후 활성화.
  2. 카카오 디벨로퍼스 가입 → 앱 생성: REST API 키 + JavaScript 키 발급. 도메인 화이트리스트에 본인 도메인 등록.
  3. 보건복지부 또는 다른 정부 부처 공시 자료: 가격· 질적 정보가 있는 카테고리(어린이집·요양원 등)는 PDF/Excel 로 매년 업데이트. xlsx 파싱 스크립트로 자동화.
  4. Next.js + Vercel + 카카오맵: 위 스택 그대로. SSG 로 모든 페이지를 빌드 타임에 만들어 두면 호스팅 비용도 거의 들지 않습니다.
  5. 소스 그대로 참고: 이 사이트의 ingest 스크립트는 모두 비슷한 패턴입니다. xlsx 컬럼 인덱스만 바꾸면 다른 카테고리에 그대로 재활용 가능합니다.

마지막 업데이트: 2026-05-03 · 모든 데이터 출처는 위 표기. 데이터는 공시일 기준이므로 실제 시설에 직접 확인하시는 것을 권장합니다.