Creación de Microservicio Generador de PDF
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
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