smooth-app
전 세계 식품의 성분·영양·정보를 자유롭게 협업하고 공개하는 데이터베이스
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기코골이체커: 옆에서 본 것만으로 하는 3분 코골이 무료진단과 근처 수면클리닉 연결
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
남편이 코를 곤다. 괴로운 건 아내인데, 병원에 가야 하는 건 남편이다. 아내는 이게 병인지, 치료되는지, 어디로 가면 되는지 몰라서 참고 지낸다. 옆에서 본 것만으로 3분 무료진단을 하고, 수면무호흡증일 수 있는지·치료되는지·방치하면 어떤지를 리포트로 받고, 근처 수면클리닉의 원 페이지로 넘어가는 서비스다. 리포트는 남편에게 링크로 보낼 수 있다. • 서비스 링크: https://snore-check.vercel.app • 대상: 코 고는 사람과 같이 사는 40~60대 아내 • 북극성 지표: 리포트를 본 사람 중 병원에 연결된 비율(병원 외부 링크 클릭 또는 전화 걸기) 제출 이후 변경: 크롤러가 매주 월요일 03:00(KST)에 GitHub Actions로 병원 데이터를 다시 수집해 frontend/src/data/*.json을 자동 커밋한다. 그래서 제출 뒤에도 이 저장소와 배포된 사이트의 병원 목록이 바뀔 수 있다. 이 세 문서로 문제 → 해법 → 사업성이 이어진다.README 전문 보기 ↗
남편이 코를 곤다. 괴로운 건 아내인데, 병원에 가야 하는 건 남편이다. 아내는 이게 병인지, 치료되는지, 어디로 가면 되는지 몰라서 참고 지낸다.
옆에서 본 것만으로 3분 무료진단을 하고, 수면무호흡증일 수 있는지·치료되는지·방치하면 어떤지를 리포트로 받고, 근처 수면클리닉의 원 페이지로 넘어가는 서비스다. 리포트는 남편에게 링크로 보낼 수 있다.
제출 이후 변경: 크롤러가 매주 월요일 03:00(KST)에 GitHub Actions로 병원 데이터를 다시 수집해
frontend/src/data/*.json을 자동 커밋한다. 그래서 제출 뒤에도 이 저장소와 배포된 사이트의 병원 목록이 바뀔 수 있다.
| 과제 요구사항 | 어디에 있나 |
|---|---|
| 서비스가 배포된 링크 | https://snore-check.vercel.app |
| 문제 정의 및 기획 과정 | 핵심 문서 표의 순서대로 읽으면 된다. 결정이 바뀐 과정은 기획 로그 |
| 주요 트러블슈팅 기록 | docs/troubleshooting.md |
| 크롤링 + 원 페이지 외부 링크 | 레즈메드 크롤링이 기본이고, 공공 데이터와 학회 목록으로 보강했다. ① 레즈메드 수면다원검사 병원찾기 337곳을 크롤링했다. 병원 카드의 "병원 정보 보기"가 레즈메드 병원 상세 페이지로 가고, 링크 337개가 모두 살아 있다. ② 레즈메드 목록만으로는 사는 시·군·구에 병원이 없는 인구가 20.4%라, 심평원 공공 데이터의 수면다원검사 실시기관을 더해 744곳으로 넓혔다(11.0%로 줄어든다). 레즈메드 좌표가 6곳 중 1곳꼴로 틀린 것도 이 데이터로 고쳤다. ③ 대한수면연구학회 목록을 크롤링해 73곳에 학회 배지를 달았다. 레즈메드 밖의 병원은 홈페이지(약 50곳, 매주 재크롤링으로 바뀐다)나 지도 검색으로 연결한다 (데이터 품질, 공급 공백) |
이 세 문서로 문제 → 해법 → 사업성이 이어진다.
| 순서 | 문서 | 목적 | 핵심 |
|---|---|---|---|
| 1 | 문제 정의 | 누구의 어떤 문제를 푸는지 | 괴로운 건 배우자, 병원에 가야 하는 건 당사자다. 배우자에게 판단 기준과 경로가 없는 게 메인 막힘이다. 타겟은 배우자 있는 환자의 74%가 몰린 40~60대 |
| 2 | 솔루션 방향 | 가설마다 무엇으로 대응하고 어떻게 확인하는지 | 가설 H1~H4마다 솔루션 단계 하나(배우자에게 닿기, 체크 결과, 근처 수면클리닉, 공유 링크)를 붙이고 퍼널 지표로 확인한다. 크롤링 요구 대응 포함 |
| 3 | 비즈니스 임팩트 | 누가 돈을 내고 왜 내는지 | 고객은 검사하는 병원이다. 병원 광고는 이미 병원을 찾는 사람에게만 닿고, 이 서비스는 판단을 마치고 경로까지 받은 배우자를 넘긴다. 핵심 숫자는 병원 연결 1건당 비용. 진료받지 않는 환자 약 110만 명, 그중 타겟 약 53만 명. 수익은 목록 정액 광고(건당 수수료는 의료법 위반) |
| 궁금한 것 | 문서 | 핵심 |
|---|---|---|
| 무엇이 틀릴 수 있나 | 가설 검증 | 가설을 문제 정의 순서대로 H1~H4로 나눴다(배우자가 동기가 크다, 판단 기준을 몰라서 참는다, 경로가 없으면 행동으로 못 넘어간다, 당사자는 따라간다). 근거는 논문 14편과 설문·인터뷰. 메타 광고는 유입 검증이 1순위다. 커뮤니티 글 670건은 H2와 같은 방향이고, H4는 "권했는데 거부"가 더 많아 권유만으로는 부족할 수 있다는 신호다 |
| 왜 이렇게 정했나 | 기획 로그 | 검토한 질문과 결론, 10월 2일 방향 재정리, 10월 3일 가설 재정리(현재 결론) |
| 화면은 어떻게 짰나 | 화면 설계 | S1 체크 시작 → S2 체크 → S3 리포트 → S4 근처 수면클리닉. 40~60대 접근성 기준 |
| 데이터와 구현은 | 아키텍처, 작업별 스펙 | DB 없이 크롤링 JSON을 커밋한다. 레즈메드 + 심평원 공공 데이터 + 학회 목록 |
| 제대로 만들었나 | 검증: 근처 수면클리닉, 접근성과 문구, 병원 데이터 | 작업마다 체크리스트와 결과, 가상 사용자 테스트 |
| 어디서 막혔나 | 트러블슈팅 | 레즈메드 데이터가 JS 문자열 안에 있음, 좌표 6곳 중 1곳 오류, 수집 차단, 메타 토큰 만료, GA4 확인, 죽은 홈페이지 링크 등 9건 |
참고: 기술 스택 근거 · 에이전트 운영 기록 · 구현 계획(작업 폴더별 plan.md, 길다)
★ = 꼭 읽을 문서
docs/
├── problem-definition.md ★ 문제 정의
├── solution-direction.md ★ 솔루션 방향
├── business-impact.md ★ 비즈니스 임팩트
├── validation.md 가설 검증
├── planning-log.md 기획 로그
├── meta-ads/ 메타 광고 유입 검증
│ ├── strategy.md 전략·결정·소재
│ ├── creatives/ 소재 이미지
│ └── results/ 결과 리포트
├── research/ 기획 문서의 근거 자료
│ ├── evidence.md 수치 원출처 (환자 수·유병률·유배우율·수가)
│ ├── benchmark.md 국내외 서비스 46건 비교
│ ├── clinic-survey.md 국내 수면클리닉 95곳 홈페이지 전수 조사
│ ├── competitors.md 기존 플레이어
│ ├── voc.md 환자·가족 후기, 아버지 인터뷰
│ ├── awareness.md 대중 인지도
│ ├── snoring.md 코골이와 수면무호흡
│ ├── snoring-surgery.md 단순 코골이 수술 근거
│ ├── business-model.md 병원 수입·의료법·광고
│ ├── marketing.md 수면클리닉 마케팅
│ ├── retention.md 진료 이후 리텐션
│ ├── crawl-targets.md 크롤링 대상
│ ├── accessibility.md 40~60대 접근성 기준 (→ work/02)
│ ├── copy-audit.md 화면 문구 감사 (→ work/02)
│ ├── data-quality/ 병원 데이터 품질 검사 (→ work/03)
│ └── supply-gap/ 시·군·구별 병원 공백 (→ work/03)
├── ux-spec.md 화면 설계 (화면 전체)
├── architecture.md 아키텍처 (데이터 흐름·계약·분석)
├── work/ 작업별 spec.md(스펙)·plan.md(구현 계획)·verification.md(검증)
│ ├── 01-clinic-list/ S4 근처 수면클리닉
│ ├── 02-a11y-copy/ 40~60대 접근성과 쉬운 문구 (+ screenshots/)
│ ├── 03-clinic-data/ 병원 데이터 보강 (+ persona-test.md 가상 사용자 테스트)
│ └── 05-meta-report/ 메타 광고 결과 리포트 스크립트
├── troubleshooting.md 트러블슈팅
├── tech-stack.md 기술 스택 근거
├── agent-log.md 에이전트 운영 기록
└── archive/ 범위에서 뺀 조사 (기면증·렘수면, 쓰지 않은 질문지)
기획·조사
| 작업 | 내용 | 근거 |
|---|---|---|
| 문제 정의와 타겟 근거 | 직접 사례에서 출발해 "괴로운 사람과 병원에 갈 사람이 다르다"로 문제를 좁혔다. 심평원 진료 인원·통계청 유배우율·부부 나이 차로 40~60대 배우자를 타겟으로 정했다 | 문제 정의, 근거 자료 |
| 경쟁·벤치마크 | 국내외 서비스 46건을 직접 확인했다. 옆에서 본 것으로 체크해 중립 병원 목록까지 잇는 곳은 0건이었다 | 벤치마크 |
| 수면클리닉 전수 조사 | 학회 수면클리닉 95곳 홈페이지를 확인했다. 배우자에게 직접 말을 거는 곳은 0곳이었다 | 전수 조사 |
| 사업성 | 광고주(검사하는 병원)의 문제, 시장 크기, 의료법상 가능한 수익 모델을 정리했다 | 비즈니스 임팩트 |
| 공급 공백 분석 | 레즈메드 목록만으로는 시·군·구 230곳 중 124곳(인구 20.4%)에 병원이 없었다. 전체 검사기관으로 넓히면 11.0%로 준다. 군 82곳 중 78곳은 여전히 0곳이다 | 공급 공백 |
| 유입 검증 | 검색하지 않는 배우자를 데려올 수 있는지 메타 광고(10만 원, 소재 5개)로 잰다. make meta-report 한 번으로 메타 광고비와 GA4 퍼널을 합쳐 병원 연결(링크·전화) 1건당 비용까지 리포트로 만든다 | 메타 광고 전략 |
서비스
| 작업 | 내용 |
|---|---|
| 배우자 체크 | 옆에서 본 것만 묻는 9문항. 한 화면에 한 문항 |
| 수면 체크 리포트 | 병일 수 있는지(3단계), 치료하면 무엇이 나아지는지, 방치하면 어떤지를 비교 막대로 보여준다. 검사 받는 법과 비용을 붙였다 |
| 리포트 공유 | 카톡 등으로 남편에게 보낸다. 답은 주소의 # 뒤에만 담아 저장·전송하지 않는다 |
| 근처 수면클리닉 | 744곳을 시·도별로 보거나, 누를 때만 위치 권한을 받아 가까운 순으로 본다. 전화하기와 병원 원 페이지 링크 |
| 분석 | GA4·메타 픽셀로 체크 완료 → 리포트 → 병원 연결(링크 클릭·전화 걸기)을 기록한다. 픽셀에는 둘을 ClinicClick 하나로 보낸다. 개인정보 처리방침을 붙였다 |
데이터
| 작업 | 내용 | 근거 |
|---|---|---|
| 크롤러 | 레즈메드 병원찾기와 학회 목록을 매주 GitHub Actions로 수집해 JSON으로 커밋한다. DB와 백엔드가 없다 | 아키텍처, 기술 스택 |
| 데이터 품질 | 레즈메드 좌표가 6곳 중 1곳꼴로 500m 넘게 틀린 것을 찾아 공공 데이터로 고쳤다. 상세 링크 337개가 모두 살아 있는지 확인했다 | 데이터 품질 |
| 목록 확장 | 337곳에서 심평원 수면다원검사 실시기관 744곳으로 넓히고, 학회 목록 병원 73곳에 배지를 달았다 | 공급 공백 |
품질
| 작업 | 내용 | 근거 |
|---|---|---|
| 40~60대 접근성 | 글자 16px 이상(본문 18px), 터치 영역 48px 이상, 글자 대비 7:1. 글자 130%·200%와 폭 320px에서 깨지지 않게 했다. 브라우저 측정 88개를 make gate와 CI에 넣었다 | 기준과 측정값, 스크린샷 66장 |
| 쉬운 문구 | 화면 문구 148건을 감사해 35건을 고쳤다. 코 고는 사람은 "남편"으로 통일했다 | 문구 감사, DESIGN.md 용어표 |
| 검증 | 단계마다 검증 기준을 먼저 쓰고, 구현과 다른 세션이 판정했다 | 작업별 검증 |
| 가상 사용자 테스트 | 에이전트가 40~60대 배우자, 공유받은 남편, 군 지역, 위치 권한 거부 등 페르소나 8명으로 배포본을 첫 화면부터 병원 링크까지 써봤다. 모호한 비용 문구, 중복 지도 링크를 고쳤고, 신호가 약한데 위험 막대가 나오는 문제 등 4건은 결정이 필요한 과제로 남겼다. 실제 사용자 근거는 아니다 | 가상 사용자 테스트 |
| 작업 방식 | 문서 승인 전에는 코드 수정을 훅으로 막고, 푸시 전후로 같은 게이트(타입·린트·테스트·빌드·접근성)를 돌렸다. 에이전트에게 맡긴 일과 버린 것을 기록했다 | 에이전트 운영 기록, 트러블슈팅 |
| 출처 | 쓰는 곳 | 갱신 |
|---|---|---|
| 레즈메드 수면다원검사 병원찾기 | 병원 337곳, 병원 상세 페이지 링크 | 매주 GitHub Actions |
| 건강보험심사평가원 "전국 병의원 및 약국 현황" (공공누리 제1유형) | 좌표 교정, 수면다원검사 실시기관 목록 확장 | 분기마다 수동 (절차) |
| 대한수면연구학회 수면클리닉 찾기 | 학회 목록 배지 | 매주 GitHub Actions |
Node.js 24+, pnpm이 필요하다 (corepack enable pnpm).
make setup # 의존성 설치, frontend/.env.local 생성
make dev # http://localhost:3000
make crawl # 크롤링 → frontend/src/data/hospitals.json
make meta-report # 메타 광고 + GA4 숫자 → docs/meta-ads/results/<날짜>.md (설정: reporting/.env.local)
make gate # 타입체크·린트·포맷·테스트·빌드, 크롤러 테스트, 접근성 측정
DB와 백엔드 서버 없이 동작한다. 체크 응답은 저장하거나 보내지 않고 리포트 주소의 # 뒤에만 담는다. 근거는 tech-stack.
Next.js (App Router) · Tailwind CSS v4 · shadcn/ui · Playwright + axe (접근성 측정) · GitHub Actions (크롤러, 게이트) · Vercel · GA4