DoSoapCalc/README.md

148 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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