Skip to content

Visión General del Frontend

El frontend es una SPA React 19 en apps/web. Corre en el puerto 5173 en desarrollo (Vite HMR).

TecnologíaVersiónUso
React19Componentes y hooks
Vite6Build + HMR
TypeScript~5.6Tipos estrictos
MUI (Material UI)v7Componentes UI base
Tailwind CSSv4Utility classes y responsive
Redux ToolkitlatestEstado global
RTK QuerylatestData fetching + cache
React Router DOMv7Routing con loaders
FeatureRuta(s)GuardEstado
auth/login, /signup, /forgot-password— (public)
catalog/, /courses, /courses/:slug— / ProtectedRoute
player/learn/:pathSlug/:lessonSlugProtectedRoute + AccessGate
quiz/learn/:pathSlug/quizProtectedRoute + AccessGate
dashboard/dashboardProtectedRoute
certificates/certificates, /verify/:uuidProtectedRoute (verify: public)
onboarding/onboarding/fluency-testProtectedRoute
payments/pricing, /checkout— / ProtectedRoute
tutor/dashboard/tutorProtectedRoute
tutor-ia-panel/learn/:pathSlug/:lessonSlug (panel lateral)ProtectedRoute + AccessGate
corporate/corporate/*CorporateGuard
admin/admin/*AdminGuard
creator-studio/creator/*CreatorGuard

Cuatro portales independientes, cada uno con guard y layout propio:

PublicLayout ← Landing, catálogo, verify (sin auth)
AuthLayout ← Login, signup (canvas animation, sin sidebar)
AppLayout ← Estudiante autenticado — /dashboard, /learn/*
CreatorLayout ← Creator Studio — /creator/* (CONTENT_ADMIN+)
AdminLayout ← Panel admin — /admin/* (SUPER_ADMIN)
CorporateLayout ← Portal corporativo — /corporate/* (CORPORATE_ADMIN+)
ProtectedRoute → cualquier usuario autenticado
CreatorGuard → CONTENT_ADMIN | SUPER_ADMIN
AdminGuard → SUPER_ADMIN
CorporateGuard → CORPORATE_ADMIN | SUPER_ADMIN

Portal exclusivo para instructores aprobados (CONTENT_ADMIN):

RutaPáginaDescripción
/creatorCreatorPortalPageHub principal — accesos rápidos
/creator/pathsCreatorPathsPageMis cursos y paths publicados
/creator/studentsCreatorStudentsPageMis estudiantes y progreso
/creator/reviewsCreatorReviewsPageReseñas recibidas
/creator/badgesCreatorBadgesPageMis badges de instructor
/creator/guidelinesCreatorGuidelinesPageGuías de calidad y políticas
/creator/editor/paths/:idAdminPathEditorEditor de path
/creator/editor/modules/:idAdminModuleEditorEditor de módulo
/creator/editor/lessons/:idAdminLessonEditorEditor de lección
/creator/editor/quizzes/:idAdminQuizEditorEditor de quiz

El CreatorLayout incluye ProfileCard y UserMenu en el sidebar. Los editores de contenido viven en /creator/editor/*no en /admin/.

Sprint 6: Los editores de contenido migraron de /admin/editor/* a /creator/editor/*. Cualquier enlace antiguo a /admin/editor/ debe actualizarse.

Implementado en Sprint 7. Panel lateral de 380px accesible desde el player de lección:

CaracterísticaDetalle
TransporteSSE (Server-Sent Events) — streaming en tiempo real
Ancho del panel380px, colapsable
ContextoConsciente del path, módulo y lección activos
HistorialConversaciones persistidas por usuario
RatingEl usuario puede valorar cada respuesta del tutor
LímitesPor plan — FREE tiene cuota diaria reducida

El componente principal es TutorIAPanel en apps/web/src/components/tutor/. Se renderiza dentro de AppLayout solo en rutas /learn/* cuando el usuario tiene acceso.

El store está en apps/web/src/store/. Estructura:

store/
index.ts ← configureStore con todos los reducers
api/
baseApi.ts ← createApi con baseUrl y auth interceptor
adminApi.ts ← endpoints admin RTK Query
(otros endpoints por feature)
slices/
authSlice.ts ← user, token, isAuthenticated
uiSlice.ts ← modales, notificaciones, loading states

Tokens CSS en apps/web/src/styles/tokens.css:

--pr: #7C3AED; /* Violeta primario NappAI */
--pr2: #5B21B6; /* Hover */
--t1: #160D2E; /* Texto principal */
--t2: #6B6080; /* Texto secundario */
--bg: #FFFFFF; /* Fondo */
--bg2: #F8F7FF; /* Fondo suave */

Ver design system completo.