
Plataforma de E-Cards — Motor de Plantillas + Personalización por Lotes
Un proyecto demostrativo de LogicBison: un diseñador de tarjetas en el navegador que porta los comportamientos por lotes de InDesign, mapea archivos de contactos desordenados y exporta tarjetas personalizadas en lotes
Este es un proyecto demostrativo de LogicBison — no un despliegue para un cliente. Demuestra una clase de problema que todo equipo de operaciones reconoce: tarjetas corporativas diseñadas en Adobe InDesign, impulsadas por un script JSX que nombraba cada marco de texto, ajustaba la tipografía automáticamente y aplicaba colores de marca por palabra. El flujo funcionaba — hasta que la escala de lotes y las exportaciones desordenadas de RRHH convirtieron las herramientas de escritorio en el cuello de botella.
Las instancias públicas son un diseñador en Fabric.js que corre en el navegador y que puede ejercitarse de principio a fin: inicie sesión con la cuenta compartida de Tools Dashboard (la aplicación se lo indica), importe un archivo de contactos, mapee las columnas que el parser no reconoce, aplique una plantilla y exporte una tarjeta personalizada por registro. A partir de ahí todo permanece en su navegador: el aviso de la demo es literal, los datos se quedan en su navegador (localStorage / IndexedDB), nada se guarda en el servidor y el servidor de la demo rechaza escrituras. La demo gratuita limita cuántos registros puede llevar un lote, y por eso las cifras de abajo provienen de una corrida controlada y no de una prueba con un clic.
El repositorio también incluye una arquitectura completa del lado del servidor (parser de lotes en Python, worker de renderizado en cola, almacenamiento híbrido, OAuth a través del proveedor de identidad de Tools Dashboard) — construida como profundidad de ingeniería de portafolio, no desplegada como servicio multi-tenant en producción para ningún cliente.
El problema
La clase de problema: el diseño manual de tarjetas en InDesign no escala para personalización por lotes. Las listas de contactos llegan desordenadas — nombres de columnas alternativos, encabezados en español o francés, teléfonos separados en número y extensión, y nombres que necesitan ojo humano antes de ir en una credencial. Las herramientas existentes fallan en lograr paridad de comportamiento con los hábitos de un diseñador en InDesign (objetos nombrados, coloreado por palabra, reglas de auto-ajuste, posicionamiento con clamp de íconos).
Este proyecto muestra el orden de la modernización: portar primero los comportamientos, construir el motor de lotes después, y dejar el diseñador bonito para el final.
El enfoque
Capa de diseño (lo que puede probar hoy): un editor de lienzo en Next.js sobre Fabric.js que reproduce comportamientos al estilo InDesign — elementos nombrados, texto multicolor, auto-ajuste que reduce el texto cuando hay desbordamiento real de ancho y nunca lo agranda, clamp dinámico de íconos y compactación de líneas. Una plantilla reutilizable se bifurca en un nuevo diseño al guardar; la galería separa plantillas de diseños, y las plantillas globales se comparten entre usuarios ya sea por la API (según rol) o como archivos incluidos con la aplicación. Una plantilla se exporta como ZIP con su imagen de vista previa y un descriptor adjunto, de modo que puede entregarse intacta a otro espacio de trabajo.
Capa de lotes: importe desde .csv, .txt, .md, .vcf, .xls y .xlsx (incluidas hojas transpuestas con encabezados en la columna A), pegue filas directamente desde el portapapeles, o parta de una plantilla de importación en blanco. El mapeo de campos resuelve los encabezados mediante tablas de alias por idioma (inglés, español, francés) más coincidencia difusa; lo que queda sin resolver pasa por un diálogo de mapeo interactivo, y cualquier mapeo puede guardarse como preset reutilizable. Los archivos vCard 2.1 a 4.0 se importan como un registro por tarjeta, los campos desconocidos se conservan en lugar de descartarse, y los teléfonos se normalizan con detección de extensión. La exportación escribe una imagen PNG o JPG individualizada por registro en un solo ZIP.
Capa de repositorio (profundidad de portafolio, no producción para clientes): el modo de navegador se respalda con las mismas reglas de parseo y renderizado que la ruta del servidor — un servicio Python de parseo (lectura de archivos, normalización de campos, parseo de nombres, normalización de teléfonos) ejecutado desde un worker de cola en Node, con los resultados repartidos entre PostgreSQL para los campos de lote consultables y Cassandra para el registro de contacto completo, almacenamiento de objetos para archivos y exportaciones, y OAuth 2.0 con PKCE contra el Tools Dashboard hermano — la app no posee su propia autenticación, por diseño.
El resultado
Una prueba de portafolio enlazable: dos instancias públicas (demo y producción de este proyecto personal) donde los visitantes pueden ejercitar el diseñador. Prueba controlada sobre el diseñador en vivo: unos 2 segundos para procesar 1,000 contactos; menos de un minuto para exportar 1,000 tarjetas PNG individualizadas.
Lo que esto no es: un despliegue en producción para un cliente que paga, un SaaS multi-tenant en vivo, ni evidencia de adopción de usuarios o ingresos.
Probar la demo en su navegador
Proyecto de portafolio de LogicBison — no desplegado para ningún cliente. El acceso pasa por la cuenta compartida de Tools Dashboard (se le pedirá iniciar sesión) y, a partir de ahí, el diseñador corre en su navegador: cada plantilla, lote y exportación permanece en su navegador (localStorage / IndexedDB), nada se guarda en el servidor de la demo y el servidor rechaza escrituras. La demo gratuita limita cuántos registros puede llevar un lote; la instancia de producción en ecards.aiepic.app ejecuta el mismo diseñador. El pipeline del lado del servidor descrito en el repositorio es profundidad de ingeniería, no lo que estas instancias públicas exponen.
Probar la demo en su navegadorConclusión clave
La paridad de comportamiento es lo que hace creíble el port de una herramienta heredada — y el motor de lotes es el producto: resuelva el flujo doloroso de importación y exportación antes de embellecer el diseñador.
¿Listo para construir su plataforma?
Una llamada de 30 minutos para ver si somos el aliado correcto. Sin discurso de venta. Sin presión. En español o inglés — solo una conversación sobre lo que necesita construir.
Cada proyecto se define y se cotiza de forma individual — sin tarifario y sin precio antes de entender el sistema. El primer paso es una llamada de 30 minutos, en español o inglés; de ahí sale una lectura clara del alcance, la secuencia y lo que requiere el trabajo.