Проект предоставляет асинхронный веб‑чат с FastAPI, MongoDB, WebSocket и React (через CDN). Доступны три режима общения:
- CommonChat — общий канал для всех пользователей.
- Комнаты — тематические чаты c расширенными фильтрами по тегам, времени и географии.
- P2P — приватные диалоги с возможностью одновременного участия в нескольких сессиях.
Дополнительно реализованы подписки на события по принципу «что? где? когда?» с уведомлениями в реальном времени.
-
Установите зависимости:
pip install -r requirements.txt
-
Убедитесь, что MongoDB доступна по адресу
mongodb://localhost:27017или задайте переменную окруженияMONGO_URI. -
Запустите приложение:
uvicorn app.main:app --reload
-
Перейдите в браузере по адресу
http://localhost:8000.
- Одновременная работа с общим каналом, несколькими комнатами и несколькими P2P-сессиями.
- Гибкий фильтр комнат по тегам, тексту, локации и времени.
- Создание комнат с географией, тематикой и временем события.
- Подписки на ключевые слова, географию и временные окна по областям чата с уведомлениями в режиме WebSocket.
- Асинхронное взаимодействие с MongoDB (Motor) и WebSocket API FastAPI.
| Имя | Описание | Значение по умолчанию |
|---|---|---|
MONGO_URI |
URI MongoDB | mongodb://localhost:27017 |
MONGO_DB |
Имя базы данных | chat_server |
ALLOWED_ORIGINS |
CORS whitelist (через запятую или *) |
* |
DEBUG |
Включить режим отладки FastAPI | false |
- FastAPI + Uvicorn
- Motor (MongoDB)
- WebSocket API
- React 18 + TailwindCSS (через CDN)
- AsyncIO
app/
├── config.py
├── database.py
├── main.py
├── schemas.py
├── services/
│ ├── messages.py
│ └── subscriptions.py
├── static/
│ └── index.html
└── websocket_manager.py
История сообщений, комнаты, P2P-сессии и подписки сохраняются в MongoDB.