Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions chatmatch-assistant/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Database
DATABASE_URL=postgresql://username:password@localhost:5432/chatmatch_db

# Server Configuration
PORT=3001
NODE_ENV=development
JWT_SECRET=your_jwt_secret_key_here
CORS_ORIGIN=http://localhost:3000

# Telegram Configuration
TELEGRAM_BOT_TOKEN=your_telegram_bot_token
TELEGRAM_BOT_USERNAME=your_bot_username
TELEGRAM_BOT_SECRET=your_telegram_webhook_secret

# Telegram WebApp
TELEGRAM_WEBAPP_URL=https://your-domain.com

# OpenAI Configuration
OPENAI_API_KEY=your_openai_api_key

# Stripe Configuration
STRIPE_PUBLISHABLE_KEY=pk_test_your_stripe_publishable_key
STRIPE_SECRET_KEY=sk_test_your_stripe_secret_key
STRIPE_WEBHOOK_SECRET=whsec_your_webhook_secret
STRIPE_PRICE_ID=price_your_subscription_price_id

# Telegram Stars Configuration
TELEGRAM_STARS_INVOICE_LINK=https://t.me/$your_bot?start=pay

# Frontend URL
FRONTEND_URL=http://localhost:3000

# Rate Limiting
FREE_GENERATIONS_PER_DAY=5
PRO_GENERATIONS_PER_MONTH=300
262 changes: 262 additions & 0 deletions chatmatch-assistant/DEPLOYMENT_SUMMARY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,262 @@
# 🎉 ChatMatch Assistant - Deployment Summary

## ✅ Что создано

Полноценное WebApp **"ChatMatch Assistant"** — AI-powered помощник для ведения переписок с поддержкой Telegram WebApp, авторизацией и платной подпиской.

### 📁 Структура проекта
```
chatmatch-assistant/
├── 🔧 Configuration Files
│ ├── .env.example ✅ Environment variables template
│ ├── ecosystem.config.js ✅ PM2 process configuration
│ └── Dockerfile ✅ Container configuration
├── 🚀 Deployment Scripts
│ ├── deploy.sh ✅ Production deployment (Ubuntu)
│ └── env.setup.sh ✅ Environment setup script
├── 🔙 Backend (Node.js + Express + TypeScript)
│ ├── src/routes/
│ │ ├── auth.ts ✅ Telegram auth & JWT
│ │ ├── chat.ts ✅ AI chat generation with OpenAI
│ │ ├── subscription.ts ✅ Stripe & Telegram Stars payments
│ │ ├── webhooks.ts ✅ Payment webhooks handling
│ │ └── user.ts ✅ User management
│ ├── src/utils/
│ │ └── usage.ts ✅ Usage limits & validation
│ ├── src/index.ts ✅ Express server with middleware
│ ├── prisma/schema.prisma ✅ PostgreSQL database schema
│ ├── package.json ✅ Dependencies & scripts
│ └── tsconfig.json ✅ TypeScript configuration
├── 🎨 Frontend (Next.js + React + TypeScript)
│ ├── app/
│ │ ├── layout.tsx ✅ Root layout with providers
│ │ ├── page.tsx ✅ Main page (landing + dashboard)
│ │ └── globals.css ✅ Tailwind CSS styles
│ ├── components/
│ │ └── LoadingSpinner.tsx ✅ Loading component
│ ├── contexts/
│ │ └── AuthContext.tsx ✅ Authentication context
│ ├── tailwind.config.js ✅ Tailwind configuration
│ ├── next.config.js ✅ Next.js configuration
│ ├── postcss.config.js ✅ PostCSS configuration
│ ├── package.json ✅ Dependencies & scripts
│ └── tsconfig.json ✅ TypeScript configuration
└── 📚 Documentation
├── README.md ✅ Complete project documentation
├── QUICKSTART.md ✅ Quick start guide
├── PROJECT_OVERVIEW.md ✅ Architecture overview
└── DEPLOYMENT_SUMMARY.md ✅ This file
```

## 🎯 Реализованный функционал

### ✅ Core Features
- **AI генерация ответов**: 3 варианта продолжения переписки в выбранном тоне
- **Тоны общения**: Флирт, дружелюбный, серьёзный с настраиваемыми промптами
- **История генераций**: Полная история всех созданных ответов с пагинацией
- **Выбор ответа**: Возможность отметить использованный вариант

### ✅ Telegram Integration
- **Login Widget**: Веб авторизация через Telegram с проверкой подписи
- **WebApp Support**: Полная интеграция с Telegram WebApp
- **Auto-login**: Автоматическая авторизация в WebApp
- **Data Exchange**: Обмен данными между WebApp и ботом
- **Webhook Handling**: Обработка событий от Telegram бота

