Plataforma educativa en línea con capacidades de videollamadas en tiempo real utilizando WebRTC.
Asegúrate de tener instalado lo siguiente:
- PHP >= 8.2
- Composer
- Node.js >= 18.x
- npm o yarn
- Go >= 1.21 (para el servidor WebRTC)
- MySQL u otro motor de base de datos compatible
- OpenSSL (para generar certificados HTTPS)
git clone <url-del-repositorio>
cd Proyectocomposer installCopia el archivo de ejemplo .env.example y renómbralo a .env:
cp .env.example .envConfigura las variables de entorno en el archivo .env, especialmente:
- La configuración de la base de datos (
DB_*) - La URL de la aplicación (
APP_URL)
php artisan key:generatephp artisan migrateSi deseas poblar la base de datos con datos de prueba:
php artisan db:seednpm installEl servidor WebRTC requiere certificados SSL para funcionar. Crea un directorio para los certificados y genera un certificado autofirmado:
mkdir -p ~/certs
openssl req -x509 -newkey rsa:4096 -keyout ~/certs/localhost.key -out ~/certs/localhost.crt -days 365 -nodesDurante la generación, puedes dejar los campos en blanco o completarlos según prefieras. Lo importante es tener los archivos localhost.key y localhost.crt en ~/certs/.
cd app/WebRTC
go build -o webrtc-sfu
cd ../..Tienes dos opciones para ejecutar la aplicación en modo desarrollo:
composer run devEste comando ejecuta automáticamente:
- Servidor Laravel (
php artisan serve) - Sistema de colas (
php artisan queue:listen) - Logs en tiempo real (
php artisan pail) - Servidor Vite para el frontend (
npm run dev)
Importante: Este comando NO incluye el servidor WebRTC. Debes ejecutarlo por separado:
npm run webrtcEn terminales separadas, ejecuta:
Terminal 1 - Backend Laravel:
php artisan serveTerminal 2 - Frontend (Vite):
npm run devTerminal 3 - Servidor WebRTC:
npm run webrtcnpm run buildEste comando compila los assets de React/TypeScript optimizados para producción.
php artisan serve --host=0.0.0.0 --port=8000O configura un servidor web como Nginx o Apache para servir la aplicación.
npm run webrtcO ejecuta directamente el binario compilado:
cd app/WebRTC
CERT_FILE=~/certs/localhost.crt KEY_FILE=~/certs/localhost.key ./webrtc-sfu├── app/ # Código PHP (Laravel)
│ ├── Http/ # Controladores y middleware
│ ├── Models/ # Modelos Eloquent
│ └── WebRTC/ # Servidor WebRTC (Go)
├── database/
│ ├── migrations/ # Migraciones de base de datos
│ └── seeders/ # Seeders
├── resources/
│ ├── js/ # Frontend (React + TypeScript)
│ └── views/ # Vistas Blade
├── routes/ # Rutas de la aplicación
└── public/ # Assets públicos
- Backend: Laravel 12, PHP 8.2
- Frontend: React 19, TypeScript, Vite, Redux Toolkit
- WebRTC: Go, Pion WebRTC
- Estilos: SCSS, Framer Motion
- Base de datos: MySQL
- El servidor WebRTC escucha en el puerto 8080 por defecto
- El backend de Laravel escucha en el puerto 8000 por defecto
- El servidor Vite (desarrollo) escucha en el puerto 5173 por defecto
- Los certificados HTTPS son necesarios para que WebRTC funcione correctamente en navegadores modernos