Your local-first AI health companion.
NutriMate reads your lab reports, learns your body, and delivers deeply personalised nutrition and wellness insights — while also simplifying complex research papers. All privately on your machine. No cloud. No data leaks. Only privacy.
- Health Profile — Store your age, gender, medications, conditions, allergies, and health goals
- Lab Reports — Upload blood reports and diagnostic PDFs; AI extracts and tracks your biomarkers over time
- Research Library — Upload research papers (PubMed, NIH, etc.) and get AI-simplified summaries used as context
- Fitness Data — Import exports from Fitbit, Apple Health, or any CSV-based tracker
- AI Chat — Ask health questions and get answers grounded in your data, not generic advice
- RAG Pipeline — Retrieval-Augmented Generation ensures responses are based on your actual data, not hallucinations
- 100% Local — Your health data never leaves your machine
| Layer | Technology |
|---|---|
| Framework | Next.js 15 + TypeScript |
| Styling | Tailwind CSS v4 + shadcn/ui + Radix UI |
| AI (Chat) | Gemini 2.0 Flash Lite |
| AI (Embeddings) | Gemini text-embedding-004 |
| PDF Parsing | unpdf |
| Validation | Zod |
| Storage | Local filesystem (/data) |
| Vector Search | In-memory cosine similarity |
- Node.js v18+
- A free Gemini API key
# Clone the repository
git clone https://github.com/UtkarshK95/nutrimate.git
cd nutrimate
# Install dependencies
npm installcp .env.example .env.localOpen .env.local and fill in your credentials:
GEMINI_API_KEY=your_gemini_api_key
SITE_PASSWORD=your_chosen_passwordnpm run devApp runs at http://localhost:3000.
All /dashboard routes are protected by the SITE_PASSWORD environment variable. The landing page is public.
- Visit the app and click Get Started or Open App to enter the password
- On success, an
httpOnlycookie is set for 7 days — no re-entry needed - To reset, delete the
site-passwordcookie in DevTools → Application → Cookies
Never commit your real password. Only
.env.example(with a placeholder) is tracked by git.
nutrimate/
├── src/app/
│ ├── api/ # API routes (chat, ingest, profile)
│ ├── dashboard/ # Main app sections
│ │ ├── chat/
│ │ ├── profile/
│ │ ├── research/
│ │ ├── lab-reports/
│ │ └── fitness/
│ └── page.tsx # Landing / disclaimer page
├── components/ # Shared UI components
├── lib/
│ ├── ai/ # Gemini chat + embeddings
│ ├── rag/ # Chunking, embedding, retrieval
│ ├── parsers/ # PDF, CSV, XML parsers
│ └── store/ # Local JSON file storage
└── data/ # Local data storage (gitignored)
├── profile.json
├── chunks.json
└── documents/
NutriMate is a personal hobby project and is not a medical device. AI-generated insights are for informational purposes only and do not constitute medical advice, diagnosis, or treatment. Always consult a qualified healthcare professional for medical decisions.
- GitHub: https://github.com/UtkarshK95/nutrimate
- Buy Me a Coffee: https://buymeacoffee.com/utkarshk95
This project is licensed under the MIT License.