Мессенджер для обмена текстовыми сообщениями в режиме реального времени в рамках тематических чат-комнат.
- ✅ Регистрация и аутентификация пользователей
- ✅ Просмотр списка существующих комнат
- ✅ Поиск комнат в реальном времени (live search)
- ✅ Просмотр истории сообщений в чате
- ✅ Отправка сообщений в чатах комнат
- ✅ Удаление собственных сообщений
- ✅ Удаление любых сообщений для владельца комнаты
- ✅ Поиск сообщений в выбранном чате (live search)
- ✅ Отображение сообщений в реальном времени
- ✅ Выход из аккаунта
- Frontend: React 18.2.0
- Build Tool: Vite 5.2.0
- State Management: Redux Toolkit 2.8.2
- Backend: Firebase 11.8.1
- Firebase Authentication (аутентификация по email)
- Firebase Realtime Database (хранение данных в реальном времени)
- UI Library: RSuite 5.81.0 (уведомления об ошибках)
- Routing: React Router DOM 7.6.0
- Клонируйте репозиторий:
git clone https://github.com/Luca324/FLocky.git
cd realtime-chat- Установите зависимости:
cd app
npm install- Создайте файл
.envв папкеappи добавьте конфигурацию Firebase:
VITE_FIREBASE_API_KEY=your_api_key
VITE_FIREBASE_AUTH_DOMAIN=your_auth_domain
VITE_FIREBASE_DATABASE_URL=your_database_url
VITE_FIREBASE_PROJECT_ID=your_project_id
VITE_FIREBASE_STORAGE_BUCKET=your_storage_bucket
VITE_FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id
VITE_FIREBASE_APP_ID=your_app_idnpm run devПриложение будет доступно по адресу http://localhost:3000
npm run buildnpm run previewПоиск по комнатам и сообщениям реализован на стороне клиента с использованием гибридного алгоритма:
-
Точный поиск подстроки (без учета регистра)
- Используется
String.includes()для проверки точного вхождения подстроки
- Используется
-
Нечеткое сравнение строк на основе расстояния Левенштейна
- Применяется, если точное вхождение не найдено
- Позволяет находить результаты даже при опечатках
- Обычный пользователь: может удалять только свои сообщения
- Владелец комнаты: может удалять любые сообщения в своей комнате
app/
├── src/
│ ├── components/ # React компоненты
│ │ ├── Chat.jsx # Компонент чата
│ │ ├── Login.jsx # Компонент входа
│ │ ├── Register.jsx # Компонент регистрации
│ │ └── UI/ # UI компоненты
│ ├── store/ # Redux store и слайсы
│ ├── utils/ # Утилиты (поиск, clipboard)
│ ├── firebase.js # Конфигурация Firebase
│ └── styles/ # Стили приложения
├── package.json
└── vite.config.js
main- основная веткаsearch- разработка поискаauth- разработка авторизацииtop-tabs- альтернативная версия дизайна списка комнатbuild- коммиты, относящиеся к сборке проекта
Проект разработан в учебных целях.
Tatyana Mosolova
Репозиторий: https://github.com/Luca324/FLocky