Чат использующий WebSockets, написан с использованием FastAPI, SQLAlchemy, Vue.js 3 и Vuetify.
- Возможность создания личных и групповых чатов.
- Поддержка работы с нескольких устройств. Один аккаунт залогененный с нескольких компьютеров получит свои сообщения сразу на всех.
- Обновление в реальном времени статуса прочитаности у сообщения.
- Отображение списка пользователей прочитавших сообщение.
- Уведомления когда пользователь появляется онлайн в чате и когда оффлайн.
Расчитан на работу с PostgreSQL, Python >=3.13 и наличие системы управления зависимостями Poetry.
| ENV | Описание | required | default |
|---|---|---|---|
| WS_DATA_BASE_DSN | DB URL вида postgresql+asyncpg://postgres:password@127.0.0.1:5557/db |
+ | |
| WS_SECRET_KEY | Ключ шифроывния JWT | + | |
| WS_DATA_BASE_ECHO | Подробное логирование запросов | - | on |
| WS_SELF_STATIC | Включает отправку статики | - | off |
| WS_ALGORITHM | Алгоритм шифрования JWT | - | HS256 |
| WS_ACCESS_TOKEN_EXPIRE_MINUTES | Сколько живёт JWT в минутах | - | неделя |
| WS_LOG_LEVEL | Уровень логирования | - | info |
Для ускорения рутинных ипераций есть Makefile
| Комманда | Что делает |
|---|---|
make lint |
Запуск линтера |
make isort |
Сортировка импортов |
make infra |
Поднимает постгрес в контейнере |
make app |
Быстрый запуск приложения (нужно установить зависимости) |
make up |
Быстрый запуск приложения, инфраструктуры и WebUI из образа размещённого в ghcr.io |
При первом запуске система создаёт трёх пользователей для проверки
| Логин | Пароль |
|---|---|
admin |
pass1 |
guest |
pass2 |
guest2 |
pass3 |
- То что ник
adminни чего не значит, системы прав нету.




