Volver al índice

Arquitectura y decisiones

Límites de la aplicación, flujos principales y motivos de las decisiones técnicas.

Límites claros y evolución incremental

Diagrama del flujo entre navegador, Nginx, Laravel y servicios de datos

Flujo de una petición

Nginx sirve los assets públicos y envía únicamente index.php a PHP-FPM. Laravel aplica idioma, política de indexación y analytics antes de invocar controladores ligeros. Repositorios y servicios aíslan contenidos, medios, documentación y agregaciones.

Decisiones principales

Renderizado en servidor como base

Blade produce contenido completo sin JavaScript. Las pestañas asíncronas, el audio y las demos son mejoras progresivas: un error del cliente no elimina contenido ni navegación esenciales.

Datos estructurados sin duplicación

Proyectos, competencias, intereses y CV permanecen en la base de datos. El contenido narrativo está versionado y las referencias se resuelven mediante slugs permitidos.

Operaciones reversibles

Las cargas y modificaciones utilizan transacciones. Los medios huérfanos pasan por cuarentena con manifiesto antes de borrarse. Los despliegues y migraciones incluyen smoke tests y rollback.

Privacidad y seguridad por defecto

Los analytics guardan agregados, no eventos personales. Las rutas admin utilizan roles y policies; los documentos públicos usan una allowlist y Markdown sin HTML sin procesar ni enlaces inseguros.

Ejemplo de la configuración aplicada por el renderer:

new Environment([
    'html_input' => 'strip',
    'allow_unsafe_links' => false,
]);

Consulta los Casos de estudio para ver estas decisiones aplicadas.