📦 이 문서는 v1 이전 자료(deprecated)입니다 — 최신 정보는 문서 허브를 보세요
📋 PRD · 식재료 도감 라이브 배포 명세

식재료 도감 — PRD + IA

147종 → 650종 → 10,000+종 확장 로드맵 · 페이지·기능·API·DB·릴리즈 단계 풀 명세

🎯 23 기능 요구 📐 7 비기능 요구 🗂 5 페이지 🚀 3 릴리즈 단계
━ 1. PRODUCT OVERVIEW ━

1. 개요

"우리 아이 평생 식습관 사전"

로그인 X · 누구나 · 식재료 한 개씩 클릭하며 영양·제철·SOS·레시피·부모 경험 수집. SEO 폭발 + 가입 funnel + 키트 구매 진입로.

1-1. 비전

1-2. 사용자 가치

가치설명
📚 학습식재료별 KDRI 영양·제철·SOS 가이드 한 곳에
💬 공유다른 부모 경험 댓글 자유 열람·작성
🎯 행동친해지기 SOS 6단계 → 키트 진입
🌸 계절이번 달 제철 식재료 자동 노출
⭐ 등급"초등 입학 전 꼭 친해질 21종" — 마케팅 후크

1-3. 비즈니스 가치

━ 2. PERSONAS ━

2. 사용자 페르소나

👩 첫째 엄마 (28-35세, 직장맘) — 1순위 타겟

"우리 아이 시금치 거부하는데 어떻게 해야 하지?" 네이버 검색 → 도감 진입 → 식재료 SOS 6단계 학습 → 가입 → 키트 구매

👨 둘째 아빠 (32-40세) — 2순위 타겟

"첫째 시행착오 반복 X. 둘째는 처음부터 학술 근거로." → 도감 전체 둘러보기 → 21 초등 필수 종 → 골고루 키트 구독

👵 손주 양육 조부모 (60-70세) — 3순위 타겟

"옛날엔 다 어떻게든 먹였는데..." → 큰 글씨 · 이모지 · SOS 6단계 그림 가이드 → 며느리에게 도움 보탬

🧑‍⚕️ 영양사·소아과 의사 (전문가) — 4순위 타겟

"환자에게 식재료 정보 안내" → KDRI 정확한 영양 데이터·학술 출처 → 추천 도구로 활용

━ 3. INFORMATION ARCHITECTURE ━

3. IA + 사이트 맵

밀프레드 식재료 도감 (/foods) │ ├── /foods ← 도감 메인 (전체 147종 그리드) │ ├── 검색 + 필터 (등급·카테고리) │ └── 식재료 카드 그리드 │ ├── /foods/시금치 ← 개별 식재료 페이지 (SSG) ├── /foods/당근 ← (650 페이지 자동 생성) ├── /foods/... │ ├── /foods/grade/필수21 ← 등급별 모음 ├── /foods/grade/권장50 ├── /foods/grade/핵심76 │ ├── /foods/category/잎채소 ← 카테고리별 ├── /foods/category/뿌리채소 ├── /foods/category/... │ ├── /foods/season/1월 ← 제철별 ├── /foods/season/2월 ├── /foods/season/... │ └── /foods/sitemap.xml ← SEO 자동 생성

3-1. URL 구조 + SEO

URL 패턴예시SEO 가치
/foods/foods"식재료 도감 영유아"
/foods/:slug/foods/시금치"시금치 이유식", "시금치 영유아", "시금치 거부"
/foods/grade/:grade/foods/grade/필수21"초등 입학 전 식재료", "초등 필수 영양"
/foods/category/:cat/foods/category/잎채소"영유아 잎채소 추천"
/foods/season/:month/foods/season/5월"5월 제철 식재료 아기"

3-2. 페이지 위계

flowchart TD HOME[/foods
도감 메인] DETAIL[/foods/:slug
식재료 상세] GRADE[/foods/grade/:g
등급별] CAT[/foods/category/:c
카테고리별] SEASON[/foods/season/:m
제철별] PERSONAL[/personal-coming
가입 유도] KIT_FOCUS[/kits/focus
집중 키트] KIT_BALANCE[/kits/balance
골고루 키트] HOME --> DETAIL HOME --> GRADE HOME --> CAT HOME --> SEASON GRADE --> DETAIL CAT --> DETAIL SEASON --> DETAIL DETAIL -->|"우리 아이만을 위한 레시피"| PERSONAL DETAIL -->|"집중 키트"| KIT_FOCUS DETAIL -->|"골고루 키트"| KIT_BALANCE PERSONAL -->|"가입 완료"| HOME classDef main fill:#FFE8D1,stroke:#E89244,color:#1F2D3D classDef sub fill:#E8F5E9,stroke:#16A085,color:#1F2D3D classDef cta fill:#F3E5F5,stroke:#9C27B0,color:#1F2D3D class HOME,DETAIL main class GRADE,CAT,SEASON sub class PERSONAL,KIT_FOCUS,KIT_BALANCE cta
━ 4. FUNCTIONAL REQUIREMENTS ━

