Веб-приложение для управления рецептами, планирования питания и составления списков покупок.
- Node.js версии 18+
- pnpm (рекомендуется) или npm
- PostgreSQL база данных
- Git
# Клонирование репозитория
git clone <repository-url>
cd food-app
# Установка зависимостей
pnpm install- Создайте PostgreSQL базу данных:
createdb food_app- Настройте переменные окружения:
# Создайте файл .env в корне проекта
cp env.example .env
# Отредактируйте .env файл
DATABASE_URL="postgresql://postgres:postgres@127.0.0.1:5432/food_app"- Запустите миграции:
pnpm db:migrate- Заполните базу тестовыми данными:
pnpm db:seed# Терминал 1: Запуск backend API сервера
pnpm dev
# Терминал 2: Запуск frontend в режиме разработки
pnpm start-frontend# Сборка проекта
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 # Документация
# Разработка
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 - планирование питания по датам
# Создание новой миграции
pnpm db:migrate
# Откат последней миграции
pnpm db:migrate reset- React 19 - UI библиотека
- Mantine UI - компоненты интерфейса
- React Router - навигация
- Nanostores - управление состоянием
- Vite - сборщик и dev сервер
- Elysia.js - веб-фреймворк
- Prisma - ORM для работы с базой данных
- PostgreSQL - база данных
- Eden - типизированный API клиент
-
Управление рецептами
- Просмотр списка рецептов
- Создание новых рецептов
- Детальная информация о рецепте
-
Корзина покупок
- Добавление рецептов в корзину
- Управление количеством
- Автоматический расчет КБЖУ
-
Список покупок
- Автоматическое формирование списка ингредиентов
- Учет имеющихся ингредиентов
- Расчет необходимого количества
-
Управление ингредиентами
- Создание новых ингредиентов
- Указание наличия ингредиентов
- Удаление неиспользуемых ингредиентов
-
Календарь планирования
- Планирование питания по датам
- Массовое добавление в корзину
- Группировка по дням недели
# Backend логи
pnpm dev
# Frontend логи
pnpm start-frontend# Проверка доступности API
curl http://localhost:3000/api/recipes
# Проверка базы данных
curl http://localhost:3000/api/ingredients# Проверка TypeScript типов
pnpm types-
Backend API:
- Добавьте новые маршруты в
src/api.ts - Обновите схему базы данных в
prisma/schema.prisma - Создайте миграцию:
pnpm db:migrate
- Добавьте новые маршруты в
-
Frontend:
- Добавьте новые компоненты в
src/app.tsx - Обновите API клиент в
src/api-client.ts - Добавьте новые маршруты в React Router
- Добавьте новые компоненты в
// Пример добавления нового компонента
function NewFeature() {
const data = useStore($dataStore)
return (
<Stack gap="lg">
<Title>Новая функция</Title>
{/* UI компоненты */}
</Stack>
)
}# Сборка проекта
pnpm build
# Запуск production сервера
pnpm start# Production переменные
NODE_ENV=production
DATABASE_URL="postgresql://user:password@host:port/database"
PORT=3000При возникновении проблем:
- Проверьте логи в терминале
- Убедитесь, что база данных запущена
- Проверьте переменные окружения
- Перезапустите серверы
MIT License