https://github.com/nitive/food-app
https://github.com/nitive/food-app
Last synced: 10 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/nitive/food-app
- Owner: Nitive
- License: gpl-3.0
- Created: 2025-08-24T14:01:45.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-08-24T17:31:24.000Z (10 months ago)
- Last Synced: 2025-08-24T20:58:08.334Z (10 months ago)
- Language: TypeScript
- Size: 146 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Food App - Приложение для планирования питания
Веб-приложение для управления рецептами, планирования питания и составления списков покупок.
## 🚀 Быстрый старт
### Предварительные требования
- **Node.js** версии 18+
- **pnpm** (рекомендуется) или npm
- **PostgreSQL** база данных
- **Git**
### Установка зависимостей
```bash
# Клонирование репозитория
git clone
cd food-app
# Установка зависимостей
pnpm install
```
### Настройка базы данных
1. **Создайте PostgreSQL базу данных:**
```bash
createdb food_app
```
2. **Настройте переменные окружения:**
```bash
# Создайте файл .env в корне проекта
cp env.example .env
# Отредактируйте .env файл
DATABASE_URL="postgresql://postgres:postgres@127.0.0.1:5432/food_app"
```
3. **Запустите миграции:**
```bash
pnpm db:migrate
```
4. **Заполните базу тестовыми данными:**
```bash
pnpm db:seed
```
### Запуск приложения
#### Вариант 1: Запуск в режиме разработки (рекомендуется)
```bash
# Терминал 1: Запуск backend API сервера
pnpm dev
# Терминал 2: Запуск frontend в режиме разработки
pnpm start-frontend
```
#### Вариант 2: Запуск production сборки
```bash
# Сборка проекта
pnpm build
# Запуск production сервера
pnpm start
```
### Доступ к приложению
- **Frontend:** http://localhost:5173
- **Backend API:** http://localhost:3000
## 📁 Структура проекта
```
food-app/
├── src/
│ ├── app.tsx # Основные React компоненты
│ ├── main.tsx # Точка входа React приложения
│ ├── api.ts # Backend API сервер (Elysia)
│ ├── api-client.ts # Frontend API клиент (Eden)
│ └── data.ts # Статические данные рецептов
├── prisma/
│ ├── schema.prisma # Схема базы данных
│ └── migrations/ # Миграции базы данных
├── scripts/
│ └── seed.ts # Скрипт заполнения базы данных
├── index.html # HTML шаблон
├── package.json # Зависимости и скрипты
└── README.md # Документация
```
## 🛠️ Доступные команды
```bash
# Разработка
pnpm dev # Запуск backend сервера в режиме разработки
pnpm start-frontend # Запуск frontend в режиме разработки
pnpm build # Сборка проекта
pnpm start # Запуск production сервера
# База данных
pnpm db:migrate # Применение миграций
pnpm db:seed # Заполнение базы тестовыми данными
pnpm db:generate # Генерация Prisma клиента
# Типизация
pnpm types # Проверка TypeScript типов
```
## 🗄️ База данных
### Модели данных
- **Recipe** - рецепты с КБЖУ
- **Ingredient** - ингредиенты с единицами измерения
- **RecipeIngredient** - связь рецептов и ингредиентов
- **CartItem** - элементы корзины
- **StockItem** - наличие ингредиентов
- **CalendarItem** - планирование питания по датам
### Миграции
```bash
# Создание новой миграции
pnpm db:migrate
# Откат последней миграции
pnpm db:migrate reset
```
## 🔧 Технологический стек
### Frontend
- **React 19** - UI библиотека
- **Mantine UI** - компоненты интерфейса
- **React Router** - навигация
- **Nanostores** - управление состоянием
- **Vite** - сборщик и dev сервер
### Backend
- **Elysia.js** - веб-фреймворк
- **Prisma** - ORM для работы с базой данных
- **PostgreSQL** - база данных
- **Eden** - типизированный API клиент
## 📱 Функциональность
### Основные возможности
1. **Управление рецептами**
- Просмотр списка рецептов
- Создание новых рецептов
- Детальная информация о рецепте
2. **Корзина покупок**
- Добавление рецептов в корзину
- Управление количеством
- Автоматический расчет КБЖУ
3. **Список покупок**
- Автоматическое формирование списка ингредиентов
- Учет имеющихся ингредиентов
- Расчет необходимого количества
4. **Управление ингредиентами**
- Создание новых ингредиентов
- Указание наличия ингредиентов
- Удаление неиспользуемых ингредиентов
5. **Календарь планирования**
- Планирование питания по датам
- Массовое добавление в корзину
- Группировка по дням недели
## 🐛 Отладка
### Логи
```bash
# Backend логи
pnpm dev
# Frontend логи
pnpm start-frontend
```
### Проверка API
```bash
# Проверка доступности API
curl http://localhost:3000/api/recipes
# Проверка базы данных
curl http://localhost:3000/api/ingredients
```
### Типизация
```bash
# Проверка TypeScript типов
pnpm types
```
## 🔄 Разработка
### Добавление новых функций
1. **Backend API:**
- Добавьте новые маршруты в `src/api.ts`
- Обновите схему базы данных в `prisma/schema.prisma`
- Создайте миграцию: `pnpm db:migrate`
2. **Frontend:**
- Добавьте новые компоненты в `src/app.tsx`
- Обновите API клиент в `src/api-client.ts`
- Добавьте новые маршруты в React Router
### Структура компонентов
```typescript
// Пример добавления нового компонента
function NewFeature() {
const data = useStore($dataStore)
return (
Новая функция
{/* UI компоненты */}
)
}
```
## 🚀 Деплой
### Production сборка
```bash
# Сборка проекта
pnpm build
# Запуск production сервера
pnpm start
```
### Переменные окружения
```bash
# Production переменные
NODE_ENV=production
DATABASE_URL="postgresql://user:password@host:port/database"
PORT=3000
```
## 📞 Поддержка
При возникновении проблем:
1. Проверьте логи в терминале
2. Убедитесь, что база данных запущена
3. Проверьте переменные окружения
4. Перезапустите серверы
## 📄 Лицензия
MIT License