Open source chat is a real-time open-source messenger with a single global chat room where all users communicate together. No private messages, no separate channels - just one shared space for everyone to connect and chat in real-time.
- 🌍 Single global chat room for all users
- 🚀 Real-time messaging with Laravel Reverb
- 💨 Modern and responsive UI built with Tailwind CSS
- 🔐 Secure authentication system
- 📱 Mobile-friendly design
- ⚡ Fast WebSocket connections
- 👥 See all active users in one place
- 🎨 Clean and intuitive interface
- Backend: Laravel 12
- Frontend: Alpine.js, Tailwind CSS
- Real-time: Laravel Reverb, Pusher Protocol
- Build Tool: Vite
- Database: MySQL
Before you begin, ensure you have the following installed on your system:
- PHP 8.2 or higher
- Composer
- Node.js 18.x or higher
- npm or yarn
- MySQL 8.0 or higher
- Git
git clone https://github.com/Rostyslawn/opensourcechat.git
cd openchatCopy the example environment file and configure it:
cp .env.example .envEdit .env file and configure your database:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=openchat
DB_USERNAME=root
DB_PASSWORD=your_passwordCreate a MySQL database named openchat:
CREATE DATABASE openchat CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;Run the complete installation and setup:
npm run start-projectThis command will:
- Install PHP dependencies via Composer
- Install Node.js dependencies via npm
- Install and configure Laravel Reverb
- Create storage symbolic link
- Generate application key
- Run database migrations and seeders
Start all services (Laravel server, Reverb WebSocket server, and Vite dev server):
npm run startThe application will be available at:
- Application: http://localhost:8000
- WebSocket Server: http://localhost:8080
- Vite Dev Server: http://localhost:5173
Default Admin Account:
- Name: Admin
- Password: Strongpassword228
OpenChat uses a unique invitation key system for user registration:
- Log in with the admin account
- Go to your profile page
- Generate a unique registration key
- Share this key with users who want to register
- Users will need this key to complete their registration
Important: Each registration key is single-use only. Once a user successfully registers with a key, it will be automatically deleted and cannot be reused. Generate a new key for each new user.
# Start all services in development mode
npm run start
# Start only the Laravel server
npm run serve
# Start only the Reverb WebSocket server
npm run reverb:start
# Start only the Vite dev server
npm run dev# Install backend dependencies
npm run install:backend
# Install frontend dependencies
npm run install:frontend
# Install Laravel Reverb
npm run reverb:install
# Create storage symbolic link
npm run storage:link
# Setup Laravel (generate key, migrate database)
npm run laravel:setup
# Complete project setup (all installation steps)
npm run start-project# Build for production and start servers
npm run prod
# Build assets only
npm run buildIf you prefer to install step by step:
composer installnpm installphp artisan key:generatephp artisan reverb:installphp artisan storage:linkphp artisan migrate:fresh --seedOpen three terminal windows and run:
Terminal 1 - Laravel Server:
php artisan serveTerminal 2 - Reverb WebSocket Server:
php artisan reverb:startTerminal 3 - Vite Dev Server:
npm run devMake sure your .env file contains Reverb configuration:
BROADCAST_CONNECTION=reverb
REVERB_APP_ID=your-app-id
REVERB_APP_KEY=your-app-key
REVERB_APP_SECRET=your-app-secret
REVERB_HOST=localhost
REVERB_PORT=8080
REVERB_SCHEME=httpThen clear config cache:
php artisan config:clear- Check if
APP_KEYis generated in.env - Ensure storage and cache directories are writable:
# Windows (PowerShell)
icacls storage /grant "Users:(OI)(CI)F" /T
icacls bootstrap\cache /grant "Users:(OI)(CI)F" /T
# Linux/Mac
chmod -R 775 storage bootstrap/cache- Clear all caches:
php artisan config:clear
php artisan cache:clear
php artisan route:clear
php artisan view:clearThis error occurs when the symbolic link between public/storage and storage/app/public is missing. Files uploaded to storage cannot be accessed publicly without this link.
Solution:
Create the storage symbolic link:
npm run storage:linkOr manually:
php artisan storage:linkFor Windows users: If the command fails, run Command Prompt as Administrator and execute:
cd path\to\your\project
mklink /D public\storage ..\storage\app\publicAfter creating the link, verify it exists:
- Check that
public/storagedirectory/link exists - Uploaded files should now be accessible at
http://localhost:8000/storage/uploads/...
Verify your database credentials in .env and ensure MySQL is running:
php artisan migrate:statusopenchat/
├── app/ # Application core files
├── bootstrap/ # Bootstrap files
├── config/ # Configuration files
├── database/ # Migrations, seeders, factories
├── public/ # Public assets
│ └── storage/ # Symbolic link to storage/app/public
├── resources/ # Views, CSS, JS
│ ├── css/ # Stylesheets
│ ├── js/ # JavaScript files
│ └── views/ # Blade templates
├── routes/ # Route definitions
├── storage/ # Logs, cache, uploads
│ └── app/
│ └── public/ # Publicly accessible files
│ └── uploads/ # User uploaded files
├── tests/ # Test files
├── vendor/ # Composer dependencies
├── .env # Environment configuration
├── composer.json # PHP dependencies
├── package.json # Node.js dependencies
├── vite.config.js # Vite configuration
└── tailwind.config.js # Tailwind CSS configuration
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is open-source and available under the MIT License.
- Rostyslav - GitHub
- Laravel Framework
- Laravel Reverb
- Tailwind CSS
- Alpine.js
- All contributors who help improve this project
If you encounter any issues or have questions:
- Open an issue on GitHub
- Check existing issues for solutions
- Read the Laravel documentation: https://laravel.com/docs
Made with ❤️ by Rostyslav
Open source chat — это real-time мессенджер с открытым исходным кодом, построенный на Laravel с одним глобальным чатом, где все пользователи общаются вместе. Никаких личных сообщений, никаких отдельных каналов — только одно общее пространство для всех.
- 🌍 Единый глобальный чат для всех пользователей
- 🚀 Обмен сообщениями в режиме реального времени через Laravel Reverb
- 💨 Современный и адаптивный интерфейс на Tailwind CSS
- 🔐 Безопасная система аутентификации
- 📱 Мобильная версия
- ⚡ Быстрое WebSocket соединение
- 👥 Все активные пользователи в одном месте
- 🎨 Чистый и интуитивный интерфейс
- Backend: Laravel 12
- Frontend: Alpine.js, Tailwind CSS
- Real-time: Laravel Reverb, Pusher Protocol
- Сборщик: Vite
- База данных: MySQL
Перед началом убедитесь, что у вас установлено:
- PHP 8.2 или выше
- Composer
- Node.js 18.x или выше
- npm или yarn
- MySQL 8.0 или выше
- Git
git clone https://github.com/Rostyslawn/opensourcechat.git
cd openchatСкопируйте файл примера окружения и настройте его:
cp .env.example .envОтредактируйте файл .env и настройте базу данных:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=openchat
DB_USERNAME=root
DB_PASSWORD=ваш_парольСоздайте MySQL базу данных с именем openchat:
CREATE DATABASE openchat CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;Запустите полную установку и настройку одной командой:
npm run start-projectЭта команда выполнит:
- Установку PHP зависимостей через Composer
- Установку Node.js зависимостей через npm
- Установку и настройку Laravel Reverb
- Создание символической ссылки для storage
- Генерацию ключа приложения
- Запуск миграций базы данных и сидеров
Запустите все сервисы (Laravel сервер, Reverb WebSocket сервер и Vite dev сервер):
npm run startПриложение будет доступно по адресам:
- Приложение: http://localhost:8000
- WebSocket сервер: http://localhost:8080
- Vite dev сервер: http://localhost:5173
Аккаунт администратора по умолчанию:
- Name: Admin
- Пароль: Strongpassword228
OpenChat использует систему уникальных ключей приглашения для регистрации пользователей:
- Войдите под учетной записью администратора
- Перейдите на страницу профиля
- Сгенерируйте уникальный ключ регистрации
- Поделитесь этим ключом с пользователями, которые хотят зарегистрироваться
- Пользователям понадобится этот ключ для завершения регистрации
Важно: Каждый ключ регистрации одноразовый. После успешной регистрации пользователя ключ автоматически удаляется и не может быть использован повторно. Генерируйте новый ключ для каждого нового пользователя.
# Запустить все сервисы в режиме разработки
npm run start
# Запустить только Laravel сервер
npm run serve
# Запустить только Reverb WebSocket сервер
npm run reverb:start
# Запустить только Vite dev сервер
npm run dev# Установить backend зависимости
npm run install:backend
# Установить frontend зависимости
npm run install:frontend
# Установить Laravel Reverb
npm run reverb:install
# Создать символическую ссылку storage
npm run storage:link
# Настроить Laravel (сгенерировать ключ, мигрировать БД)
npm run laravel:setup
# Полная настройка проекта (все шаги установки)
npm run start-project# Собрать для продакшна и запустить сервера
npm run prod
# Только собрать ассеты
npm run buildЕсли вы предпочитаете установку по шагам:
composer installnpm installphp artisan key:generatephp artisan reverb:installphp artisan storage:linkphp artisan migrate:fresh --seedОткройте три терминала и выполните:
Терминал 1 - Laravel сервер:
php artisan serveТерминал 2 - Reverb WebSocket сервер:
php artisan reverb:startТерминал 3 - Vite dev сервер:
npm run devУбедитесь, что ваш файл .env содержит конфигурацию Reverb:
BROADCAST_CONNECTION=reverb
REVERB_APP_ID=your-app-id
REVERB_APP_KEY=your-app-key
REVERB_APP_SECRET=your-app-secret
REVERB_HOST=localhost
REVERB_PORT=8080
REVERB_SCHEME=httpЗатем очистите кэш конфигурации:
php artisan config:clear- Проверьте, что
APP_KEYсгенерирован в.env - Убедитесь, что директории storage и cache доступны для записи:
# Windows (PowerShell)
icacls storage /grant "Users:(OI)(CI)F" /T
icacls bootstrap\cache /grant "Users:(OI)(CI)F" /T
# Linux/Mac
chmod -R 775 storage bootstrap/cache- Очистите все кэши:
php artisan config:clear
php artisan cache:clear
php artisan route:clear
php artisan view:clearЭта ошибка возникает, когда символическая ссылка между public/storage и storage/app/public отсутствует. Файлы, загруженные в storage, не могут быть доступны публично без этой ссылки.
Решение:
Создайте символическую ссылку storage:
npm run storage:linkИли вручную:
php artisan storage:linkДля пользователей Windows: Если команда не работает, запустите Командную строку от имени Администратора и выполните:
cd путь\к\вашему\проекту
mklink /D public\storage ..\storage\app\publicПосле создания ссылки проверьте, что она существует:
- Проверьте, что директория/ссылка
public/storageсуществует - Загруженные файлы теперь должны быть доступны по адресу
http://localhost:8000/storage/uploads/...
Проверьте учетные данные базы данных в .env и убедитесь, что MySQL запущен:
php artisan migrate:statusopenchat/
├── app/ # Основные файлы приложения
├── bootstrap/ # Bootstrap файлы
├── config/ # Конфигурационные файлы
├── database/ # Миграции, сидеры, фабрики
├── public/ # Публичные ассеты
│ └── storage/ # Символическая ссылка на storage/app/public
├── resources/ # Представления, CSS, JS
│ ├── css/ # Стили
│ ├── js/ # JavaScript файлы
│ └── views/ # Blade шаблоны
├── routes/ # Определения маршрутов
├── storage/ # Логи, кэш, загрузки
│ └── app/
│ └── public/ # Публично доступные файлы
│ └── uploads/ # Загруженные пользователями файлы
├── tests/ # Тесты
├── vendor/ # Composer зависимости
├── .env # Конфигурация окружения
├── composer.json # PHP зависимости
├── package.json # Node.js зависимости
├── vite.config.js # Конфигурация Vite
└── tailwind.config.js # Конфигурация Tailwind CSS
Мы приветствуем вклад в развитие проекта! Следуйте этим шагам:
- Сделайте форк репозитория
- Создайте ветку для новой функции (
git checkout -b feature/amazing-feature) - Закоммитьте изменения (
git commit -m 'Добавлена новая функция') - Запушьте в ветку (
git push origin feature/amazing-feature) - Откройте Pull Request
Этот проект имеет открытый исходный код и доступен под MIT License.
- Rostyslav - GitHub
- Laravel Framework
- Laravel Reverb
- Tailwind CSS
- Alpine.js
- Всем участникам, помогающим улучшать этот проект
Если у вас возникли проблемы или вопросы:
- Откройте issue на GitHub
- Проверьте существующие issues для поиска решений
- Прочитайте документацию Laravel: https://laravel.com/docs
Сделано с ❤️ Rostyslav