smooth-app
전 세계 식품의 성분·영양·정보를 자유롭게 협업하고 공개하는 데이터베이스
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기건강앱
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
fitlog.myjane.co.kr — 인바디 결과지를 사진으로 기록하고 체성분 추이를 관리하는 앱. SnapWord·SnapNote와 회원을 공유한다. • 앱 데이터: fit DB (measurements, weights, activities, chatthreads) • 회원: user DB의 users 컬렉션 — models/User.ts의 useDb("user") • 세션: 쿠키 snap_user, 도메인 .myjane.co.kr → 세 앱 간 로그인 유지 ⚠️ Vercel에서 NEXT_PUBLIC_COOKIE_DOMAIN은 반드시 Config 타입으로 등록해야 한다. Secret으로 등록하면 브라우저 번들에 값이 주입되지 않아 쿠키가 host-only가 된다. heightCm / gender / birthYear는 FitLog에서만 입력받는 필드이며 공용 users 문서에 저장한다. 기종(270 · 270S · 720 · 970 · 구형)마다 인쇄 항목이 달라 대부분 선택값이다. 수치 항목은 { value, min, max } 형태로, 결과지에 인쇄된 표준범위까지 함께 저장한다.README 전문 보기 ↗
fitlog.myjane.co.kr — 인바디 결과지를 사진으로 기록하고 체성분 추이를 관리하는 앱.
스택: Next.js 15 · Node.js 22 · MongoDB Atlas(
fitDB) · OpenAI Vision · Cloudflare R2 · Vercel
SnapWord·SnapNote와 회원을 공유한다.
fit DB (measurements, weights, activities, chatthreads)user DB의 users 컬렉션 — models/User.ts의 useDb("user")snap_user, 도메인 .myjane.co.kr → 세 앱 간 로그인 유지
⚠️ Vercel에서 NEXT_PUBLIC_COOKIE_DOMAIN은 반드시 Config 타입으로 등록해야 한다.
Secret으로 등록하면 브라우저 번들에 값이 주입되지 않아 쿠키가 host-only가 된다.heightCm / gender / birthYear는 FitLog에서만 입력받는 필드이며 공용 users 문서에 저장한다.
기종(270 · 270S · 720 · 970 · 구형)마다 인쇄 항목이 달라 대부분 선택값이다.
| 그룹 | 내용 |
|---|---|
composition | 체수분(세포내/외) · 단백질 · 무기질 · 골무기질 · 체지방량 · 근육량 · 제지방량 · 체중 |
muscleFat | 골격근량 |
obesity | BMI · 체지방률 · 복부지방률 |
segmental | lean / fat / ecwRatio × 5부위 (kg · % · 등급) |
evaluation | 인바디점수 · 위상각 · 신체균형 · 비만평가 · 영양평가 · 신체강도 · 건강진단 |
control | 적정체중 · 체중/지방/근육 조절 |
research | 기초대사량 · 비만도 · 내장지방(레벨·단면적) · 허리둘레 · FFMI · FMI · BCM · BMC · AC · AMC |
impedance | 주파수별 RA/LA/TR/RL/LL |
derived | 앱이 계산: SMI(골격근지수), 허리/키 비율 |
etc | 스키마에 없는 항목 — label/value/unit으로 보관하고 화면에 그대로 나열 |
수치 항목은 { value, min, max } 형태로, 결과지에 인쇄된 표준범위까지 함께 저장한다.
날짜당 1건(userId + measuredDate 유니크). 하루에 여러 번 측정해도 체성분이 변한 게 아니라
식사·수분·운동에 따른 측정 조건 차이라 기록 가치가 없다. 같은 날 다시 올리면 교체한다.
단 measuredAt에는 시각까지 남겨 측정 조건 비교에 쓴다.
체중계는 매일, 인바디는 몇 달에 한 번이라 분리했다. 그래프에서 함께 그린다.
인바디 결과지는 내부 계산이 맞아떨어진다. 이 성질로 Vision의 숫자 오인식을 잡는다
(lib/inbody.ts의 validateMeasurement).
| 검사 | 허용 오차 |
|---|---|
| 체수분 + 단백질 + 무기질 + 체지방 = 체중 | ±0.6kg |
| BMI = 체중 ÷ (키m)² | ±0.4 |
| 체지방률 = 체지방량 ÷ 체중 × 100 | ±0.8%p |
| 제지방량 = 체중 − 체지방량 | ±0.6kg |
| 골격근량 ≤ 제지방량 | — |
추출 결과는 저장 전 반드시 검토 화면을 거치며, 검증에 걸린 필드를 표시한다.
npm install
cp .env.example .env.local # 값 채우기
npm run dev # http://localhost:3003
포트 3003 — SnapWord(3000)·SnapNote(3001)·myjane(3002)과 동시 실행용.
measurements, weights) 및 필드 카탈로그POST /api/measurements/extract, GET·POST /api/measurementsetc 목록 · 원본 사진)