# Запуск Nutshell Site Aggregator ## Предварительные требования - Node.js 18+ (установлен: npm 11.11.0) - Docker Desktop (опционально, или PostgreSQL локально) - Windows 10+ ## Структура проекта ``` backend/ - Express.js API (TypeScript, port 3001) frontend/ - React + Vite (TypeScript, port 3000) processing/ - Python валидатор моделей docker-compose.yml - PostgreSQL + Nginx конфиг ``` ## Быстрый старт ### 1. Установка зависимостей **Backend:** ```bash cd backend npm install ``` **Frontend:** ```bash cd frontend npm install ``` ### 2. Переменные окружения **backend/.env** (контейнер БД): ``` NODE_ENV=development PORT=3001 DATABASE_HOST=localhost DATABASE_PORT=5432 DATABASE_USER=nutshell DATABASE_PASSWORD=nutshell_dev_password DATABASE_NAME=nutshell_db JWT_SECRET=your_jwt_secret_key_change_this_in_production SMS_PROVIDER=mock ``` **frontend/.env** (URL API сервера): ``` VITE_API_URL=http://localhost:3001/api ``` ### 3. Запуск сервисов **Вариант 1: Docker Compose (PostgreSQL + Nginx)** ```bash docker-compose up -d ``` **Вариант 2: Локальный PostgreSQL** - Установить PostgreSQL 15 - Создать БД `nutshell_db` - Обновить `DATABASE_HOST` в backend/.env ### 4. Запуск серверов **Backend (новый терминал):** ```bash cd backend npm run dev ``` Будет слушать на `http://localhost:3001/api` **Frontend (новый терминал):** ```bash cd frontend npm run dev ``` Будет слушать на `http://localhost:3000` ### 5. Проверка Откройте http://localhost:3000 в браузере ## Скрипты для быстрого старта **Запустить всё сразу (Windows):** ```bash start_all.bat ``` **Только backend:** ```bash start_backend.bat ``` **Только frontend:** ```bash start_frontend.bat ``` ## API Эндпоинты - `POST /api/auth/login` - Вход (phone) - `POST /api/auth/verify-otp` - Проверка OTP - `GET /api/orders` - Список заказов (требует JWT) - `GET /api/health` - Статус сервера ## Архитектура ### Frontend (React + Vite) - **Pages**: HomePage, LoginPage, OrdersPage, NotFoundPage - **Context**: AuthContext (JWT, user state) - **i18n**: Поддержка русского и английского - **API**: Axios с JWT middleware ### Backend (Express + TypeORM) - **Entities**: User, Order, Model3D, Pricing, Translation - **Auth**: JWT + SMS OTP (mock mode) - **DB**: PostgreSQL 15 - **Storage**: Nginx (max 200MB) ### Database (PostgreSQL 15) - 5 таблиц (User, Order, Model3D, Pricing, Translation) - JWT токены, OTP, заказы - Миграции не требуются (init скрипты в docker-compose.yml) ## Проблемы и решения ### PowerShell блокирует npm Используйте cmd.exe вместо PowerShell или скрипты `.bat` ### Docker не запускается Используйте локальный PostgreSQL: ```bash # Ubuntu/Debian sudo apt-get install postgresql-15 sudo -u postgres createdb nutshell_db # Windows # Скачайте PostgreSQL 15 отсюда: https://www.postgresql.org/download/windows/ ``` ### Port 3000/3001 уже занят Измените PORT в `backend/.env` и `VITE_API_URL` в `frontend/.env` ## MVP Статус ### ✅ Реализовано (Phase 1) - 4 страницы (HomePage, LoginPage, OrdersPage, NotFoundPage) - Аутентификация (JWT + OTP) - React Context для state management - i18n (русский/английский) - Tailwind CSS styling - Express API с TypeORM - PostgreSQL + Docker ### 🔄 В разработке - Загрузка 3D моделей - Расчёт стоимости заказа - Email/SMS уведомления ## Контакты - Email: support@nutshell.dev - GitHub: https://github.com/nutshell/site-aggregator