4. 기능 요구사항 (23개)

4-1. 도감 메인 페이지 (/foods)

FR-01

식재료 카드 그리드 표시

147종을 등급별로 정렬하여 카드 그리드 표시. 등급별 색상 코딩.
승인 기준: ⭐⭐⭐⭐ 21종 우선 표시 · 카드에 이모지·이름·카테고리·등급 라벨 모두 표시 · 등장 빈도 (학교 급식·영유아) 작은 글씨로 표시
FR-02

실시간 검색

식재료명 부분 일치 검색 (한글). 입력 시 즉시 결과 갱신.
승인 기준: 150ms 이내 응답 · 한글 초성 검색 지원 (예: "ㅅㄱㅊ" → 시금치)
FR-03

등급 필터 chip

전체·초등 필수·초등 권장·영유아 핵심·조미료 5개 chip.
승인 기준: 활성 chip 시각적 강조 · 단일 선택 · URL 파라미터 동기화 (?grade=필수21)
FR-04

카테고리 필터 chip

14 카테고리 chip (잎채소·뿌리·열매·버섯·콩·고기·생선·갑각·계란·유제품·곡물·과일·해조·견과).
승인 기준: 가로 스크롤 · 활성 chip 강조 · 등급 필터와 AND 결합
FR-05

결과 카운트 표시

"N종" 카운트 실시간 갱신.
승인 기준: 필터 변경 시 즉시 갱신 · "0종" 시 안내 메시지

4-2. 식재료 상세 페이지 (/foods/:slug)

FR-06

식재료 헤더 (이름·등급·카테고리)

큰 이모지 + 한글 이름 + 등급 라벨 + 카테고리.
승인 기준: SSG 빌드 시 OG 이미지 자동 생성 (식재료별 도장)
FR-07

학교 급식·영유아 등장 빈도

아동기 3,397 + 영유아 1,035 레시피 빈도 표시.
승인 기준: 초등 필수 시 강조 메시지 "초등 입학 전 꼭 친해지길"
FR-08

KDRI 36 영양 매핑

100g당 핵심 영양소 ★★★ 등급으로 표시.
승인 기준: 농진청 식품성분표 v10.0 매핑 · 비타민C와 함께 먹으면 철 흡수 3배 같은 흡수율 팁 포함
FR-09

제철 정보

월별 제철 표시 + 현재 달이 제철이면 강조.
승인 기준: 농진청 + 해양수산부 권고 기반
FR-10

친해지기 SOS 6단계

Toomey SOS Approach 6단계 시각화.
승인 기준: 각 단계별 이모지·설명 + "강요는 거부를 강화" 안내
FR-11

일반 레시피 3개 + 가입 유도 CTA

레시피 mock 3개 (즙·다진·통째) + "우리 아이만을 위한 레시피 받기" CTA → /personal-coming.
승인 기준: CTA가 검은 박스 + 황금 텍스트 + 가입 1분 설명 포함
FR-12

부모 댓글 (Disqus 임베드)

로그인 X 누구나 작성. 기존 댓글 표시 + 작성 폼.
승인 기준: Disqus 임베드 · 광고·외부 링크 자동 모더레이션 안내
FR-13

키트 CTA 2종

집중 키트 ₩200k + 골고루 키트 월 ₩108k 자연 노출.
승인 기준: 식재료 친해지기 어려움 = 집중 키트 / 다양성 보강 = 골고루 키트 컨텍스트 정합

4-3. 필터 페이지 (등급·카테고리·제철)

FR-14

등급별 모음 (/foods/grade/:g)

필수21·권장50·핵심76·조미료 4 페이지 자동 생성.
승인 기준: SEO 메타 자동 · 필수21 페이지는 "초등 입학 전 식재료 21종" 헤드라인
FR-15

카테고리별 모음 (/foods/category/:c)

14 카테고리 페이지 자동 생성.
승인 기준: 카테고리별 한글 가이드 (잎채소 = 시금치·근대·아욱·청경채·케일·상추)
FR-16

제철별 모음 (/foods/season/:month)

12개월 페이지 자동 생성.
승인 기준: 현재 달 자동 우선 노출 · 5월 = 죽순·새우·딸기 강조

4-4. SEO + Meta

FR-17

자동 메타 태그 생성

각 페이지 title·description·OG·canonical 자동 생성.
승인 기준: 검색 노출 시 한글 제목·설명 정확 · "시금치 영유아" 검색 시 상위 5위 목표
FR-18

