An open API service indexing awesome lists of open source software.

https://github.com/dmitriiviktorov/instantmessages

Instant messaging service. FastApi + Websocket + Postgresql + Redis + Celery. Register and chat with other users.
https://github.com/dmitriiviktorov/instantmessages

aiogram-bot alembic celery docker fastapi nginx postgresql redis websocket

Last synced: 2 months ago
JSON representation

Instant messaging service. FastApi + Websocket + Postgresql + Redis + Celery. Register and chat with other users.

Awesome Lists containing this project

README

          

# Сервис обмена мгновенными сообщениями
![instant-messages-logo](app/static/logo.png)

Сервис обмена мгновенными сообщениями

## Возможности сервиса

Сервис представляет собой приложение для общения с любым пользователем в режиме реального времени.
Для начала общения необходимо зарегистрироваться и перейти в раздел Chats (чаты).
Обратите внимание, что при регистрации необходимо указать ваш telegram аккаунт.
Это нужно для того, чтобы вы могли общаться с нашим ботом, где вы сможите подписаться на уведомление о новых сообщениях,
если вы не онлайн.

## Установка

Сервис мгновенных сообщений разворачивается с помощью запуска нескольких взаимосвязанных контейнеров:

- `web`: само приложение с логикой работы, эндпоинтами и методами
взаимодействия с базой данных, а так же телеграм бот и очередь задач на celery.
- `postgres`: СУБД PostgreSQL, где хранится вся информация о пользователях и сообщениях.
- `nginx`: Nginx обеспечивает централизованную маршрутизацию, балансировку нагрузки и работу со статическими файлами.

### Шаги установки:

1. **Клонирование репозитория:**

Для установки необходимо клонировать репозиторий с помощью следующей команды:
```bash
git clone https://github.com/DmitriiViktorov/InstantMessages.git
```

2. **Создание .env файла**

После клонирования репозитория в корневой директории проекта необходимо создать
.env файл и указать там следующие типы настроек:

- POSTGRES_USER=< ваше имя пользователя >
- POSTGRES_PASSWORD=< ваш пароль для этого пользователя >
- POSTGRES_DB=< название базы данных >
- POSTGRES_HOST=db
- POSTGRES_PORT=5432

- AUTH_SECRET=<ваша_строка_для_шифрования_данных_аутентификации>
(пример: 'mVFJwu9PpL2s?a1yviK0eIHMtc5!,k_bfgh6Br.YEx8GZRSD7jMbsoWEXfgJz05_RqCKinZSP6eLDNvhmG2YHA9-?p!ryjkdITu8')

- PASSWORD_RESET=<ваша_строка_для_шифрования_токенов_сброса_пароля>
(привер: '5lbiPzhV_74TeEyw0nuAKWmZFJv?xO!pMXaRSH6,IBG3j1L8cU')

- BOT_TOKEN=<ваш_телеграм_бот_токен>
(как зарегистрировать свой телеграм-бот: https://t.me/botfather)

3. **Запуск сервиса**

После перехода в корневую директорию проекта запустите сервис с помощью Docker Compose:
```bash
docker-compose up --build
```

4. **Доступ к приложению**

После успешного запуска сервис будет доступен по адресу http://localhost.

## Использование

После запуска сервиса им сразу можно пользоваться по прямому назначению.
После регистрации пользователь увидит страницу своего профиля, на которой будет ссылка на телеграм бот InstantMessages,
где он сможет подписаться на получение уведомлений.
Перейдя в раздел Chats пользователь выбирает другого пользователя для начала общения и переходит в чат с ним.

## Описание API

API данного приложения документировано с использованием OpenAPI.
Для ознакомления с документацией API, перейдя по следующей ссылке:

- [Документация API](http://localhost:5050/docs)

## Контактная информация

В случае возникновения вопросов, комментариев, замечаний по работе приложения вы можете связаться со мной:
- Email: viktorovokrl@gmail.com
- Github: https://github.com/DmitriiViktorov/twitter
- Telegram: https://t.me/ViktorovDV