Jamorham
Nightscout용 xDrip+ 버전
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A calorie, macro, exercise, and weight tracking web app. Users log meals (via barcode scan, voice, or manual entry), track workouts, and follow a predicted-vs-actual weight trend based on their computed BMR/TDEE.
• Frontend (Frontend/) — React 19 + Vite + TypeScript, Tailwind CSS v4, Zustand, react-router-dom v7
• Backend (Backend/) — NestJS 11 + Prisma + PostgreSQL (Neon)
• External APIs — Open Food Facts (barcode lookup), USDA FoodData Central (food name lookup), Web Speech API (client-side voice input), Cloudinary (avatar uploads)README 전문 보기 ↗A calorie, macro, exercise, and weight tracking web app. Users log meals (via barcode scan, voice, or manual entry), track workouts, and follow a predicted-vs-actual weight trend based on their computed BMR/TDEE.
Frontend/) — React 19 + Vite + TypeScript, Tailwind CSS v4, React Context, react-router-dom v7Backend/) — NestJS 11 + Prisma + PostgreSQL (Supabase, database only)This is a monorepo, but Frontend and Backend deploy independently:
Frontend/ in the Vercel dashboard; framework auto-detected, no committed manifest)Backend/; NestJS is auto-detected and runs as a single Vercel Function; env vars are managed in the Vercel dashboard, no committed manifest)docker-compose.yml.See docs/architecture.md for the full system design and docs/business-logic.md for the calorie/TDEE/prediction formulas.
The backend has run on two different hosts:
Backend/ and its build, deploy and environment variables were managed in the Railway dashboard. Every feature up to October 2026 was built and shipped on it: auth with email OTP, food and exercise logging, barcode lookup, and profiles and avatars. This is where I learned to host a backend: connecting a monorepo subfolder, managing secrets on the platform, and wiring CORS between separately hosted frontend and backend.docs/adr/0011-backend-on-vercel-functions.md.docker compose up -d from the repo root)cd Backend
npm install
cp .env.example .env # DATABASE_URL already points at the local Docker DB; fill in ACCESS_TOKEN, REFRESH_TOKEN, USDA_API_KEY, etc.
npx prisma db push # applies the schema — this project uses `prisma db push`, not migrations
npx prisma generate
npx prisma db seed # loads the canonical food catalog (idempotent)
npm run start:dev # http://localhost:3000
cd Frontend
npm install
cp .env.example .env # set VITE_API_BASE_URL and VITE_GOOGLE_CLIENT_ID
npm run dev # http://localhost:5173
| Backend | Frontend | |
|---|---|---|
| Dev server | npm run start:dev | npm run dev |
| Build | npm run build | npm run build |
| Unit tests | npm test | — |
| E2E tests | npm run test:e2e | — |
| Lint | npm run lint (auto-fixes) | npm run lint (no auto-fix) |
| Format | npm run format | npm run format |
Backend unit tests (npm test) run in CI on every PR (.github/workflows/ci.yml). Backend E2E tests are not run in CI — run them locally whenever backend behavior changes.
Backend/ NestJS API — see Backend/README.md
Frontend/ React SPA — see Frontend/README.md
docs/ Architecture, business logic, and requirements docs
specs/ Per-feature specs (spec-kit workflow: spec.md → plan.md → tasks.md)
Real secrets are never committed — see each package's .env.example for the full list of required variables (Backend/.env.example, Frontend/.env.example).
JWTs are signed with HS256 using two symmetric secrets (ACCESS_TOKEN, REFRESH_TOKEN). Email/password signup requires verifying a 6-digit OTP sent by email before a session is issued. Google OAuth is also supported. Refresh tokens rotate on use (single-use, revoked on refresh).