Lienzo Abierto: una galería de imágenes para aprender, adaptar y hacer tuya
Una galería de imágenes con búsqueda, favoritos e importación local. Código abierto, ilustraciones de ejemplo y un recorrido para adaptarla.
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.

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.

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:
examples/documento-demo.pdf, que contiene dos páginas ficticias.
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.
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.
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.