Система глобальных оповещений о чрезвычайных ситуациях с использованием протоколов TCP, UDP и WebSocket.
Проект состоит из двух основных частей:
- Backend: Django + Django REST Framework + Django Channels
- Frontend: React + Material UI
- Получение оповещений от МЧС (через TCP)
- Отслеживание данных с дронов (через UDP)
- Оповещения о стихийных бедствиях в реальном времени (через WebSocket)
- Управление серверами (добавление/удаление серверов)
- Кэширование событий и данных на клиенте
- Статистика по активным ЧС
- Python 3.8+
- Node.js 14+
- Redis (для Django Channels)
- PostgreSQL (опционально)
- Создайте виртуальное окружение и активируйте его (в каждом терминале, где будете писать команды запуска, миграций или зависимостей):
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows- Установите зависимости:
pip install -r requirements.txt- Создайте файл .env в директории backend со следующими параметрами:
DEBUG=True
SECRET_KEY=your_secret_key
DATABASE_URL=sqlite:///db.sqlite3
REDIS_URL=redis://localhost:6379/0
- Выполните миграции:
python backend/manage.py migrate- Запустите Django сервер:
python backend/manage.py runserver- В отдельном терминале запустите TCP и UDP серверы:
python backend/manage.py runservers- Установите зависимости:
cd frontend
npm installОсновные зависимости фронтенда:
- React 19.1.0
- Material UI 7.0.2
- React Router DOM 7.5.0
- React Toastify 10.0.4
- Axios 1.8.4
- Запустите React приложение:
cd frontend
npm startПриложение будет доступно по адресу http://localhost:3000
В режиме разработки можно использовать моковые данные, которые автоматически генерируются при подключении к локальным серверам (localhost или 127.0.0.1).
Для запуска в режиме разработки:
- Запустите только фронтенд:
npm startиз директории frontend - В приложении выберите "Локальный сервер" в разделе "Серверы"
Система автоматически начнет симулировать данные для:
- Оповещений о ЧС
- Данных с дронов
- Статистики
Сервер принимает сообщения от систем МЧС по протоколу TCP и сохраняет данные о ЧС в базе данных.
Данные о положении дронов и собранной ими информации передаются на сервер по протоколу UDP.
Информация о стихийных бедствиях и обновления статуса ЧС отправляются клиентам через WebSocket соединение.
Если вы не можете подключиться к локальному серверу:
- Убедитесь, что Django сервер запущен на порту 8000
- Проверьте, работает ли Redis (для WebSocket соединений)
- Для локальной разработки используйте подключение к
localhost:8000или127.0.0.1:8000
Если вы видите ошибку таймаута при подключении, приложение автоматически переключится в режим симуляции. Проверьте, что бэкенд запущен и доступен.
- Денисова Юлия Константиновна