Калькулятор мыловара
- Добавлен компонент CalculatorNav для переключения между калькуляторами - Навигация сохраняет chat_id при переходах - Исправлен endpoint API (используется правильный путь с типом калькулятора) - Пересобран frontend для применения изменений |
||
|---|---|---|
| backend | ||
| frontend | ||
| .git_setup.md | ||
| .gitignore | ||
| CALCULATOR_GUIDE.md | ||
| CHANGELOG.md | ||
| ecosystem.config.js | ||
| PROJECT_INFO.md | ||
| README.md | ||
DoSoapCalc
Калькулятор себестоимости изделий ручной работы с отправкой результатов в Telegram.
Описание
DoSoapCalc - это система для расчёта себестоимости различных изделий ручной работы (мыло, свечи и др.) с веб-интерфейсом и интеграцией с Telegram-ботом.
Архитектура
Проект состоит из двух частей:
- Backend (Node.js + Express) - API сервер и Telegram-бот
- Frontend (Next.js + React + TypeScript) - веб-интерфейс калькуляторов
Быстрый старт
Backend
- Перейдите в папку
backend:
cd backend
- Установите зависимости:
npm install
- Создайте файл
.envна основе.env.example:
cp .env.example .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
- Запустите сервер:
node bot.js
Frontend
- Перейдите в папку
frontend:
cd frontend
- Установите зависимости:
npm install
- (Опционально) Создайте файл
.env.localдля переопределения API URL:
NEXT_PUBLIC_API_BASE_URL=https://api.your-domain.com
- Запустите dev-сервер:
npm run dev
- Для production сборки:
npm run build
npm run export
Добавление новых калькуляторов
См. подробное руководство в файле 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 типы
Использование
- Откройте Telegram-бота
- Отправьте команду
/menu - Нажмите на кнопку для открытия калькулятора
- Заполните форму
- Нажмите "Отправить расчёт в Telegram"
- Результаты будут отправлены в чат с ботом
Доступные калькуляторы
- Мыло (
/soap) - расчёт себестоимости мыла ручной работы - Свеча (
/candle) - пример калькулятора свечей
Технологии
Backend:
- Node.js
- Express
- node-telegram-bot-api
- multer (загрузка файлов)
Frontend:
- Next.js 15
- React 19
- TypeScript
- Tailwind CSS 4
Настройка Git (автоматическая отправка)
Для автоматической отправки изменений в репозиторий без запроса пароля:
- Credential helper уже настроен на
store - При первом
git pushвведите логин и пароль - они сохранятся - Все последующие push будут выполняться автоматически
git push origin main
# Username: ваш_логин
# Password: ваш_пароль
Подробные инструкции по альтернативным вариантам (SSH, токены) см. в .git_setup.md
Лицензия
ISC