Репозиторий содержит единый сервис для организации практик, стажировок и проектных школ. Сервис закрывает процесс от публикации мероприятия и сбора заявок до автоматизации статусов, тестирования, формирования команд и ведения задач в планировщике.
- CRM: мероприятия, направления, проекты, заявки, статусы, роли, профиль пользователя, экспорт данных.
- Автоматизация CRM: роботы и триггеры для обработки заявок, отправки VK-сообщений и изменения статусов.
- Планировщик: формирование команд, бэклог, канбан, диаграмма Ганта, WebSocket-обновления задач между пользователями.
- Модуль тестирования: создание тестов, прохождение тестов проектантами, SSO-переход из CRM, возврат результатов в CRM.
- VK-интеграция: подтверждение VK, отправка сообщений, ссылки в оргчат, подтверждение участия в проектной школе.
- CI/CD: сборка Docker-образов в GitHub Actions, публикация в GitHub Container Registry и деплой на VPS.
- CRM:
https://meetuppoint.ru - Модуль тестирования:
https://test.meetuppoint.ru - VPS:
5.181.108.146 - Путь проекта на VPS:
/home/corleone/crm-test-integration
Если проект передается другому владельцу, домены, IP и путь могут измениться. В этом случае нужно обновить .env на VPS, DNS-записи и GitHub Secrets.
.
|-- .github/workflows/ci-cd.yml # GitHub Actions: сборка образов и деплой
|-- docker-compose.yml # локальная/ручная сборка из исходников
|-- docker-compose.local.yml # override для локального запуска без HTTPS
|-- docker-compose.prod.yml # production запуск из готовых GHCR-образов
|-- .env.example # шаблон переменных окружения для всего сервиса
|-- DEPLOY_INTEGRATION.md # первый деплой и настройка CI/CD
|-- MAINTENANCE.md # обслуживание production-сервера
|-- ric-crm-planner/
| |-- back/ # Django backend CRM
| `-- front/ # React + TypeScript frontend CRM
`-- test-constructor/
|-- backend/ # Go backend модуля тестирования
`-- frontend/ # React frontend модуля тестирования
В production используется docker-compose.prod.yml. Он не собирает проект на сервере, а скачивает готовые образы из GHCR.
Сервисы:
db- PostgreSQL для CRM.backend- Django API CRM.automation- воркер автоматизации CRM и планировщика.testing-db- PostgreSQL для модуля тестирования.testing-backend- backend конструктора тестов.testing-web- frontend конструктора тестов.web- Caddy, frontend CRM, HTTPS, reverse proxy к backend и модулю тестирования.
Схема:
push в main
-> GitHub Actions
-> сборка Docker-образов
-> публикация в ghcr.io
-> SSH на VPS
-> git pull
-> docker compose pull
-> docker compose up -d
-> миграции Django
На VPS не выполняется docker compose up -d --build. Это сделано специально: сборка frontend/backend на слабом VPS быстро забивает диск и оперативную память.
Подробная настройка CI/CD описана в DEPLOY_INTEGRATION.md.
Нужны Docker и Docker Compose plugin.
- Создать
.env:
cp .env.example .env-
Для локального запуска ничего заполнять не нужно:
.env.exampleуже содержит безопасные dev-значения. При необходимости можно изменить пароли или токены в.env. -
Запустить локально:
docker compose -f docker-compose.yml -f docker-compose.local.yml up -d --build- Открыть CRM:
http://localhost
- Открыть модуль тестирования:
http://testing.localhost
Если testing.localhost не открывается, проверьте, что браузер и ОС корректно резолвят *.localhost.
На VPS:
cd ~/crm-test-integration
docker compose -f docker-compose.prod.yml ps
docker compose -f docker-compose.prod.yml logs --tail=100 backend
docker compose -f docker-compose.prod.yml logs --tail=100 webПроверить DNS:
nslookup meetuppoint.ru
nslookup test.meetuppoint.ruОба домена должны указывать на IP VPS.
.env.exampleхранится в GitHub и содержит только шаблон..envхранится только локально или на VPS и не должен попадать в GitHub.- GitHub Secrets хранят SSH-доступ к VPS для CI/CD.
- GitHub Container Registry хранит Docker-образы.
- реальный
.env; - приватные SSH-ключи;
- токены VK;
- пароли баз данных;
- токены GHCR;
- дампы production-базы.
Production restart:
cd ~/crm-test-integration
docker compose -f docker-compose.prod.yml up -dМиграции CRM:
docker compose -f docker-compose.prod.yml exec -T backend python manage.py migrateСоздать администратора CRM:
docker compose -f docker-compose.prod.yml exec backend python manage.py createsuperuserЛоги:
docker compose -f docker-compose.prod.yml logs --tail=100Очистка ненужных Docker-образов:
docker image prune -f
docker builder prune -fDEPLOY_INTEGRATION.md- установка Docker, настройка VPS, DNS,.env, GitHub Secrets и CI/CD.MAINTENANCE.md- обновление сервиса, ручной deploy, логи, бэкапы, чистка места, передача проекта.