Skip to content

fenek-dev/Messenger

Repository files navigation

Руководство по проекту

Содержимое

Основное

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

В основе лежит шаблон реакт приложения cra (Create react app).

Стек технологий

  • Typescript
  • CSS
    • SCSS
  • React
    • React-router-dom
    • Formik
  • Redux
    • Redux-thunk
  • Webpack
  • Socket.io
  • Node.js
    • Express
    • JWT (Json Web Token)
  • MongoDB
    • Mongoose
  • Jest
    • React testing library

Для чего был создан проект?

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

Установка

Необходимо, чтобы был установлен Node.js ^14.x

Чтобы запустить проект необходимо его скачать и установить все зависимости:

  1. git clone https://github.com/MaksFenek/Messanger.git

  2. npm install

Настройка проекта

Чтобы проект полноценно работал необходимо подключиться к MongoDB и Cloudinary. Это делается с помощью создания файла .env в папке backend таким образом:

MONGO_URI=*указываем URI от MongoDB*

Помимо этого необходимо указать ещё несколько значений в файле .env :

JWT_SECRET=*указываем любое значение для хеширования данных*
PORT=*указываем порт, на котором будет работать локальный сервер*
CLOUDINARY_NAME=*******
CLOUDINARY_API_KEY=******
CLOUDINARY_API_SECRET=********

Однако, при установки порта необходимо учитывать, что в конфигурационном файле (package.json) клинетской части установлен прокси 5000 для обращения к серверу, находящемуся на том же порту.

"proxy": "http://localhost:5000"

Структура проекта

Проект состоит из двух основных частей - сайт и сервер. Сайт находится в папку src, а сервер - backend.

Backend

Папка backend содержит основной файл server.ts и несколько других папок:

  • controllers - контролеры для работы с данными.
  • core - эндпоинты и сокет.
  • middlewares - прослойка для проверки входящих данныхю
  • models - основные модели данных (Пользователь и чат).

Frontend

Папка src содержит в себе основной файл index.tsx, несколько других файлов (normilize.css, index.scss и тд.), а также вложенные папки:

  • Components - все основные компоненты, не связанные с redux store.
  • Containers - все компоненты, связанные с redux store.
  • icons - иконки.
  • Pages - несколько основных страниц сайта.
  • Redux - всё, что связано с redux.
  • styles - общие стили, миксины, перменные и тд.
  • utils - вспомогательные утилиты для работы с данными.

Функционал

Регистрация и авторизация

Приложение предоставляет возможность регистрации своего аккаунта.

Для регистрации необходимо имя пользователя (Имя, которе будет отображаться у других пользователей), email (уникальный) и пароль.

Для авторизации в приложение необходимо ввести свой email и пароль.

При авторизации в приложение пользователь получит уникальные токен, который позволит автоматически входить в приложение без ввода данных.

На данный момент возможность поменять email и пароль отсутсвует.

Боковое меню

В левой части экрана располагается навигационное меню, позволяющее переходить по вкладкам приложения.

На верхней части располагается текущее имя пользователя.

На данный момент меню содержит только две вкладки - Chats и Settings.

Чаты

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

Каждый элемент в списке содержит имя собеседника и его фотография, последнее сообщение и время отправки последнего сообщения.

После нажатия на один из доступных чатов, открывается чат с пользовтелем.

В верхней части экрана располагается имя пользователя, фотография и дата последней активности.

В средней части экрана находится непосредственно сам чат, содержащий сообщения переписки.

В нижней части экрана можно увидеть поле ввода сообщения и кнопка для отправки.

Сообщения

Каждое сообщение содержит в себе контент и дату отправки, а также возможно ответ на другое сообщение.

При нажатии на сообщение открывается контекстное меню, в котором находится несколько кнопок:reply (Ответ на сообщение) и edit (Редактирование сообщения).

Настройки

Во вкладке Settings, распологающеймся в боковом меню, при нажатии открывается настройки.

В разделе Account можно меня настройки аккаунта, например, имя пользователя, статус, фотографию.

В разделе Options можно менять пользовательские настройки, такие как тема.