sitemap.xml 자동 갱신

매일 enrich 후 자동 sitemap 업데이트 + Google·Naver push.
승인 기준: cron 04:00 KST · 650+ URL · 변경된 URL만 lastmod 갱신

4-5. 댓글 모더레이션

FR-19

크론탭 자동 클리닝

매일 03:00 신규 댓글 Claude Haiku로 분류 → safe/review/delete.
승인 기준: 광고·욕설·외부 링크 99% 자동 차단 · 운영자 큐 표시 · soft delete (복구 가능)

4-6. 가입·키트 funnel

FR-20

"우리 아이만을 위한 레시피 받기" CTA

식재료 상세 모달 안에 검은 박스 CTA → /personal-coming.
승인 기준: 모든 식재료 페이지 노출 · 1초 이내 페이지 전환
FR-21

키트 노출 (집중·골고루)

식재료 컨텍스트에 맞춰 자연 추천.
승인 기준: 거부도 낮은 식재료 = 집중 키트 우선 · 일반 = 골고루 키트 우선

4-7. 매일 enrich

FR-22

매일 +50종 자동 enrich

cron 04:00 농진청 DB에서 next 50종 → LLM 분류 → SSG 빌드.
승인 기준: 1년 후 ~18,000종 도달 · 비용 월 ₩12k 이내

4-8. 분석·모니터링

FR-23

PostHog 이벤트 트래킹

페이지 view, 검색, 필터, 카드 클릭, CTA 클릭, 가입 전환 추적.
승인 기준: 일/주/월 대시보드 · 식재료별 인기도 · 검색어 분석
━ 5. NON-FUNCTIONAL REQUIREMENTS ━

5. 비기능 요구사항 (7개)

NFR-01

성능 — LCP < 2초

Lighthouse 모바일 점수 95+. 도감 메인·상세 모두 LCP 2초 이내.
SSG + ISR · 이미지 최적화 (WebP·AVIF) · 코드 분할
NFR-02

SEO — 한국 검색 노출

"식재료명 + 영유아·이유식·아기" 검색 시 상위 5위 목표.
개별 URL · meta 자동 · OG 이미지 · sitemap · canonical · Naver Search Advisor 등록
NFR-03

접근성 — WCAG AA

색 대비 4.5:1+ · 키보드 네비 · 스크린 리더 대응.
aria-label · 색에만 의존 X · 폰트 최소 14px (caption 11px)
NFR-04

모바일 우선

DAU 80%+ 모바일 가정. 반응형 + 터치 영역 44×44.
스와이프 chip 가로 스크롤 · 모달 bottom sheet · safe-area-inset
NFR-05

보안 — 댓글 XSS

댓글 입력 sanitize · prompt injection 방지.
React 자동 escape · Disqus 자체 보안 · 운영자 백도어 X
NFR-06

비용 — 월 ₩15k 이내

enrich + Vercel + 도메인 합산.
SSG로 서버 호출 최소화 · Haiku 분류만 사용 · CDN 캐시 활용
NFR-07

국제화 (Phase 2)

한·영 다국어 지원 (글로벌 진출 시).
i18n 라이브러리 · /en/foods/spinach · hreflang 메타
━ 6. SCREEN SPECIFICATIONS ━

6. 화면 명세 (5 페이지)

6-1. 화면 목록

화면URL핵심 컴포넌트참조
도감 메인/foodsHero·통계·필터·그리드FR-01~05·17
식재료 상세/foods/:slug헤더·빈도·영양·제철·SOS·레시피·댓글·키트FR-06~13·20·21
등급별/foods/grade/:gHero·필터된 그리드FR-14
카테고리별/foods/category/:cHero·필터된 그리드FR-15
제철별/foods/season/:mHero·필터된 그리드·월 강조FR-16

6-2. 디자인 토큰 (design-spec.html 참조)

컬러: --p500 #E89244·--g500 #16A085·--s800 #1F2D3D·등급별 컬러 코딩

타이포: Pretendard Variable·H1 32px·H2 24px·Body 14px·Caption 11px

간격: 4px 그리드 (4·8·12·14·16·20·24·32)

━ 7. DATA MODEL ━

7. 데이터 모델 (Supabase Postgres)

-- 식재료 마스터 (확장 가능)
CREATE TABLE ingredients (
  id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
  slug TEXT UNIQUE NOT NULL,           -- '시금치', URL용
  name TEXT NOT NULL,                   -- 한글 정식명
  name_en TEXT,                          -- 영문 (다국어)
  emoji TEXT,
  category TEXT,                          -- 14 카테고리
  grade TEXT,                             -- '초등 필수'·'권장'·'핵심'·'조미료'
  elem_count INT,                          -- 아동기 레시피 등장 빈도
  infant_count INT,                        -- 영유아 등장 빈도
  nutri_per_100g JSONB,                    -- KDRI 36 영양소
  allergens TEXT[],
  seasonality INT[],                        -- 제철 월 [5,6,7]
  status TEXT,                              -- 'verified'·'ai_enriched'
  source TEXT,                              -- '농진청'·'KDRI'·'LLM'
  enriched_at TIMESTAMPTZ,
  meta JSONB                                -- 추가 메타 (SOS·tip 등)
);

