Pliegora: una tienda de impresión abierta, del PDF al pedido

Del PDF al presupuesto y al pedido: una tienda de impresión de código abierto con administración, cálculo en servidor y documentos privados.

Una tienda de impresión parece sencilla hasta que intentas convertir un archivo en un pedido. Hay que contar páginas, elegir tamaño, calcular ejemplares, aplicar acabados y guardar el documento sin dejarlo al alcance de cualquiera.

Pliegora es una base abierta para recorrer ese proceso. Tiene una interfaz nueva, catálogo de ejemplo, presupuesto y panel de administración. El código está en GitHub, con licencia MIT, un PDF de prueba y documentación de puesta en marcha.

Portada real de Pliegora, con acceso al configurador y una composición de papel

Lo que puedes probar desde el primer día

La edición incluye documentos, flyers y carteles. Para documentos puedes elegir A4 o A3, blanco y negro o color, número de ejemplares y encuadernación en espiral. Flyers y carteles tienen reglas más acotadas, explicadas en el formulario.

Al seleccionar un PDF, la aplicación lee sus páginas y muestra una estimación. Cuando guardas la solicitud, el servidor vuelve a abrir el archivo y calcula el importe con sus propias reglas. El total que muestra el navegador no se convierte en una cantidad que el servidor deba aceptar a ciegas.

Los precios se calculan en céntimos. Las tarifas, descuentos y el IVA del 21 % son datos de demostración: deben adaptarse a cada negocio antes de utilizarlos de verdad. Esta edición no cobra, no envía emails y no manda un trabajo a una imprenta existente.

Configurador real con un PDF de dos páginas y el presupuesto desglosado

Una prueba completa con un PDF de ejemplo

Descarga el proyecto desde GitHub, abre su carpeta y prepara la instalación local:

npm ci
cp .env.example .env.local

En .env.local, elige una contraseña de administración de al menos dieciséis caracteres. No uses una contraseña que ya emplees en otro servicio. Después:

npm run dev

Abre http://127.0.0.1:3000 y sigue este recorrido:

  1. Elige Documentos.
  2. Adjunta examples/documento-demo.pdf, que contiene dos páginas ficticias.
  3. Selecciona dos ejemplares, A4, blanco y negro y sin encuadernar.
  4. Comprueba el total del ejemplo: 0,48 €, incluido el impuesto configurado.
  5. Escribe un nombre ficticio para la recogida y guarda la solicitud.
  6. Conserva la URL de seguimiento completa.
  7. Entra en Administración y cambia el estado a En impresión y después a Listo para recoger.
  8. Vuelve al enlace del pedido y actualiza su estado.

Panel real de administración con un pedido de demostración y sus acciones

El archivo no vive en una carpeta pública

Los pedidos se guardan en SQLite. Los PDF van a un directorio privado fuera de public. Para descargarlos hace falta una sesión de administración o el acceso privado al pedido.

El enlace de seguimiento lleva un token aleatorio en el fragmento de la URL. El navegador lo utiliza para consultar el pedido; en la base de datos solo se guarda su hash. Es un enlace que concede acceso, así que hay que conservarlo y no compartirlo públicamente.

La aplicación admite PDF de hasta 20 MB y rechaza archivos que no puede leer, incluidos los cifrados o dañados. Eso no es un análisis antimalware ni una comprobación profesional de calidad de impresión: no revisa sangrados, perfiles de color o resolución de todas las imágenes.

Una base para adaptar a un negocio

Esta edición está pensada para solicitudes con recogida en tienda. No incluye pagos en línea, envíos, facturación, recuperación de contraseñas ni una política automática de borrado. Son decisiones que cada instalación debe resolver antes de recibir documentos reales.

Tampoco está preparada para desplegar varias réplicas independientes. SQLite y los PDF necesitan disco persistente y una instancia de aplicación. El README explica la configuración de URL, HTTPS, sesión y copias de seguridad.

Si quieres estudiar una parte concreta, empieza por src/lib/pricing.mjs. Ahí están las reglas de precio y los cambios de estado. Una ampliación pequeña sería añadir otro acabado con su prueba correspondiente.

Revisa el cálculo de precios de Pliegora. Quiero añadir un acabado nuevo,
pero antes explícame las unidades, los céntimos y cómo se aplica el impuesto.
Propón el cambio mínimo y una prueba que detecte un error de redondeo.
No añadas pagos, envíos ni servicios externos.

Qué he comprobado

La prueba utiliza un PDF real de dos páginas, guarda la solicitud, verifica el importe del servidor y recorre los cambios de estado. También comprueba que una consulta sin acceso no devuelve el pedido, que el panel exige sesión y que se rechaza una mutación desde otro origen. La descarga autorizada devuelve el PDF.

Hay pruebas automáticas para cantidades, páginas, opciones inválidas, descuentos y transiciones. No se han realizado cobros, pedidos comerciales ni pruebas de carga.

Abre Pliegora en GitHub. Puedes utilizarla como ejemplo de arquitectura o como punto de partida para una instalación que adaptes y revises con tus propias necesidades.