# DoSoapCalc Калькулятор себестоимости изделий ручной работы с отправкой результатов в Telegram. ## Описание DoSoapCalc - это система для расчёта себестоимости различных изделий ручной работы (мыло, свечи и др.) с веб-интерфейсом и интеграцией с Telegram-ботом. ## Архитектура Проект состоит из двух частей: - **Backend** (Node.js + Express) - API сервер и Telegram-бот - **Frontend** (Next.js + React + TypeScript) - веб-интерфейс калькуляторов ## Быстрый старт ### Backend 1. Перейдите в папку `backend`: ```bash cd backend ``` 2. Установите зависимости: ```bash npm install ``` 3. Создайте файл `.env` на основе `.env.example`: ```bash cp .env.example .env ``` 4. Заполните переменные окружения в `.env`: ```env BOT_TOKEN=your_telegram_bot_token WEBAPP_BASE_URL=https://your-domain.com API_BASE_URL=https://api.your-domain.com HTTP_PORT=3001 CORS_ORIGINS=https://your-domain.com ``` 5. Запустите сервер: ```bash node bot.js ``` ### Frontend 1. Перейдите в папку `frontend`: ```bash cd frontend ``` 2. Установите зависимости: ```bash npm install ``` 3. (Опционально) Создайте файл `.env.local` для переопределения API URL: ```env NEXT_PUBLIC_API_BASE_URL=https://api.your-domain.com ``` 4. Запустите dev-сервер: ```bash npm run dev ``` 5. Для production сборки: ```bash npm run build npm run export ``` ## Добавление новых калькуляторов См. подробное руководство в файле [CALCULATOR_GUIDE.md](./CALCULATOR_GUIDE.md) ## Структура проекта ``` DoSoapCalc/ ├── backend/ │ ├── calculators/ # Модули калькуляторов │ │ ├── index.js # Регистрация калькуляторов │ │ ├── soap.js # Калькулятор мыла │ │ └── candle.js # Пример: калькулятор свечей │ ├── config/ │ │ └── env.js # Загрузка переменных окружения │ ├── lib/ │ │ ├── telegram.js # Логика отправки в Telegram │ │ └── validator.js # Валидация данных │ ├── routes/ │ │ └── api.js # API маршруты │ └── bot.js # Главный файл backend │ └── frontend/ ├── app/ │ ├── [calculator]/ # Динамический роут для калькуляторов │ └── page.tsx # Редирект на /soap ├── components/ │ ├── DynamicCalculator.tsx # Универсальный компонент │ └── FormField.tsx # Переиспользуемые поля ├── lib/ │ ├── calculators/ # Модули калькуляторов (frontend) │ │ ├── index.ts │ │ ├── soap.ts │ │ └── candle.ts │ ├── api.ts # Логика отправки данных │ └── config.ts # Конфигурация └── types/ └── calculator.ts # TypeScript типы ``` ## Использование 1. Откройте Telegram-бота 2. Отправьте команду `/menu` 3. Нажмите на кнопку для открытия калькулятора 4. Заполните форму 5. Нажмите "Отправить расчёт в Telegram" 6. Результаты будут отправлены в чат с ботом ## Доступные калькуляторы - **Мыло** (`/soap`) - расчёт себестоимости мыла ручной работы - **Свеча** (`/candle`) - пример калькулятора свечей ## Технологии **Backend:** - Node.js - Express - node-telegram-bot-api - multer (загрузка файлов) **Frontend:** - Next.js 15 - React 19 - TypeScript - Tailwind CSS 4 ## Лицензия ISC