Núcleo del Framework (Core Engine)

Este directorio alberga los módulos lógicos principales de BaP Framework, actuando como el motor que orquesta el enrutamiento, la autenticación, la internacionalización, la persistencia criptográfica y la telemetría.

Módulos del Core (Directorio ./src/_main/)

Cada archivo actúa como un módulo JS especializado para la orquestación e inyección del framework:

MóduloDescripción TécnicaSinergias Clave
constants.jsResuelve ENV_URL dinámicamente según el hostname (evita colisión de puertos en macOS). Almacena versiones y configuraciones.Alimenta a todos los módulos con variables inicializadas y credenciales de entorno inyectadas por Gulp.
firebaseInit.jsGateway único de inicialización para Firebase App, Auth, Database y Analytics. Evita la múltiple instanciación.Provee los recursos base requeridos por los adaptadores de seguridad y analíticas.
auth.jsGestiona el inicio/cierre de sesión (Google Provider) y realiza validación asíncrona contra la whitelist en Realtime Database.Proporciona el estado del usuario al enrutador para autorizar rutas privadas.
routerPaths.jsDiccionario de declaración de rutas válidas de la aplicación, asociando URLs con componentes de página.Estructura el mapa que procesará el motor del enrutador.
router.jsEnrutador SPA que navega sin recarga de página. Crea componentes programáticamente (document.createElement) mitigando XSS reflejado de URLs.Orquesta la UI evaluando la seguridad en combinación con auth.js.
storage.jsCapa de persistencia. Expone métodos asíncronos que cifran datos locales usando AES-GCM de 256 bits y derivación PBKDF2 (100,000 iteraciones y salt) enlazados al uid del usuario.Garantiza la persistencia segura de tokens y datos sensibles del cliente.
i18n.jsMotor de internacionalización. Recorre el DOM de forma segura con un TreeWalker nativo traduciendo solo nodos de texto. Incluye sanitizeHTML() con protección DOMPurify.Traduce la UI en tiempo de ejecución leyendo diccionarios asíncronos.
analytics.jsMódulo unificado de telemetría. Centraliza el log de navegación, aperturas de modales, clics y errores 404.Envía datos de uso a Firebase Analytics.
util.jsCaja de herramientas (generación de UUIDs criptográficos fuertes con la Web Crypto API, validaciones, etc.).Provee utilidades comunes a componentes y páginas.

Internacionalización y Diccionarios

La carpeta ./src/_main/i18n/ contiene los archivos de traducción. Las subpáginas o componentes pueden obtener las claves asíncronas llamando a getI18nContent(). La estructura del diccionario base se puede consultar en ./src/_main/i18n/es-ES.js.

🔒 Regla de Bypass Local (Bypass de Seguridad): Si CONSTANT.FIREBASE_AVAILABLE es false en tu archivo de entorno local .env, el enrutador omitirá todas las validaciones de listas blancas e inicio de sesión para agilizar el desarrollo de vistas locales.

Para que este bypass no llegue accidentalmente a producción, existen dos controles: la validación de compilación (que aborta el build si hay credenciales pero FIREBASE_AVAILABLE no es "true") y la autodetección de hostname (que habilita Firebase automáticamente en un host público con credenciales). El bypass solo persiste en desarrollo local o en modo sitio estático sin Firebase.

Seguridad: Reglas recomendadas para Realtime Database

La validación de whitelist y los guards de ruta se ejecutan en el cliente, por lo que son una capa de UX y no constituyen la frontera de seguridad real. La autorización efectiva depende de las Reglas de Seguridad de Firebase que configures en tu propio proyecto. BaP nunca despliega ni sobrescribe las reglas de tu proyecto.

⚠️ Plantilla recomendativa (no se despliega automáticamente): Es una base deny-by-default de referencia. Adáptala a tu modelo de datos y publícala tú mismo en la consola de Firebase. La seguridad de tus datos depende de estas reglas, no de la validación client-side.
{
  "rules": {
    ".read": false,
    ".write": false,
    "allowed_users": {
      "$userKey": {
        ".read": "auth != null",
        ".write": false
      }
    }
  }
}
🎯 Alcance: prototipos y MVP BaP Framework está diseñado para prototipos y MVP, no como una solución de seguridad definitiva. El bypass afecta la navegación de vistas, no el acceso a datos (protegido por las Reglas de Seguridad). Quien lo lleve a producción asume el riesgo y es responsable de endurecer su propia infraestructura (Firebase Auth, App Check y Reglas de Seguridad).