Skip to content

Masterofowls/simple-react-full-stack

Repository files navigation

💬 Chat Room — Realtime Chat Application

Maintainability Code Climate:

https://qlty.sh/gh/Masterofowls/projects/simple-react-full-stack

Описание

Полнофункциональное realtime чат-приложение, построенное на основе React + Node.js + Express + Socket.IO. Пользователи могут обмениваться текстовыми сообщениями, эмодзи, GIF-анимациями и изображениями в реальном времени. Поддерживаются ответы на сообщения, @упоминания с автодополнением, отображение количества пользователей онлайн, а также сохранение сессии между перезагрузками. Приложение оптимизировано для мобильных устройств и работает как PWA.

🔗 Деплой

👉 https://simple-react-full-stack.onrender.com

Ссылка работает в режиме инкогнито. При первом входе введите любое имя (1–20 символов) — регистрация и пароль не требуются.

📚 Источник проекта

Проект создан на основе туториала из каталога Project Based Learning — JavaScript:

✅ Что реализовано / доработано

Базовый шаблон содержал только заготовку React + Express + Webpack без какой-либо функциональности. Поверх него реализовано:

Фича Описание
Realtime чат Обмен сообщениями через Socket.IO с мгновенной доставкой
Имена пользователей Экран ввода имени, отображение автора у каждого сообщения
Emoji picker Встроенная панель выбора эмодзи с поиском по категориям
GIF search Поиск и отправка GIF через GIPHY API
Загрузка изображений Отправка фотографий (JPEG/PNG/GIF/WebP, до 5 МБ) через multer
Ответы на сообщения Reply-to с цитированием оригинала
@Упоминания Автодополнение @username с подсветкой в тексте
Индикатор набора «User is typing…» в реальном времени
Онлайн-счётчик Количество пользователей онлайн
Выход (Logout) Кнопка выхода с очисткой сессии
Сохранение сессии Имя сохраняется в localStorage — не нужно вводить заново после перезагрузки
PWA Service Worker, manifest.json, установка на главный экран
Mobile-first CSS Адаптивная вёрстка с 100dvh, safe-area insets, touch-friendly
SEO robots.txt, sitemap.xml, meta-теги

🎬 Демо

Demo

▶️ Смотреть полное видео (MP4)

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

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

Слой Технологии
Frontend React 16, Socket.IO Client, CSS (dark theme, responsive)
Backend Node.js, Express, Socket.IO, Multer
API GIPHY API (поиск GIF)
Сборка Webpack 4, Babel 7, css-loader, style-loader
Деплой Render (Web Service)
PWA Service Worker, Web App Manifest

🚀 Как запустить локально

# Клонировать репозиторий
git clone https://github.com/Masterofowls/simple-react-full-stack.git
cd simple-react-full-stack

# Установить зависимости
npm install

# Запуск в режиме разработки (frontend + backend)
npm run dev

# Или сборка и запуск продакшн-версии
npm run build
npm start

Приложение будет доступно на http://localhost:3000 (dev) или http://localhost:8080 (production).

🔑 Доступ / Аккаунты

Авторизация через логин/пароль отсутствует. Для входа в чат достаточно ввести любое отображаемое имя (от 1 до 20 символов). Регистрация не требуется — проверяющий может войти сразу.

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

src/
├── client/
│   ├── index.js          # Точка входа React + SW регистрация
│   ├── App.js            # Главный компонент чата
│   ├── EmojiPicker.js    # Компонент выбора эмодзи
│   ├── GifPicker.js      # Компонент поиска GIF
│   └── app.css           # Стили (dark theme, mobile-first)
└── server/
    └── index.js          # Express + Socket.IO сервер
public/
├── index.html            # HTML-шаблон
├── manifest.json         # PWA манифест
├── sw.js                 # Service Worker
├── robots.txt            # SEO
└── sitemap.xml           # Карта сайта

📝 Лицензия

MIT

About

Topics

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors