Creación de Microservicio Generador de PDF

Job ID: 39636403

Budget: $30 – $250 USD

1. Introducción
Buscamos un desarrollador (o equipo) freelance, preferiblemente con experiencia en Node.js, para crear un microservicio que reciba datos vía HTTP POST y genere un PDF de 8 páginas, devolviendo a la vez la URL donde puede descargarse.

2. Alcance del proyecto
Servicio HTTP: Un endpoint POST /generate-pdf que reciba un JSON con todos los parámetros necesarios.

Generación de PDF: Uso de librería como PDFKit, Puppeteer+HTML/CSS, jsPDF, u otra similar.

Almacenamiento y entrega: El PDF generado debe guardarse en un bucket S3 (u otro almacenamiento) y el servicio debe devolver un objeto JSON con el campo downloadUrl apuntando al archivo.

3. Descripción de páginas (ver PDF de ejemplo)
Página 1

Variables a reemplazar:

{{nombreCliente}} (p.ej. “Abdiel Cerrud”)

{{consumoKwh}} (p.ej. “10 KWH”)

Resto del contenido estático.

Página 2

Todo el contenido es fijo (no variables).

Página 3

Contenido totalmente fijo.

Página 4

Lista de detalles (array de objetos con articulo y cantidad).

Tabla de costos con variables:

{{costoSistema}}

{{itbms}}

{{total}}

Página 5

Variable única: {{montoMantenimiento}}.

Demás texto e imágenes fijos.

Página 6

Dos gráficas (por ejemplo, líneas o barras) cuyos datos se pasan como arreglos en el JSON.

Debe adaptarse al número de puntos y escalar ejes automáticamente.

Página 7

Información completamente fija.

Página 8

Variables:

{{primerAbono60}} (60%)

{{segundoAbono40}} (40%)

Resto de instrucciones y texto fijo.

4. JSON de entrada (ejemplo)
json
Copiar
Editar
{
"nombreCliente": "Abdiel Cerrud",
"consumoKwh": "10 KWH",
"detalles": [
{ "articulo": "Panel 610W", "cantidad": 1 },
{ "articulo": "Inversor 8KW", "cantidad": 1 }
],
"costoSistema": 5275.00,
"itbms": 0.00,
"total": 5275.00,
"montoMantenimiento": 80.00,
"datosGrafica1": [ /* array de números */ ],
"datosGrafica2": [ /* array de números */ ],
"primerAbono60": 3165.00,
"segundoAbono40": 2110.00
}
5. Requisitos técnicos
Lenguaje: Node.js (v14+).

Framework: Express.js u otro de tu elección.

Generación PDF: PDFKit, Puppeteer, o similar.

Almacenamiento: S3, Google Cloud Storage, o filesystem local (según acuerden).

Documentación: README con instrucciones de instalación, uso y despliegue.

Tests: Al menos pruebas unitarias básicas para la función de generación.

6. Entregables
Código fuente en un repositorio Git (GitHub/GitLab).

Imagen de Docker opcional.

Documentación de API (endpoint, ejemplo de solicitud y respuesta).

Script de despliegue o instrucciones para producción.

7. Criterios de aceptación
El endpoint responde en menos de 3 s generando correctamente el PDF con los datos de ejemplo.

El PDF generado coincide en estructura y diseño con el PDF adjunto.

La URL de descarga es accesible públicamente (o con mecanismo de firma, según acuerden).

el desarrollo debe correr en linux debian node.js
Related categories: JavaScript HTML5 Node.js AngularJS JSON Docker Microservices REST API