Plataforma de clases en vivo con Google Meet - Conecta con tus estudiantes de forma profesional y segura.
Tu Profe Online es una plataforma web moderna diseñada para facilitar la gestión y realización de clases en vivo utilizando Google Meet. Permite a profesores y estudiantes conectarse de manera segura, programar clases, y gestionar sesiones educativas con una interfaz intuitiva y profesional.
- 🔐 Autenticación Segura: Login con Google OAuth 2.0 y sistema de registro tradicional
- 📅 Gestión de Clases: Crea, programa y administra clases en vivo
- 🎥 Integración con Google Meet: Genera y accede a enlaces de videollamadas automáticamente
- 👥 Roles de Usuario: Sistema diferenciado para profesores y estudiantes
- 📊 Dashboard Intuitivo: Panel de control con vista de clases programadas y próximas
- 🎨 Diseño Moderno: Interfaz responsive con animaciones fluidas
- 🔔 Notificaciones: Sistema de alertas para clases próximas
- 🌐 Multiidioma: Soporte para español (expandible a otros idiomas)
- React 19 - Biblioteca de UI
- TypeScript - Tipado estático
- Vite - Build tool y dev server
- Tailwind CSS 4 - Framework de estilos
- Framer Motion - Animaciones
- React Router DOM - Navegación
- Axios - Cliente HTTP
- Lucide React - Iconos
- Google OAuth - Autenticación
- Node.js - Runtime de JavaScript
- Express 5 - Framework web
- Prisma - ORM para base de datos
- PostgreSQL/SQLite - Base de datos
- JWT - Autenticación basada en tokens
- bcryptjs - Encriptación de contraseñas
- Google Auth Library - Verificación de tokens de Google
- Helmet - Seguridad HTTP
- CORS - Control de acceso
- Express Rate Limit - Limitación de peticiones
- Winston - Logging
- ESLint - Linter de código
- Jest - Testing
- Cypress - Testing E2E
- Vercel - Deployment (frontend)
- GitHub Actions - CI/CD
- Node.js 18+ y npm
- Git
- Cuenta de Google Cloud Platform (para OAuth)
- PostgreSQL (opcional, puede usar SQLite para desarrollo)
git clone https://github.com/ExeDevCentral/TuProfeOnline.git
cd TuProfeOnlinenpm installcd server
npm install
cd ..VITE_API_URL=http://localhost:3000/api
VITE_GOOGLE_CLIENT_ID=tu_google_client_id_aqui# Database
DATABASE_URL="file:./prisma/dev.db"
# JWT
JWT_SECRET=tu_jwt_secret_super_seguro_aqui
# Google OAuth
GOOGLE_CLIENT_ID=tu_google_client_id_aqui
GOOGLE_CLIENT_SECRET=tu_google_client_secret_aqui
# Server
PORT=3000
NODE_ENV=development
# CORS
FRONTEND_URL=http://localhost:5173cd server
npx prisma generate
npx prisma migrate dev --name init
npx prisma db seed
cd ..Terminal 1 - Backend:
cd server
npm run devTerminal 2 - Frontend:
npm run devnpm startLa aplicación estará disponible en:
- Frontend: http://localhost:5173
- Backend: http://localhost:3000
- Ve a Google Cloud Console
- Crea un nuevo proyecto o selecciona uno existente
- Habilita la API de Google+ y Google Calendar
- Ve a "Credenciales" → "Crear credenciales" → "ID de cliente de OAuth 2.0"
- Configura la pantalla de consentimiento
- Agrega los orígenes autorizados:
http://localhost:5173(desarrollo)- Tu dominio de producción
- Agrega los URIs de redirección autorizados:
http://localhost:5173(desarrollo)- Tu dominio de producción
- Copia el Client ID y Client Secret a tus archivos
.env
- Registro/Login: Crea una cuenta o inicia sesión con Google
- Crear Clase: Desde el dashboard, haz clic en "Nueva Clase"
- Programar Sesión: Define título, descripción, fecha y hora
- Compartir Enlace: El sistema genera automáticamente un enlace de Google Meet
- Gestionar Estudiantes: Visualiza quiénes se han unido a tus clases
- Registro/Login: Crea una cuenta o inicia sesión con Google
- Explorar Clases: Navega por las clases disponibles
- Unirse a Clase: Inscríbete en las clases de tu interés
- Acceder a Sesiones: Únete a las videollamadas desde el dashboard
TuProfeOnline/
├── src/ # Frontend source
│ ├── components/ # Componentes React
│ │ ├── LoginModal.tsx
│ │ ├── RegisterModal.tsx
│ │ └── VideoBackground.tsx
│ ├── contexts/ # Contextos de React
│ │ └── AuthContext.tsx
│ ├── pages/ # Páginas principales
│ │ ├── LandingPage.tsx
│ │ └── Dashboard.tsx
│ ├── services/ # Servicios API
│ │ ├── api.ts
│ │ ├── authService.ts
│ │ └── classService.ts
│ ├── utils/ # Utilidades
│ │ └── googleApi.ts
│ ├── App.tsx # Componente principal
│ ├── main.tsx # Entry point
│ └── index.css # Estilos globales
├── server/ # Backend source
│ ├── prisma/ # Esquema y migraciones
│ │ └── schema.prisma
│ ├── src/
│ │ ├── config/ # Configuración
│ │ │ └── database.js
│ │ ├── middleware/ # Middlewares
│ │ │ └── auth.js
│ │ ├── routes/ # Rutas API
│ │ │ ├── auth.js
│ │ │ └── classes.js
│ │ ├── index.js # Server entry point
│ │ └── seed.js # Database seeding
│ └── package.json
├── public/ # Assets estáticos
├── docs/ # Documentación adicional
├── package.json # Dependencias frontend
├── vite.config.ts # Configuración Vite
├── tsconfig.json # Configuración TypeScript
└── README.md # Este archivo
| Método | Endpoint | Descripción |
|---|---|---|
| POST | /api/auth/register |
Registrar nuevo usuario |
| POST | /api/auth/login |
Iniciar sesión |
| POST | /api/auth/google |
Autenticación con Google |
| GET | /api/auth/me |
Obtener usuario actual |
| Método | Endpoint | Descripción |
|---|---|---|
| GET | /api/classes |
Listar todas las clases |
| POST | /api/classes |
Crear nueva clase |
| GET | /api/classes/:id |
Obtener clase específica |
| PUT | /api/classes/:id |
Actualizar clase |
| DELETE | /api/classes/:id |
Eliminar clase |
| POST | /api/classes/:id/join |
Unirse a una clase |
- Conecta tu repositorio a Vercel
- Configura las variables de entorno en Vercel
- Deploy automático en cada push a
main
- Configura las variables de entorno en tu plataforma
- Asegúrate de configurar PostgreSQL en producción
- Ejecuta las migraciones de Prisma
# Unit tests
npm test
# Watch mode
npm run test:watch
# E2E tests
npm run test:e2e
# E2E tests (interactive)
npm run test:e2e:openLas contribuciones son bienvenidas. Por favor:
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
Ver CONTRIBUTING.md para más detalles.
Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.
- ExeDevCentral - GitHub
- Google por las APIs de OAuth y Meet
- La comunidad de React y Node.js
- Todos los contribuidores del proyecto
Si tienes preguntas o necesitas ayuda:
- 📧 Email: [Agregar email de soporte]
- 🐛 Issues: GitHub Issues
- 📖 Documentación: Wiki del proyecto
¡Hecho con ❤️ para la educación online!