INGENIERÍA / SISTEMAS Y DECISIONES2026 / B4LLA

Lo que ocurre
detrás.

Dos casos principales sobre edición visual e integración de datos. Un tercero, más acotado, muestra la separación entre cifrado y autorización.

Explorar los casos ↘
01 / FRAME · EDITOR VISUALEDITOR · DOCUMENTO · EXPORTACIÓN

Un mismo documento, tres representaciones.

Frame conecta un árbol de componentes editable, su representación visual y el código exportado. Los cambios en una de estas capas no deberían alterar el resultado en las otras.

  1. 01

    Documento editable

    Árbol de nodos y propiedades que definen los componentes y su composición.

  2. 02

    Canvas y responsive

    Interacción, medidas y vistas que representan el estado editable.

  3. 03

    Generación de código

    Convertir el documento en una página exportable y contrastarla con el canvas.

El problema
Al redimensionar elementos o moverlos entre contenedores pueden aparecer desplazamientos y cambios de tamaño inesperados. El canvas y el código exportado también pueden interpretar un mismo diseño de forma diferente.
El enfoque
Separar el estado y la estructura de nodos del documento de su representación en el canvas y de su transformación a código. Revisar tamaños, posiciones y comportamiento responsive en ambas salidas.
Implementación abordada
El editor ya conecta la manipulación de nodos, las vistas responsive y la generación de páginas exportables. Verifico la equivalencia entre el documento, el canvas y el resultado generado.

La implementación de Frame es privada; la exposición técnica se centra en el modelo de documento, las transformaciones y la fidelidad entre representaciones.

Frame · fragmento del renderizador y sus propiedades responsive.TSX
export function DemoBlockRenderer({
  block,
  selectedId,
  onSelect,
  assetUrls = {},
  editorInteraction,
}: {
  block: DemoBlock;
  selectedId?: string;
  onSelect?: (blockId: string) => void;
  assetUrls?: Record<string, string>;
  editorInteraction?: DemoEditorInteraction;
}) {
  const base = block.style;

  const tablet = {
    ...base,
    padding: Math.min(base.padding, 36),
    gridColumns: Math.min(base.gridColumns, 2),
    ...block.responsive.tablet,
  };

  const mobile = {
    ...tablet,
    padding: Math.min(tablet.padding, 24),
    gridColumns: 1,
    ...block.responsive.mobile,
  };

  const automaticText = automaticTextStyle(block);
  const childLayoutDisplay = block.type === "Grid" ? "grid" : "flex";

  const style = {
    ...responsiveVariables("base", base, automaticText, childLayoutDisplay),
    ...responsiveVariables("tablet", tablet, automaticText, childLayoutDisplay),
    ...responsiveVariables("mobile", mobile, automaticText, childLayoutDisplay),
  } as CSSProperties;
02 / EUFUNDING · DATOS Y APLICACIÓN WEBAPI EUROPEA · EXPRESS · POSTGRESQL

De una fuente de datos externa a una herramienta de consulta.

El panel reúne convocatorias de financiación europea y permite examinarlas, filtrarlas y exportar resultados.

  1. 01

    API externa

    Consultar convocatorias de financiación europea.

  2. 02

    Tratamiento de datos

    Normalizar y categorizar los campos relevantes.

  3. 03

    Exploración

    Facilitar búsqueda, filtros, exportación y persistencia selectiva.

El problema
Una fuente externa puede ofrecer información abundante y heterogénea. Para que sirva en una aplicación hay que consultar los datos, normalizarlos, presentar campos coherentes y proporcionar formas de encontrar registros relevantes.
El enfoque
Resolver la consulta en una API Node/Express y presentar los resultados en una interfaz con búsqueda, filtros y paginación. Complementar el flujo con persistencia PostgreSQL para empresas y niveles de interés.
Implementación abordada
La aplicación integra una API externa de convocatorias, ofrece filtros y exportación CSV/Excel e incorpora persistencia para empresas e intereses. Enlaces al código público disponibles a continuación.

Código público: las rutas de consulta, interfaz y persistencia pueden contrastarse en los archivos enlazados. La clasificación se basa en reglas, no en un modelo de IA.

03 / SECURENOTES · API Y SEGURIDADVUE · EXPRESS · POSTGRESQL

Cifrar información no sustituye autorizar su acceso.

Una aplicación de notas necesita distinguir entre proteger contenido y restringir qué registros puede consultar cada usuario.

  1. 01

    Cliente

    Cifrar el contenido de la nota en el navegador.

  2. 02

    Autenticación API

    Identificar al usuario y delimitar sus operaciones.

  3. 03

    PostgreSQL

    Consultar registros limitados al usuario correspondiente.

El problema
El cifrado y la autorización actúan en capas diferentes. El contenido podría estar cifrado y aun así existir un fallo de acceso a los registros de otro usuario.
El enfoque
Mantener el cifrado del contenido en el cliente y asociar las consultas de la API al usuario autenticado.
Implementación abordada
Las operaciones de lectura, actualización y borrado utilizan el identificador del usuario para limitar los registros relevantes.

Caso más pequeño: repositorio público con rutas de notas y lógica de cifrado en cliente. Es una implementación de aprendizaje, no una auditoría de seguridad.

04 / Contacto

Podemos hablar de software, datos e ideas.

Si mi perfil encaja con un proyecto o quieres conocer mejor alguna de las decisiones detrás de mi trabajo, puedes escribirme o consultar mis repositorios públicos.