Веб-приложение для обмена сообщениями между пользователями GitHub, у которых есть хотя бы один общий приватный репозиторий. Поддерживаются личные и групповые чаты, формируемые автоматически на основе состава приватных репозиториев.
- Ruby on Rails (API + Web)
- PostgreSQL
- Hotwire (Turbo, Stimulus)
- Tailwind CSS
- OmniAuth GitHub OAuth
Для того чтобы аутентификация через GitHub работала, необходимо:
-
Зарегистрировать приложение на GitHub:
- Перейдите в GitHub Developer Settings
- Выберите "OAuth Apps" и нажмите "New OAuth App"
- Заполните необходимые поля:
- Application name: GitHub Chat
- Homepage URL: http://localhost:3000
- Application description: Чат для владельцев общих приватных репозиториев
- Authorization callback URL: http://localhost:3000/auth/github/callback
- Нажмите "Register application"
-
После регистрации вы получите Client ID и Client Secret. Эти данные нужно указать в переменных окружения:
export GITHUB_KEY=ваш_client_id export GITHUB_SECRET=ваш_client_secret
Или создайте файл
.envв корне проекта:GITHUB_KEY=ваш_client_id GITHUB_SECRET=ваш_client_secret -
Запустите сервер:
rails server
-
Откройте браузер и перейдите по адресу http://localhost:3000
-
Нажмите на кнопку "Войти через GitHub" и следуйте инструкциям для авторизации приложения
- Ruby 3.2+
- Rails 8.0+
- PostgreSQL 12+
- Redis (для Action Cable и Sidekiq)
- Установите Ruby 3.x и PostgreSQL.
- Клонируйте репозиторий:
git clone https://github.com/thinknetica/workshop_ruby_dev_with_ai.git cd workshop_ruby_dev_with_ai - Установите зависимости:
bundle install
- Создайте и настройте базу данных:
rails db:create rails db:migrate
- Запустите сервер:
bin/rails server
- Для запуска тестов используйте:
bin/rails test # или для RSpec (если настроен) bundle exec rspec
- Аутентификация через GitHub OAuth
- Автоматическое создание чатов по общим приватным репозиториям
- Личные и групповые чаты (до 50 участников)
- История сообщений, индикаторы непрочитанных, онлайн-статус
- Профили пользователей
- Mobile first, тёмная тема, поддержка RU/EN
- users (github_id, username, email, avatar_url, ...)
- repositories (github_repo_id, name, private)
- user_repositories (user_id, repository_id)
- chats (chat_type, repository_id)
- chat_users (chat_id, user_id, joined_at, left_at)
- messages (chat_id, user_id, content)
- unread_messages (user_id, chat_id, last_read_message_id)
Подробнее — см. spec.md
/auth/github— вход через GitHub/api/users— список пользователей/api/chats— список чатов/api/chats/:id/messages— сообщения чата/api/chats/:id/leave— выйти из группового чата
- Только OAuth GitHub
- Защита от XSS/CSRF
- Rails best practices
Для подробной спецификации и примеров интерфейса см. spec.md