### ✅ Payment System
- **Stripe Integration**: Полная интеграция с карточными платежами
- **Telegram Stars**: Альтернативный способ оплаты через Telegram
- **Webhook Processing**: Надежная обработка платежных событий
- **Subscription Management**: Управление подписками и автопродление
- **Usage Tracking**: Точный подсчет генераций и лимитов

### ✅ Security & Authentication
- **JWT Tokens**: Безопасная авторизация с 30-дневным сроком действия
- **Telegram Validation**: HMAC-SHA256 проверка всех данных от Telegram
- **Rate Limiting**: Защита от спама (100 req/15min per IP)
- **Input Validation**: Валидация всех входящих данных
- **CORS & Security Headers**: Полная настройка безопасности

### ✅ Database & ORM
- **PostgreSQL Schema**: Оптимизированная схема с индексами
- **Prisma ORM**: Type-safe database access
- **Migrations**: Автоматические миграции базы данных
- **Connection Pooling**: Эффективное управление соединениями

### ✅ UI/UX
- **Modern Design**: Красивый интерфейс с Tailwind CSS
- **Responsive**: Адаптивность под все устройства
- **Dark/Light Theme**: Поддержка темной темы Telegram
- **Loading States**: Понятные состояния загрузки
- **Error Handling**: Пользовательские уведомления об ошибках

### ✅ DevOps & Deployment
- **Docker Support**: Контейнеризация всего приложения
- **PM2 Configuration**: Production-ready process management
- **Automated Deployment**: Скрипт для деплоя на чистом Ubuntu
- **Nginx Configuration**: Reverse proxy с SSL поддержкой
- **Health Checks**: Мониторинг состояния сервисов
- **Log Management**: Структурированные логи с ротацией

## 🚀 Как запустить

### 1. Быстрый старт (Development)
```bash
# Клонирование и настройка
git clone <your-repo>
cd chatmatch-assistant
chmod +x env.setup.sh
./env.setup.sh

# Редактирование .env с API ключами
nano .env

# Запуск PostgreSQL
docker run --name postgres-chatmatch \
-e POSTGRES_DB=chatmatch_db \
-e POSTGRES_USER=chatmatch \
-e POSTGRES_PASSWORD=chatmatch_password \
-p 5432:5432 -d postgres:15

# Backend (терминал 1)
cd backend
npm install
npm run db:push
npm run dev

# Frontend (терминал 2)
cd frontend
npm install
npm run dev
```

### 2. Production Deployment
```bash
# На Ubuntu сервере
chmod +x deploy.sh
sudo ./deploy.sh

# Или с кастомными параметрами
PORT=3001 DATABASE_URL="postgresql://..." ./deploy.sh
```

## 🔑 Необходимые API ключи

