Современное веб-приложение для общения в реальном времени
Возможности • Технологии • Установка • Использование • Вклад в проект
BitChat - это современное веб-приложение для обмена сообщениями в реальном времени, построенное на Ruby on Rails 8. Приложение предоставляет удобный интерфейс для общения, систему достижений, уровней и полнофункциональный поиск пользователей.
- 💬 Чат в реальном времени - мгновенный обмен сообщениями через WebSockets
- 🔍 Умный поиск пользователей - поиск по имени, фамилии и логину с задержкой в 1 секунду
- 👤 Профили пользователей - персонализированные страницы с аватарами
- 🏆 Система достижений - награды за активность в приложении
- 📈 Уровни и опыт - геймификация процесса общения
- 📱 Адаптивный дизайн - оптимизация для мобильных устройств и десктопов
- 🌐 Мультиязычность - поддержка русского и английского языков
- 🔐 Аутентификация через Devise
- 🛡️ Защита от DDoS с помощью Rack::Attack
- 🔒 CSRF защита
- ✅ Валидация email через valid_email2
- Ruby 3.3.6
- Rails 8.0.1
- PostgreSQL - основная база данных
- Redis - для ActionCable и кеширования
- Solid Queue - фоновые задачи
- Solid Cable - WebSocket соединения
- Solid Cache - кеширование
- Hotwire (Turbo + Stimulus) - интерактивность без написания много JavaScript
- Tailwind CSS - современная утилитарная CSS библиотека
- ViewComponent - компонентный подход к представлениям
- RSpec - тестирование
- FactoryBot - фабрики для тестов
- Faker - генерация тестовых данных
- RuboCop - линтер кода (rubocop-rails-omakase)
- Kamal - деплой в production
- Docker - контейнеризация
- Ruby 3.3.6 или выше
- PostgreSQL 14 или выше
- Redis 6 или выше
- Node.js 18 или выше (для Tailwind CSS)
- Yarn или npm
git clone https://github.com/jonny-faringheit/chat_app.git
cd chat_app
# Установка Ruby gems
bundle install
# Установка JavaScript пакетов
yarn install
# Создание базы данных
bin/rails db:create
# Выполнение миграций
bin/rails db:migrate
# Заполнение тестовыми данными (опционально)
bin/rails db:seed
Создайте файл .env
в корне проекта или используйте Rails credentials:
# Редактирование credentials
bin/rails credentials:edit
# Запуск с Tailwind CSS watcher
bin/dev
# Или только Rails сервер
bin/rails server
Приложение будет доступно по адресу: http://localhost:3000
- Перейдите на страницу регистрации
/users/signup
- Заполните форму регистрации
- Подтвердите email (в development режиме письма можно увидеть в логах)
- Используйте поле поиска в шапке сайта
- Начните вводить имя, фамилию или логин
- Результаты появятся автоматически через 1 секунду
- Найдите пользователя через поиск
- Перейдите в его профиль
- Начните диалог
- Получайте достижения за различные действия
- Просматривайте свой прогресс в разделе "Достижения"
- Повышайте уровень за активность
# Запуск всех тестов
bundle exec rspec
# Запуск конкретного файла
bundle exec rspec spec/models/user_spec.rb
# Запуск с покрытием кода
COVERAGE=true bundle exec rspec
# Проверка кода
bundle exec rubocop
# Автоисправление
bundle exec rubocop -a
# Откат миграции
bin/rails db:rollback
# Пересоздание базы данных
bin/rails db:drop db:create db:migrate
# Rails консоль
bin/rails console
# Песочница (изменения не сохраняются)
bin/rails console --sandbox
Проект настроен для деплоя с помощью Kamal:
# Первый деплой
kamal setup
# Последующие деплои
kamal deploy
- Fork репозитория
- Создайте feature branch (
git checkout -b feature/amazing-feature
) - Commit изменения (
git commit -m 'Add some amazing feature'
) - Push в branch (
git push origin feature/amazing-feature
) - Откройте Pull Request
- Следуйте Ruby Style Guide
- Пишите тесты для новой функциональности
- Обновляйте документацию при необходимости
- Убедитесь, что все тесты проходят
Этот проект лицензирован под MIT License - смотрите файл LICENSE для деталей.
- Jonny Faringheit - Основная работа - YourGitHub
- Ruby on Rails сообществу
- Всем контрибьюторам проекта
- Открытым библиотекам, использованным в проекте
Сделано с ❤️ используя Ruby on Rails