Персоналізований AI-асистент для планування харчування та моніторингу споживання калорій.
- ПІБ: Вибираний Владислав
- Група: ФЕІ-42
- Керівник: доц. Стахіра Р. Й.
- Дата виконання: 20.05.2026
- Тип проєкту: Веб-застосунок (Full-stack)
- Мова програмування: TypeScript (Node.js/Bun + Next.js)
- Фреймворки / бібліотеки: Next.js 16, Prisma, PostgreSQL, Better Auth, Elysia, React Query, Bun, Tailwind CSS
Короткий відеозапис показує основні сценарії роботи застосунку: вхід у систему, додавання їжі в журнал, роботу з планом харчування, пошук продуктів, створення цілі та запит до AI-асистента.
- Панель приладів: візуалізація трендів, виконання цілей та останньої активності.
- Журнал харчування: логування прийомів їжі з групуванням та розрахунком макронутрієнтів.
- Плани харчування: створення тижневих планів та перенесення страв у щоденний журнал.
- Система цілей: відстеження калорій, білків, води та ваги з розрахунком прогресу.
- AI-асистент: помічник, що шукає продукти, аналізує статистику та допомагає з логуванням через tool calling.
- Профіль та налаштування: керування антропометричними даними, цілями та параметрами інтерфейсу.
| Каталог / файл | Призначення |
|---|---|
app/ |
Маршрути Next.js App Router: Dashboard, Food Log, Plans, Goals, Profile, Assistant, Settings та auth-сторінки |
app/api/[[...slugs]]/route.ts |
Вхідна точка Next.js API route, яка прокидує запити до Elysia API |
components/ui/ |
Базові UI-примітиви: кнопки, діалоги, картки, tabs, sidebar, tooltip тощо |
components/features/ |
Функціональні компоненти продукту: форми, журнал харчування, meal plans, assistant lab, auth UI |
lib/ |
Клієнтські helper-модулі, типізований API-клієнт, аналітика харчування, логіка цілей, meal plans і settings |
server/ |
Серверна частина застосунку на Elysia |
server/routes/ |
API-маршрути для foods, food logs, meal plans, goals, profile, settings, chat і assistant lab |
server/lib/ |
Серверні інтеграції: auth, session, Prisma client, agent lab execution |
prisma/ |
Основна Prisma-схема та seed-скрипт |
generated/prisma/ |
Згенерований Prisma Client; не редагується вручну |
scripts/ |
Допоміжні сценарії: demo seed, screenshots для звіту, agent benchmark, запис showcase-відео |
report/content/ |
Typst-джерела завдання, звіту, додатків і bibliography |
report/template.typ |
Спільний шаблон оформлення Typst-документів |
report/assets/ |
Скріншоти, benchmark-дані та демонстраційні матеріали |
report/build/ |
Згенеровані PDF-файли завдання, звіту та додатків |
report/assets/screenshots/ |
Скріншоти інтерфейсу для пояснювальної записки |
report/assets/videos/ |
Демонстраційні відео застосунку |
public/ |
Статичні assets Next.js |
Основні файли входу: app/page.tsx для Dashboard, server/index.ts для Elysia API, prisma/schema.prisma для моделі даних, lib/api.ts для типізованого клієнта та server/routes/chat.ts для AI-асистента.
- Bun (рекомендовано) або Node.js v20+
- PostgreSQL локально або у хмарному сервісі
git clone https://github.com/vvybyranyi/nutri-ai.git
cd nutri-aibun installСтворіть файл .env у корені проєкту:
DATABASE_URL="postgresql://user:password@localhost:5432/nutriai"
NEXT_PUBLIC_APP_URL="http://localhost:3000"
AI_PROVIDER="openai" # або "anthropic"
OPENAI_API_KEY="your_api_key"bun run db:push
bun run db:generate
bun run db:seedbun devВідкрийте http://localhost:3000.
bun run lint
bun run build
bun run report:seed
bun run report:screenshots
bun run showcase:videoКоманда bun run showcase:video створює демонстраційний запис у форматах WebM та MP4 у папці report/assets/videos/.
Документація API доступна після запуску застосунку за адресою:
- Swagger UI: http://localhost:3000/api/docs
- Health check:
GET /api/health
Основні групи API-маршрутів:
GET/POST /api/foods,PUT/DELETE /api/foods/:id— каталог продуктів;GET /api/food-logs,GET /api/food-logs/:date,POST /api/food-logs/:date/items,PATCH/DELETE /api/food-logs/items/:itemId— журнал харчування;GET/POST /api/meal-plans,PUT/DELETE /api/meal-plans/:id— плани харчування;GET/POST /api/goals,PUT/DELETE /api/goals/:id— цілі користувача;GET/PUT /api/profile,GET /api/profile/stats— профіль і статистика;GET/PUT /api/settings— налаштування;GET/POST /api/chat/conversationsіPOST /api/chat/conversations/:id/messages— AI-чат;GET/POST /api/chat-lab/runs— лабораторія агентних SDK.
GET /api/profile/stats
Отримати дані для графіків, дотримання плану та активних стріків.
POST /api/food-logs/:date/items
{
"foodId": "uuid",
"mealType": "BREAKFAST",
"servings": 1,
"notes": "Logged from README example"
}POST /api/chat/conversations/:id/messages
Надсилання повідомлення до AI-агента з доступом до інструментів.
- Початок роботи — зареєструйтесь та заповніть дані профілю: вага, зріст, активність і цільові показники.
- Dashboard — переглядайте залишок калорій на день, тренди макронутрієнтів та активні цілі.
- Журнал (Log) — додавайте спожиті страви через пошук або власний каталог продуктів.
- Плани (Plans) — плануйте раціон наперед та застосовуйте план до конкретного дня.
- AI-асистент — ставте питання на кшталт "Скільки білка я з'їв вчора?" або "Знайди продукти з низьким вмістом жиру".
- Dashboard:
report/assets/screenshots/dashboard.png - Food Log:
report/assets/screenshots/food-log.png - AI Assistant:
report/assets/screenshots/assistant.png - Meal Plans:
report/assets/screenshots/meal-plans.png - Goals:
report/assets/screenshots/goals.png
Більше скриншотів доступно у папці report/assets/screenshots/.
| Проблема | Рішення |
|---|---|
| Database Connection Error | Перевірити правильність DATABASE_URL у .env |
| AI не відповідає | Перевірити OPENAI_API_KEY та статус сервісу |
| Prisma Type Errors | Виконати bun run db:generate для оновлення клієнта |
| Auth errors | Переконатись, що NEXT_PUBLIC_APP_URL відповідає вашому домену |
- Next.js Documentation
- ElysiaJS - Fast Bun Web Framework
- Prisma ORM Guide
- Better Auth Documentation
- Vercel AI SDK
- WHO: Healthy Diet