Skip to content

Tecnologías y Por Qué

Cada tecnología en este proyecto fue elegida por una razón específica. Aquí están todas con su justificación para que entiendas el porqué detrás de cada decisión.


Qué esMeta-framework de Vue que añade routing automático, auto-imports, y tooling integrado
Por quéFile-based routing elimina configuración manual. Auto-imports eliminan boilerplate. Build optimizado con Vite
ModoSPA (ssr: false) — no hay server-side rendering. Se despliega como archivos estáticos
VersiónNuxt 4.2.1 / Vue 3.5.25

Implicación práctica: Nunca necesitas import { ref, computed } from 'vue' — todo está auto-importado. Las rutas se crean poniendo archivos en pages/.


Qué esJavaScript con sistema de tipos estáticos
Por quéErrores en compilación (no en producción). Autocomplete inteligente. Refactoring seguro. Documentación implícita
ReglaProhibido any. Todo explícitamente tipado

Qué esGestor de estado oficial de Vue 3 (reemplazo de Vuex)
Por quéAPI Composition nativa. TypeScript first-class. DevTools integrados. Modular (un store por dominio)
Storesauth, user, language, categories, orders, video, addressSync

Qué esFramework CSS utility-first
Por quéDesarrollo rápido sin salir del template. Purging automático (bundle mínimo). CSS variables para theming dinámico por vertical
ConvenciónMobile-first. BEM para CSS custom. Colores vía variables, nunca hardcoded

Componentes: @alebat-education/ecom-components

Section titled “Componentes: @alebat-education/ecom-components”
Qué esLibrería de componentes propia (módulo Nuxt). Design system completo de Alebat Education
Por quéReutilización entre proyectos. Consistencia visual. Componentes complejos pre-construidos (navbar, cards, sliders, video player)
PrefixAE — todos los componentes se usan como <AENavbar />, <AEMainCard />, etc.
FuenteRepositorio privado GitHub (requiere auth)

Qué esHeadless CMS open-source con API REST automática
Por quéPanel de admin para editores de contenido. Localización nativa (multi-idioma). Relations complejas. Media library
IntegraciónVia @nuxtjs/strapi module + capa propia en services/

Qué esInternacionalización para Nuxt
Por quéRutas traducidas automáticamente. Lazy loading de traducciones. Detección de idioma
Idiomases (default, sin prefijo), en (prefijo /en/), pt-BR (prefijo /pt-BR/)
Estrategiaprefix_except_default

PlyrPlayer de video con UI personalizable
HLS.jsStreaming adaptativo (múltiples calidades, buffering inteligente)
JuntosPlyr da la interfaz; HLS.js maneja el streaming .m3u8 que sirve el CDN

Qué esLibrería de sliders/carruseles
Por quéPerformance nativa. Eventos táctiles. Lazy loading integrado
UsoComo Web Components: <swiper-container>, <swiper-slide> (registrados en vue.compilerOptions.isCustomElement)

Qué esFramework de testing compatible con Jest, powered by Vite
Por quéMismo bundler que el proyecto = ultra rápido. HMR en tests. API familiar

Qué esGestor de paquetes eficiente
Por qué2x más rápido que npm. Symlinks (ahorra disco). Lock file determinista
Confignode-linker=hoisted para máxima compatibilidad con Nuxt modules

HerramientaVerifica
ESLintErrores de lógica, imports no usados, reglas Vue, no any, no console.log
PrettierFormato consistente (comillas simples, sin semicolons, indent 2)
StylelintCSS válido, no !important, no px directo, BEM

Se ejecutan automáticamente en pre-commit via Husky + lint-staged.


PipelineGitHub Actions → pnpm generate → S3 sync → CloudFront cache invalidation
CDNCloudFront distribuye globalmente
Por qué SPANo necesita servidor. Barato. Rápido. Caché CDN agresivo

HerramientaPropósito
StripePagos únicos y suscripciones recurrentes
Zoho CRMTracking de leads, registros y eventos de usuario
ElevenLabsWidget de IA conversacional para soporte
Google AnalyticsTracking de uso y conversiones
Google Search ConsoleIndexación y SEO