1. 개요
"우리 아이 평생 식습관 사전"
로그인 X · 누구나 · 식재료 한 개씩 클릭하며 영양·제철·SOS·레시피·부모 경험 수집. SEO 폭발 + 가입 funnel + 키트 구매 진입로.
1-1. 비전
- 한국 모든 영유아 부모가 "이 식재료 어떻게 먹여야?" 검색하면 밀프레드 도감이 첫 결과
- 로그인 없이 편식 솔루션의 진입로 — 도감 → 가입 → 키트 → 정기 구독 funnel
- 모든 식재료에 부모 경험 댓글 = 한국 영유아 식습관 위키피디아
1-2. 사용자 가치
| 가치 | 설명 |
|---|---|
| 📚 학습 | 식재료별 KDRI 영양·제철·SOS 가이드 한 곳에 |
| 💬 공유 | 다른 부모 경험 댓글 자유 열람·작성 |
| 🎯 행동 | 친해지기 SOS 6단계 → 키트 진입 |
| 🌸 계절 | 이번 달 제철 식재료 자동 노출 |
| ⭐ 등급 | "초등 입학 전 꼭 친해질 21종" — 마케팅 후크 |
1-3. 비즈니스 가치
- SEO — 650 페이지 × 평균 검색량 1k/월 = 월 65만 방문
- 가입 funnel — 도감 → 개인화 페이지 → 가입 전환율 5% 가정 = 월 32,500 가입
- 키트 funnel — 식재료 상세에서 키트 직접 클릭 → 구매 전환 1% 가정 = 월 650 키트 매출 = 월 ₩40M 이상
- UGC — 댓글 수집 = 다른 식재료 SEO 가치 ↑
2. 사용자 페르소나
👩 첫째 엄마 (28-35세, 직장맘) — 1순위 타겟
"우리 아이 시금치 거부하는데 어떻게 해야 하지?" 네이버 검색 → 도감 진입 → 식재료 SOS 6단계 학습 → 가입 → 키트 구매
👨 둘째 아빠 (32-40세) — 2순위 타겟
"첫째 시행착오 반복 X. 둘째는 처음부터 학술 근거로." → 도감 전체 둘러보기 → 21 초등 필수 종 → 골고루 키트 구독
👵 손주 양육 조부모 (60-70세) — 3순위 타겟
"옛날엔 다 어떻게든 먹였는데..." → 큰 글씨 · 이모지 · SOS 6단계 그림 가이드 → 며느리에게 도움 보탬
🧑⚕️ 영양사·소아과 의사 (전문가) — 4순위 타겟
"환자에게 식재료 정보 안내" → KDRI 정확한 영양 데이터·학술 출처 → 추천 도구로 활용
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
도감 메인] 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. 기능 요구사항 (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. 비기능 요구사항 (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. 화면 명세 (5 페이지)
6-1. 화면 목록
| 화면 | URL | 핵심 컴포넌트 | 참조 |
|---|---|---|---|
| 도감 메인 | /foods | Hero·통계·필터·그리드 | FR-01~05·17 |
| 식재료 상세 | /foods/:slug | 헤더·빈도·영양·제철·SOS·레시피·댓글·키트 | FR-06~13·20·21 |
| 등급별 | /foods/grade/:g | Hero·필터된 그리드 | FR-14 |
| 카테고리별 | /foods/category/:c | Hero·필터된 그리드 | FR-15 |
| 제철별 | /foods/season/:m | Hero·필터된 그리드·월 강조 | 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. 데이터 모델 (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 명세 (6 엔드포인트)
| Method | Path | Description | 인증 |
|---|---|---|---|
| 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/enrich | enrich 수동 트리거 | admin |
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
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. 출시 단계 (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 · 성공 지표
| 지표 | 3개월 목표 | 6개월 목표 | 측정 도구 |
|---|---|---|---|
| 월 방문 (도감) | 50,000 | 200,000 | PostHog · 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 | 이벤트 |