Contexto
Atlántida360 nace para apoyar la digitalización de un negocio real de impresiones, fotocopias, digitalización y anillado en Estación Central. El objetivo del sitio es permitir que los clientes conozcan los servicios disponibles, estimen el valor de un trabajo y envíen la información necesaria antes de acudir al local.
El sitio público presenta servicios, ubicación, medios de contacto y acceso al cotizador online.
Problema
Cotizar documentos puede requerir conocer cuántas páginas contiene cada archivo, cuántas copias necesita el cliente, si la impresión será por una o ambas caras y si requiere anillado. Cuando existen varios archivos PDF, este proceso puede generar errores o intercambios adicionales de mensajes.
Solución
Desarrollé una experiencia web que permite seleccionar uno o varios documentos PDF, obtener automáticamente la cantidad de páginas mediante PDF.js, calcular un valor estimado según las opciones seleccionadas y preparar la información para su envío mediante un formulario.
La aplicación incorpora carga múltiple de archivos, arrastrar y soltar (drag & drop), validación de documentos, detección de PDF ilegibles, resumen de archivos seleccionados y control de errores antes del envío.
Frontend desarrollado
- HTML semántico y estructura modular.
- Diseño responsive con CSS.
- Navegación optimizada para dispositivos móviles.
- Tema claro y oscuro.
- Cotizador basado en reglas de tarifas.
- Carga múltiple de archivos y drag & drop.
- Integración con PDF.js para lectura de páginas.
- Mensajes accesibles mediante aria-live.
- Barra de progreso usando XMLHttpRequest.
- Metadatos SEO, Open Graph y JSON-LD.
- robots.txt, sitemap.xml y rutas limpias con Vercel.
Arquitectura en desarrollo
Actualmente el proyecto se encuentra migrándose hacia una arquitectura con API independiente desarrollada en Node.js y Express.
La solución contempla una ruta POST /formularios que recibirá
datos del formulario y documentos PDF mediante una única solicitud
multipart. Los archivos serán validados en el servidor, almacenados de
forma privada y sus metadatos persistidos en PostgreSQL.
El despliegue proyectado considera:
- Frontend en Vercel.
- API en Google Cloud Run.
- Documentos privados en Google Cloud Storage.
- Persistencia en PostgreSQL.
- Notificaciones por correo electrónico.
Decisiones técnicas y aprendizajes
- PDF.js en el cliente: permite obtener páginas antes de calcular una cotización.
- Validación temprana: evita cotizaciones sobre archivos ilegibles o corruptos.
- Flujo multipart: simplifica la integración entre frontend y backend.
- Validación duplicada: el backend vuelve a verificar toda la información recibida.
- Almacenamiento privado: protege documentos que pueden contener información sensible.
- Estados de progreso: diferencian el envío del archivo y el procesamiento de la solicitud.
Próximamente
- Migración definitiva a la nueva API.
- Persistencia de formularios y documentos.
- Catálogo de productos y cuadros fotográficos.
- Registro e inicio de sesión de usuarios.
- Área privada para consulta de documentos de estudio.