39b66bbb5a3b3ae53fc25fef45d4dac404033ec7
Meal Tracker
A personal food and drink logging application for accountability and macro tracking.
Project Structure
meal-tracker/
├── client/ # React frontend
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── pages/ # Page components
│ │ └── utils/ # Helper functions & API client
│ ├── public/ # Static assets
│ ├── package.json # Client dependencies
│ └── vite.config.js # Vite configuration
├── server/ # Express backend
│ ├── routes/ # API route handlers
│ ├── models/ # Database models
│ ├── middleware/ # Express middleware
│ ├── index.js # Server entry point
│ └── package.json # Server dependencies
├── uploads/ # Image uploads (food photos)
├── data/ # SQLite database
├── docker-compose.yaml # Docker setup (optional)
└── README.md
Features
v1 (MVP)
- Manual food entry (name, description, image)
- Image upload support
- Notes field for accountability
- Daily view of entries
v2
- Food search with macro lookup (OpenFoodFacts API)
- Auto-populate macros from search results
- Manual macro entry override
v3
- Daily/weekly summary views
- Macro totals (protein, carbs, fat, calories)
- Charts and trends
Tech Stack
- Frontend: React, Vite, Tailwind CSS
- Backend: Node.js, Express
- Database: SQLite (local)
- Image Storage: Local filesystem
- Food API: OpenFoodFacts (free, no key required)
API Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/entries | Get all entries |
| POST | /api/entries | Create new entry |
| GET | /api/entries/:id | Get single entry |
| DELETE | /api/entries/:id | Delete entry |
| GET | /api/foods/search | Search food database |
| GET | /api/summary/daily | Get daily summary |
Running Locally
# Install dependencies
cd client && npm install
cd ../server && npm install
# Start backend
cd server && npm start
# Start frontend (separate terminal)
cd client && npm run dev
Environment Variables
See .env.example for required configuration.
Description
Languages
JavaScript
99.2%
HTML
0.7%