| Сервис | Где получить | Переменная |
|--------|--------------|------------|
| **Telegram Bot** | [@BotFather](https://t.me/BotFather) | `TELEGRAM_BOT_TOKEN` |
| **OpenAI** | [platform.openai.com](https://platform.openai.com/api-keys) | `OPENAI_API_KEY` |
| **Stripe** | [dashboard.stripe.com](https://dashboard.stripe.com/apikeys) | `STRIPE_SECRET_KEY` |

## 💰 Модель монетизации

### Free Plan
- ✅ 5 генераций в день
- ✅ 3 тона общения
- ✅ История последних генераций

### Pro Plan (499 ₽/месяц)
- ✅ 300 генераций в месяц
- ✅ 3 тона общения
- ✅ Полная история генераций
- ✅ Приоритетная поддержка

## 🔧 Техническая реализация

### Backend API
- **Express.js** с TypeScript
- **Prisma ORM** + PostgreSQL
- **OpenAI GPT-3.5-turbo** для генерации
- **JWT** авторизация
- **Webhook** обработка (Stripe + Telegram)
- **Rate limiting** и валидация

### Frontend
- **Next.js 14** с App Router
- **React 18** + TypeScript
- **Tailwind CSS** для стилей
- **React Context** для состояния
- **Responsive design**

### DevOps
- **Docker** контейнеризация
- **PM2** process management
- **Nginx** reverse proxy
- **Automated deployment** scripts
- **SSL/TLS** поддержка

## 📊 Мониторинг и поддержка

### Health Checks
```bash
curl http://localhost:3001/health
# {"status":"OK","service":"ChatMatch Assistant Backend"}
```

### PM2 Monitoring
```bash
pm2 status # Статус процессов
pm2 logs # Логи в реальном времени
pm2 monit # Dashboard мониторинга
```

### Database Health
```bash
psql $DATABASE_URL -c "SELECT COUNT(*) FROM users;"
```

## 🔮 Возможности расширения

### Новые функции
- [ ] Дополнительные тоны (деловой, творческий, юмористический)
- [ ] Многоязычность (английский, французский, немецкий)
- [ ] Шаблоны чатов для разных ситуаций
- [ ] Analytics dashboard для пользователей
- [ ] API для интеграции с другими сервисами

### Интеграции
- [ ] WhatsApp Business API
- [ ] Discord Bot
- [ ] Slack App
- [ ] Chrome Extension
- [ ] Mobile Apps (iOS/Android)

### Масштабирование
- [ ] Redis кэширование
- [ ] Load balancing
- [ ] CDN интеграция
- [ ] Database sharding
- [ ] Microservices архитектура

## 🎯 Результат

**ChatMatch Assistant** полностью готов к production использованию:

✅ **Полнофункциональный backend** с AI генерацией и платежами
✅ **Современный frontend** с адаптивным дизайном
✅ **Telegram интеграция** (Login Widget + WebApp)
✅ **Платежная система** (Stripe + Telegram Stars)
✅ **Автоматический деплой** на Ubuntu серверы
✅ **Production-ready** конфигурация
✅ **Полная документация** и руководства

---

## 📞 Поддержка и развитие

- **Документация**: [README.md](README.md) | [QUICKSTART.md](QUICKSTART.md)
- **Архитектура**: [PROJECT_OVERVIEW.md](PROJECT_OVERVIEW.md)
- **GitHub Issues**: Техническая поддержка
- **Email**: support@chatmatch-assistant.com

---

<div align="center">
<h3>🎉 Проект готов к использованию!</h3>
<p>Запустите <code>./deploy.sh</code> для production деплоя</p>
<p>или <code>npm run dev</code> в backend и frontend для разработки</p>
</div>
85 changes: 85 additions & 0 deletions chatmatch-assistant/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# Multi-stage build for ChatMatch Assistant
FROM node:18-alpine AS base

# Install dependencies only when needed
FROM base AS deps
RUN apk add --no-cache libc6-compat
WORKDIR /app

# Copy package files for both frontend and backend
COPY frontend/package*.json ./frontend/
COPY backend/package*.json ./backend/

# Install dependencies
RUN cd frontend && npm ci --only=production && npm cache clean --force
RUN cd backend && npm ci --only=production && npm cache clean --force

# Build frontend
FROM base AS frontend-builder
WORKDIR /app/frontend
COPY frontend/package*.json ./
RUN npm ci
COPY frontend/ .
RUN npm run build

# Build backend
FROM base AS backend-builder
WORKDIR /app/backend
COPY backend/package*.json ./
RUN npm ci
COPY backend/ .
RUN npm run build

# Production image
FROM node:18-alpine AS runner
WORKDIR /app

# Create app user
RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 nextjs

# Install PM2 globally
RUN npm install pm2 -g

# Install PostgreSQL client
RUN apk add --no-cache postgresql-client

# Copy built applications
COPY --from=frontend-builder --chown=nextjs:nodejs /app/frontend/.next ./frontend/.next
COPY --from=frontend-builder --chown=nextjs:nodejs /app/frontend/public ./frontend/public
COPY --from=frontend-builder /app/frontend/package.json ./frontend/
COPY --from=deps /app/frontend/node_modules ./frontend/node_modules

COPY --from=backend-builder --chown=nextjs:nodejs /app/backend/dist ./backend/dist
COPY --from=backend-builder /app/backend/package.json ./backend/
COPY --from=backend-builder /app/backend/prisma ./backend/prisma
COPY --from=deps /app/backend/node_modules ./backend/node_modules

# Copy PM2 ecosystem file
COPY ecosystem.config.js .

# Copy environment and deployment files
COPY .env.example .
COPY deploy.sh .
COPY env.setup.sh .

# Make scripts executable
RUN chmod +x deploy.sh env.setup.sh

# Set environment variables
ENV NODE_ENV=production
ENV PORT=3001
ENV FRONTEND_PORT=3000

# Expose ports
EXPOSE 3000 3001

# Health check
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
CMD curl -f http://localhost:3001/health || exit 1

# Switch to non-root user
USER nextjs

# Start both frontend and backend with PM2
CMD ["pm2-runtime", "start", "ecosystem.config.js"]
Loading