-- 댓글 (Disqus 미러 또는 자체)
CREATE TABLE ingredient_comments (
  id UUID PRIMARY KEY,
  ingredient_id UUID REFERENCES ingredients(id),
  author_nickname TEXT,                    -- 익명 닉네임
  body TEXT NOT NULL,
  like_count INT DEFAULT 0,
  status TEXT DEFAULT 'pending',         -- pending·approved·rejected
  moderation_reason TEXT,
  deleted_at TIMESTAMPTZ,
  created_at TIMESTAMPTZ DEFAULT NOW()
);

-- enrich 큐 (매일 +50종)
CREATE TABLE ingredient_enrich_queue (
  id UUID PRIMARY KEY,
  name TEXT,
  scheduled_for DATE,
  status TEXT,                              -- pending·processing·done·failed
  source_db TEXT,                            -- '농진청'
  processed_at TIMESTAMPTZ
);

-- RLS: 댓글 조회는 공개, 작성은 IP rate limit
CREATE POLICY "public read approved" ON ingredient_comments
  FOR SELECT USING (status = 'approved');
━ 8. API SPECIFICATIONS ━

8. API 명세 (6 엔드포인트)

MethodPathDescription인증
GET/api/foods/ingredients전체 식재료 목록 (페이지네이션)X (공개)
GET/api/foods/:slug식재료 상세X
GET/api/foods/:slug/comments승인된 댓글 목록X
POST/api/foods/:slug/comments댓글 작성 (rate limit IP 5/시간)X
POST/api/foods/comments/:id/like좋아요 (IP 중복 차단)X
POST/api/admin/enrichenrich 수동 트리거admin
━ 9. DAILY ENRICH PIPELINE ━

9. 매일 +50종 enrich 파이프라인

flowchart LR CRON[cron 04:00 KST] QUEUE[(enrich_queue
50종 pick)] HAIKU[Claude Haiku
분류·메타데이터] NONGJIN[농진청 DB
영양 매핑] VISION[Claude Vision
일러스트
or stock] SAVE[(ingredients
upsert)] BUILD[Next.js
ISR 빌드] SITEMAP[sitemap.xml
업데이트] PUSH[Google·Naver
색인 push] CRON --> QUEUE --> HAIKU --> NONGJIN --> VISION --> SAVE --> BUILD --> SITEMAP --> PUSH

9-1. 비용

항목월 비용
Haiku 분류 (50종/일 × 30일)₩2,000
Vision 일러스트 (또는 stock)₩10,000
Vercel ISR 빌드₩0 (free tier)
합계~₩12,000/월
━ 10. RELEASE PLAN ━

10. 출시 단계 (3 phase)

v0 MVP (현재 라이브) DAY 0

  • 147종 정적 SSG · 단일 페이지 (/foods.html, 기존 /dex.html은 301 redirect)
  • mock 댓글 · localStorage 리드
  • 가입 유도 CTA · 키트 노출

v1 (1개월) DAY 30

  • Next.js 15 마이그레이션 · 개별 URL (/foods/:slug)
  • Supabase 통합 · Disqus 임베드
  • 등급별·카테고리별·제철별 자동 페이지 (총 ~30 페이지)
  • 크론탭 댓글 클리닝 작동
  • 매일 +50종 enrich 자동화 시작
  • Google·Naver Search Console 등록

v2 (3개월) DAY 90

  • 650+ 종 도달 (농진청 핵심 완료)
  • 한국어 SEO 검색 결과 상위 3위 (50+ 키워드)
  • 월 방문 50,000+ 달성
  • 도감 → 가입 전환율 5%+ 달성
  • 다국어 (영·일) 준비
━ 11. KPI ━

11. KPI · 성공 지표

지표3개월 목표6개월 목표측정 도구
월 방문 (도감)50,000200,000PostHog · Google Analytics
평균 체류 시간≥ 3분≥ 5분PostHog
식재료 상세 모달 오픈율≥ 60%≥ 70%이벤트 트래킹
가입 전환율 (도감 → personal-coming)≥ 3%≥ 5%funnel 분석
SEO — 검색 노출 (상위 10위)100 키워드500 키워드Search Console
댓글 수 (UGC)500개5,000개DB
키트 진입 클릭월 1,000월 10,000이벤트