SemiEdu es una innovadora aplicación web stateless que se conecta directamente con Google Classroom API. Ofrece información en tiempo real, detección automática de roles y comunicación simplificada para estudiantes, docentes y coordinadores sin necesidad de base de datos externa.
- Google OAuth 2.0: Autenticación segura con cuentas de Google
- Detección Automática de Roles: Sistema dual de roles (aplicación + Google Classroom)
- Sesiones JWT: Arquitectura stateless sin base de datos
- Middleware de Protección: Rutas protegidas automáticamente
- Cursos en Tiempo Real: Obtención directa de cursos activos
- Gestión de Estudiantes: Listado automático por curso
- Tareas y Asignaciones: Sincronización completa con Google Classroom
- Roles Dinámicos: Detección automática de profesores y estudiantes por curso
- Roles de Aplicación: Basados en patrones de email (estudiante, docente, coordinador)
- Roles de Google Classroom: Por curso específico (teacher, student)
- Detección Automática: Sin configuración manual requerida
- Permisos Granulares: Acceso basado en rol y contexto
SemiEdu/
├── src/
│ ├── app/
│ │ ├── api/
│ │ │ ├── auth/[...nextauth]/ # NextAuth endpoints
│ │ │ ├── classroom/
│ │ │ │ ├── courses/ # Cursos con roles
│ │ │ │ └── coursework/ # Tareas por curso
│ │ │ └── google-classroom/
│ │ │ └── student-data/ # Estudiantes por curso
│ │ ├── login/ # Página de autenticación
│ │ └── dashboard/ # Dashboards protegidos
│ ├── components/
│ │ ├── providers/ # NextAuth provider
│ │ └── ui/ # Componentes reutilizables
│ ├── lib/
│ │ ├── auth.ts # Configuración NextAuth
│ │ └── google-classroom.ts # Cliente Google Classroom API
│ └── types/
│ └── next-auth.d.ts # Tipos de NextAuth
├── middleware.ts # Protección de rutas
├── MIGRATION_GUIDE.md # Guía de migración
└── package.json # Dependencias con npm
- Node.js >= 18.0.0
- npm (se recomienda una versión reciente)
- Cuenta de Google Cloud (para Google Classroom API)
- Acceso a Google Classroom (como profesor o estudiante)
-
Crear proyecto en Google Cloud Console:
- Ve a Google Cloud Console
- Crea un nuevo proyecto o selecciona uno existente
- Habilita la Google Classroom API
-
Configurar OAuth 2.0:
- Ve a "Credenciales" → "Crear credenciales" → "ID de cliente OAuth 2.0"
- Tipo de aplicación: Aplicación web
- URIs de redirección autorizados:
http://localhost:3000/api/auth/callback/google(desarrollo)https://tu-dominio.com/api/auth/callback/google(producción)
-
Configurar variables de entorno:
# Copia el archivo de ejemplo cp .env.example .env.local # Edita .env.local con tus credenciales: NEXTAUTH_URL=http://localhost:3000 NEXTAUTH_SECRET=tu-secret-key-aqui GOOGLE_CLIENT_ID=tu-google-client-id GOOGLE_CLIENT_SECRET=tu-google-client-secret
-
Instalar dependencias
npm install
-
Ejecutar en modo desarrollo:
npm run dev
-
Otros comandos útiles:
npm run build # Construir para producción npm start # Iniciar servidor de producción npm run lint # Ejecutar linter npm run type-check # Verificar tipos TypeScript
-
Abrir en el navegador:
http://localhost:3000
La aplicación utiliza Google OAuth 2.0 para autenticación.
- Estudiantes: Cualquier cuenta de Google con acceso a Google Classroom
- Docentes: Cuentas con permisos de profesor en Google Classroom
- Coordinadores: Cuentas con emails que contengan "coordinador", "admin" o "director"
Los roles de la aplicación y de Google Classroom (teacher, student) se detectan y gestionan automáticamente.
- Integración con Google Classroom
- Autenticación NextAuth
- Arquitectura Stateless
- Detección de Roles
- Endpoints de API
- Protección de Rutas
- Entrega de Tareas por Estudiantes
- Sistema de Calificaciones
- Interfaz de Usuario del Dashboard
- Notificaciones en Tiempo Real
- Análisis Avanzado
- Soporte Multi-lenguaje
- Aplicación Móvil
- Documentación de API
Este proyecto sigue las mejores prácticas de desarrollo moderno con NextAuth, TypeScript y arquitectura serverless.
- Fork el repositorio
- 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
Proyecto educativo desarrollado para mejorar la experiencia de aprendizaje digital.