API для анонимного чат-приложения с функциями поиска собеседника и обмена сообщениями.
- WebSocket подключение с поддержкой восстановления сессии
- Три метода аутентификации (auth, header, bearer)
- Поиск собеседника по критериям (пол, возраст, рейтинг)
- Анонимные чаты с поддержкой статусов сообщений
- Система рейтинга пользователей
- Геолокационный поиск (опционально)
- Node.js
- TypeScript
- Socket.IO
- MongoDB
- JWT для аутентификации
- Winston для логирования
- Circuit Breaker для отказоустойчивости
# Установка зависимостей
npm install
# Создание .env файла (после заполнения плейсхолдеров)
cp .env.example .env
# Компиляция TypeScript
npm run build
# Запуск сервера
npm start# Запуск тестов WebSocket
npm run test:websocketsrc/
├── config/ # Конфигурация приложения
├── models/ # Mongoose модели
├── routes/ # Express маршруты
├── services/ # Бизнес-логика
├── utils/ # Утилиты
├── websocket/ # WebSocket логика
└── scripts/ # Скрипты для тестирования
MIT
Этот проект полностью докеризирован и настроен для CI/CD с помощью GitHub Actions.
1. Создайте .env файл:
Скопируйте содержимое из .env.example и заполните необходимые переменные, особенно MONGODB_URI.
cp .env.example .env
nano .env2. Запустите приложение:
docker-compose up --buildПриложение будет доступно по адресу http://localhost:3001. Горячая перезагрузка включена.
1. Сборка образа:
Для production используется многостадийный Dockerfile, который создает оптимизированный и безопасный образ. Собрать его можно командой:
docker build -t telegram-dating-api .2. Запуск контейнера:
Запустите собранный образ, передав необходимые переменные окружения.
docker run -p 3001:3001 --env-file ./.env telegram-dating-api(Предполагается, что у вас есть .env файл с production настройками).
Конвейер CI/CD (.github/workflows/ci-cd.yml) автоматизирует следующие шаги при каждом пуше в ветку main:
- Установка зависимостей
- Проверка линтером
- Сборка TypeScript кода
- Запуск тестов
- Сборка production-готового Docker образа
- Публикация образа в GitHub Container Registry.
Вы можете найти опубликованные образы в разделе "Packages" вашего репозитория на GitHub. Для деплоя на сервер достаточно будет забрать последнюю версию образа и запустить его.