{"id":30637590,"url":"https://github.com/nitive/food-app","last_synced_at":"2025-08-30T23:07:10.380Z","repository":{"id":311467805,"uuid":"1043732814","full_name":"Nitive/food-app","owner":"Nitive","description":null,"archived":false,"fork":false,"pushed_at":"2025-08-24T17:31:24.000Z","size":150,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-24T20:58:08.334Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Nitive.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-24T14:01:45.000Z","updated_at":"2025-08-24T17:31:27.000Z","dependencies_parsed_at":"2025-08-24T20:58:20.840Z","dependency_job_id":"a7d104b1-dd91-4860-9e8a-7a5d02af2d93","html_url":"https://github.com/Nitive/food-app","commit_stats":null,"previous_names":["nitive/food-app"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Nitive/food-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nitive%2Ffood-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nitive%2Ffood-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nitive%2Ffood-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nitive%2Ffood-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Nitive","download_url":"https://codeload.github.com/Nitive/food-app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nitive%2Ffood-app/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272917735,"owners_count":25014935,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-30T02:00:09.474Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-08-30T23:06:08.830Z","updated_at":"2025-08-30T23:07:10.363Z","avatar_url":"https://github.com/Nitive.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Food App - Приложение для планирования питания\n\nВеб-приложение для управления рецептами, планирования питания и составления списков покупок.\n\n## 🚀 Быстрый старт\n\n### Предварительные требования\n\n- **Node.js** версии 18+\n- **pnpm** (рекомендуется) или npm\n- **PostgreSQL** база данных\n- **Git**\n\n### Установка зависимостей\n\n```bash\n# Клонирование репозитория\ngit clone \u003crepository-url\u003e\ncd food-app\n\n# Установка зависимостей\npnpm install\n```\n\n### Настройка базы данных\n\n1. **Создайте PostgreSQL базу данных:**\n\n```bash\ncreatedb food_app\n```\n\n2. **Настройте переменные окружения:**\n\n```bash\n# Создайте файл .env в корне проекта\ncp env.example .env\n\n# Отредактируйте .env файл\nDATABASE_URL=\"postgresql://postgres:postgres@127.0.0.1:5432/food_app\"\n```\n\n3. **Запустите миграции:**\n\n```bash\npnpm db:migrate\n```\n\n4. **Заполните базу тестовыми данными:**\n\n```bash\npnpm db:seed\n```\n\n### Запуск приложения\n\n#### Вариант 1: Запуск в режиме разработки (рекомендуется)\n\n```bash\n# Терминал 1: Запуск backend API сервера\npnpm dev\n\n# Терминал 2: Запуск frontend в режиме разработки\npnpm start-frontend\n```\n\n#### Вариант 2: Запуск production сборки\n\n```bash\n# Сборка проекта\npnpm build\n\n# Запуск production сервера\npnpm start\n```\n\n### Доступ к приложению\n\n- **Frontend:** http://localhost:5173\n- **Backend API:** http://localhost:3000\n\n## 📁 Структура проекта\n\n```\nfood-app/\n├── src/\n│   ├── app.tsx          # Основные React компоненты\n│   ├── main.tsx         # Точка входа React приложения\n│   ├── api.ts           # Backend API сервер (Elysia)\n│   ├── api-client.ts    # Frontend API клиент (Eden)\n│   └── data.ts          # Статические данные рецептов\n├── prisma/\n│   ├── schema.prisma    # Схема базы данных\n│   └── migrations/      # Миграции базы данных\n├── scripts/\n│   └── seed.ts          # Скрипт заполнения базы данных\n├── index.html           # HTML шаблон\n├── package.json         # Зависимости и скрипты\n└── README.md           # Документация\n```\n\n## 🛠️ Доступные команды\n\n```bash\n# Разработка\npnpm dev                 # Запуск backend сервера в режиме разработки\npnpm start-frontend      # Запуск frontend в режиме разработки\npnpm build              # Сборка проекта\npnpm start              # Запуск production сервера\n\n# База данных\npnpm db:migrate         # Применение миграций\npnpm db:seed            # Заполнение базы тестовыми данными\npnpm db:generate        # Генерация Prisma клиента\n\n# Типизация\npnpm types              # Проверка TypeScript типов\n```\n\n## 🗄️ База данных\n\n### Модели данных\n\n- **Recipe** - рецепты с КБЖУ\n- **Ingredient** - ингредиенты с единицами измерения\n- **RecipeIngredient** - связь рецептов и ингредиентов\n- **CartItem** - элементы корзины\n- **StockItem** - наличие ингредиентов\n- **CalendarItem** - планирование питания по датам\n\n### Миграции\n\n```bash\n# Создание новой миграции\npnpm db:migrate\n\n# Откат последней миграции\npnpm db:migrate reset\n```\n\n## 🔧 Технологический стек\n\n### Frontend\n\n- **React 19** - UI библиотека\n- **Mantine UI** - компоненты интерфейса\n- **React Router** - навигация\n- **Nanostores** - управление состоянием\n- **Vite** - сборщик и dev сервер\n\n### Backend\n\n- **Elysia.js** - веб-фреймворк\n- **Prisma** - ORM для работы с базой данных\n- **PostgreSQL** - база данных\n- **Eden** - типизированный API клиент\n\n## 📱 Функциональность\n\n### Основные возможности\n\n1. **Управление рецептами**\n   - Просмотр списка рецептов\n   - Создание новых рецептов\n   - Детальная информация о рецепте\n\n2. **Корзина покупок**\n   - Добавление рецептов в корзину\n   - Управление количеством\n   - Автоматический расчет КБЖУ\n\n3. **Список покупок**\n   - Автоматическое формирование списка ингредиентов\n   - Учет имеющихся ингредиентов\n   - Расчет необходимого количества\n\n4. **Управление ингредиентами**\n   - Создание новых ингредиентов\n   - Указание наличия ингредиентов\n   - Удаление неиспользуемых ингредиентов\n\n5. **Календарь планирования**\n   - Планирование питания по датам\n   - Массовое добавление в корзину\n   - Группировка по дням недели\n\n## 🐛 Отладка\n\n### Логи\n\n```bash\n# Backend логи\npnpm dev\n\n# Frontend логи\npnpm start-frontend\n```\n\n### Проверка API\n\n```bash\n# Проверка доступности API\ncurl http://localhost:3000/api/recipes\n\n# Проверка базы данных\ncurl http://localhost:3000/api/ingredients\n```\n\n### Типизация\n\n```bash\n# Проверка TypeScript типов\npnpm types\n```\n\n## 🔄 Разработка\n\n### Добавление новых функций\n\n1. **Backend API:**\n   - Добавьте новые маршруты в `src/api.ts`\n   - Обновите схему базы данных в `prisma/schema.prisma`\n   - Создайте миграцию: `pnpm db:migrate`\n\n2. **Frontend:**\n   - Добавьте новые компоненты в `src/app.tsx`\n   - Обновите API клиент в `src/api-client.ts`\n   - Добавьте новые маршруты в React Router\n\n### Структура компонентов\n\n```typescript\n// Пример добавления нового компонента\nfunction NewFeature() {\n  const data = useStore($dataStore)\n\n  return (\n    \u003cStack gap=\"lg\"\u003e\n      \u003cTitle\u003eНовая функция\u003c/Title\u003e\n      {/* UI компоненты */}\n    \u003c/Stack\u003e\n  )\n}\n```\n\n## 🚀 Деплой\n\n### Production сборка\n\n```bash\n# Сборка проекта\npnpm build\n\n# Запуск production сервера\npnpm start\n```\n\n### Переменные окружения\n\n```bash\n# Production переменные\nNODE_ENV=production\nDATABASE_URL=\"postgresql://user:password@host:port/database\"\nPORT=3000\n```\n\n## 📞 Поддержка\n\nПри возникновении проблем:\n\n1. Проверьте логи в терминале\n2. Убедитесь, что база данных запущена\n3. Проверьте переменные окружения\n4. Перезапустите серверы\n\n## 📄 Лицензия\n\nMIT License\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnitive%2Ffood-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnitive%2Ffood-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnitive%2Ffood-app/lists"}