JavaCourses es una plataforma educativa de acceso controlado diseñada para programas de mentoría profesional. Permite a los mentores gestionar contenido exclusivo, realizar seguimiento del progreso de los alumnos y fomentar la comunidad en un entorno privado.
Este proyecto es una demostración de arquitectura frontend de alto nivel:
- Arquitectura FSD (Feature-Sliced Design): Organización modular para máxima escalabilidad y separación de intereses.
- Seguridad Multi-capa: Protección de datos mediante Middleware (Next.js), Route Handlers y Row Level Security (Supabase).
- Modo Demo (Sandbox): Sistema de protección que bloquea escrituras para usuarios invitados y reinicia el progreso automáticamente al iniciar sesión.
- Gestión Inteligente de Assets: Sincronización automática entre DB y Storage para evitar archivos huérfanos al editar o borrar cursos.
- Frontend: Next.js 16+ (App Router), React, TypeScript.
- Estado & Datos: Zustand (Estado Global), Supabase Client (SSR Friendly).
- Testing: Vitest (Unit Testing).
- Backend: Supabase (PostgreSQL, Auth, Storage).
- Styling: Tailwind CSS, shadcn/ui.
- Validación: Zod + React Hook Form.
- Visualizador Pro: Interfaz de clases sin distracciones.
- Progreso en tiempo real: Tracking visual de lecciones completadas.
- Comunidad: Foro interactivo por curso con sistema de hilos.
- Gestión de Catálogo: CRUD completo de cursos y lecciones con carga de imágenes.
- Limpieza de Assets: Sistema automático de borrado de imágenes huérfanas en Storage.
- Métricas de Alumnos: Visualización detallada del avance de cada emprendedor.
Para facilitar la evaluación del proyecto por parte de reclutadores, se implementó una cuenta de demostración (admin@demo.com) con las siguientes características:
- Interceptores de API: Bloqueo de peticiones
POST/PUT/DELETEen el servidor para evitar alteraciones en la base de datos pública. - Auto-Reset: Al detectar el inicio de sesión del usuario demo, un proceso de limpieza (Trigger o Hook) reinicia la tabla
user_progress. - UI Condicional: Los elementos administrativos muestran estados deshabilitados y Tooltips informativos para usuarios invitados.
-
Clonar el repo: git clone https://github.com/tu-usuario/javacourses.git cd javacourses
-
Instalar dependencias: npm install
-
Configurar variables de entorno: NEXT_PUBLIC_SUPABASE_URL=tu_url_supabase_aca NEXT_PUBLIC_SUPABASE_ANON_KEY=tu_anon_key_aca
-
Levantar el proyecto: npm run dev
-
Ejecutar Tests: npm run test
