https://github.com/vitaliykozhushko/chat_app
A simple real-time chat app
https://github.com/vitaliykozhushko/chat_app
elementplus fastapi pyjwt python socket-io vuejs3 vuex
Last synced: 5 months ago
JSON representation
A simple real-time chat app
- Host: GitHub
- URL: https://github.com/vitaliykozhushko/chat_app
- Owner: VitaliyKozhushko
- Created: 2024-09-03T15:27:17.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2024-09-12T10:01:07.000Z (almost 2 years ago)
- Last Synced: 2025-04-05T21:45:22.278Z (about 1 year ago)
- Topics: elementplus, fastapi, pyjwt, python, socket-io, vuejs3, vuex
- Language: Python
- Homepage:
- Size: 458 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.md
Awesome Lists containing this project
README
# Тестовое задание
Создать api приложение на FastAPI с использованием SocketIO для чата в реальном времени
## Содержание
1. [Требования](#main_requirements)
2. [Стек технологий](#technology_stack)
3. [Документация по API](#doc_api)
4. [Требования к проекту со стороны фронтенда](#front_requirements)
4. [Инструкция по запуску проекта](#instruction_startup)
5. [Особенности](#features)
- Основная функциональность:
- Пользователи могут подключаться к чату и отправлять сообщения.
- Все подключенные пользователи видят все отправленные сообщения в
реальном времени.
- Реализовать простую аутентификацию пользователей (например, с
помощью токенов).
- Использовать базу данных для хранения истории сообщений (например,
PostgreSQL или SQLite).
- Дополнительные требования:
- Добавить комнаты чата, где пользователи могут выбирать, в какой
комнате общаться.
- Реализовать приватные сообщения между пользователями.
- Добавить уведомления о новых сообщениях.
- Backend: [FastAPI](https://fastapi.tiangolo.com/)
- Authentication: [PyJWT](https://pyjwt.readthedocs.io/en/stable/)
- Database: [SQLite](https://www.sqlite.org/)
- Real-time communication: [SocketIO](https://python-socketio.readthedocs.io/en/stable/)
- Frontend: [VueJS](https://vuejs.org/)
- UI Library: [Element+](https://element-plus.org/en-US/)
- State management: [Vuex](https://v3.vuex.vuejs.org/ru/)
- Logo: YandexGPT + [Шедеврум](https://shedevrum.ai/)
- Swagger: http://localhost:8000/swagger/
- Redoc: http://localhost:8000/redoc/
## Требования к проекту со стороны фронтенда
- NodeJS v.20.17.0
- NPM v.10.8.2
## Инструкция по запуску проекта
1. Клонируйте репозиторий
```
git clone https://github.com/VitaliyKozhushko/chat_app
```
2. Настройте .env файл
3. Запустите проект:
- либо с помощью команд FastAPI:
```
uvicorn app.main:socketio_app --reload
```
- в другом терминале, находясь в папке проекта перейти в папку frontend
```
npm run dev
```
- перейти по ссылке localhost фронтенда
====
- либо с помощью Docker
```
docker compose up --build -d
```
- перед первым входом необходимо зарегистрироваться
- в списке пользователей в ЛК, отображаются пользователи, кроме текущего
- адаптивность не добавлена
- создавать комнаты может любой пользователь
- для вступления в комнату надо нажать "Присоединиться"
- для выхода из комнаты (удаление из списка, в которых состоит пользователь) - "Покинуть"
- в БД сохраняется история как сообщений внутри комнат, так и приватных сообщений
- уведомления отображаются только для пользователей, которые онлайн