Skip to content

Inicio Rápido

Si acabas de llegar al proyecto, este documento te da el contexto mínimo para entender dónde estás parado y qué deberías leer primero.


Este es un proyecto maduro y en producción (1,330+ commits). No es un boilerplate ni un starter — es una aplicación real con usuarios reales. Eso significa:

  • Hay patrones establecidos. No inventes nuevos sin entender por qué existen los actuales.
  • Hay reglas estrictas. Pre-commit hooks que no te dejan commitear si violas las reglas. Lee la Guía del Desarrollador para conocerlas todas.
  • Hay una arquitectura multi-vertical. Las páginas no contienen lógica directa — delegan a layouts por vertical. Esto es intencional y fundamental.
  • Hay un sistema de servicios con fallback de idioma. No llamas a APIs directamente — usas useServices() que maneja traducciones, errores, y resolución por vertical.

Por dónde empezar (orden recomendado de lectura)

Section titled “Por dónde empezar (orden recomendado de lectura)”
  1. Guía del Desarrollador — Lee completo. Setup, reglas, comandos, y los 4 conceptos fundamentales que necesitas.

  2. Arquitectura General — Entiende el diagrama de capas y cómo fluyen los datos desde la UI hasta la API.

  3. Sistema Multi-Vertical — Comprende por qué las páginas son “thin” y cómo funciona chooseLayoutPage.

  4. Servicios — Cómo obtener datos del backend. Es lo que más vas a usar.

  5. Tutoriales — Cuando estés listo para crear algo nuevo, sigue los pasos guiados.


CapaTecnologíaRol
Meta-frameworkNuxt 4Routing, auto-imports, build, plugins
UI FrameworkVue 3 (Composition API)Reactividad, componentes, templates
TiposTypeScriptType safety en todo el proyecto
EstilosTailwind CSS + CSS variablesUtilidades + colores dinámicos por vertical
Componentes@alebat-education/ecom-componentsLibrería propia de UI (prefijo AE)
EstadoPinia7 stores: auth, user, language, categories, orders, video, addressSync
BackendStrapi 5 (headless CMS)Datos, contenido, autenticación
PagosStripeSuscripciones y compras one-time
DeployAWS S3 + CloudFrontCDN global, deploy automático al merge

Para una descripción completa de cada tecnología y por qué fue elegida, lee Tecnologías.


Usuario visita /courses
→ Nuxt resuelve la ruta a pages/courses/index.vue
→ La página llama chooseLayoutPage({ page: 'courses', commonLayout: false })
→ Resuelve a layouts/pages/inspiria/courses.vue
→ El layout usa useServices('getCourses') para obtener datos
→ useServices busca en visibleVertical.services.getCourses
→ Ejecuta la función con el idioma actual
→ useStrapiClient() hace la llamada HTTP al backend
→ Los datos vuelven, se aplica fallback i18n si hay campos vacíos
→ El template renderiza los datos con componentes AE

No necesitas memorizar esto ahora. Pero cuando algo no funcione como esperas, vuelve a este diagrama para entender en qué punto del flujo está el problema.


ProblemaCausa probableSolución
pnpm install falla en ecom-componentsNo tienes auth de GitHub para packages privadosConfigura token en ~/.npmrc con scope read:packages
Commit rechazado sin mensaje de error claroCommitLint: tu mensaje no sigue conventional commitsUsa formato tipo(scope): descripción
Componente AE* no se renderizaNo está en la versión instalada de ecom-componentsEjecuta pnpm update @alebat-education/ecom-components --latest
useServices('x') retorna nullEl servicio no está registrado en la verticalVerifica que está en constants/verticals/inspiria.ts
Página muestra en blancoEl layout no existe o el nombre no matcheaVerifica que chooseLayoutPage resuelve a un layout existente
Colores no cambianEstás usando un color hardcodeado en vez de variableUsa clases como bg-primary, text-graphite

Una vez que hayas leído la Guía del Desarrollador y tengas el entorno corriendo, empieza explorando el código. Un buen punto de entrada es abrir un layout de una página que ya existe (como layouts/pages/inspiria/courses.vue) y seguir el flujo de datos hacia abajo.