From 776ea21ad9a3db4d383e1fe44f76176b6731ece6 Mon Sep 17 00:00:00 2001 From: Andreas Knuth Date: Wed, 21 Jan 2026 19:51:42 -0600 Subject: [PATCH] 1. version --- server.js | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/server.js b/server.js index 174c220..48ef0e8 100644 --- a/server.js +++ b/server.js @@ -3,7 +3,7 @@ const { Pool } = require('pg'); const multer = require('multer'); const path = require('path'); const fs = require('fs'); -const puppeteer = require('puppeteer'); +const puppeteer = require('puppeteer-core'); const app = express(); const PORT = process.env.PORT || 3000; @@ -173,6 +173,17 @@ app.get('/api/quotes', async (req, res) => { } }); +// Get next quote number (MUST be before /:id route) +app.get('/api/quotes/next-number', async (req, res) => { + try { + const quoteNumber = await generateQuoteNumber(); + res.json({ quote_number: quoteNumber }); + } catch (err) { + console.error(err); + res.status(500).json({ error: 'Error generating quote number' }); + } +}); + app.get('/api/quotes/:id', async (req, res) => { try { const quoteResult = await pool.query( @@ -347,17 +358,6 @@ app.delete('/api/quotes/:id', async (req, res) => { } }); -// Get next quote number -app.get('/api/quotes/next-number', async (req, res) => { - try { - const quoteNumber = await generateQuoteNumber(); - res.json({ quote_number: quoteNumber }); - } catch (err) { - console.error(err); - res.status(500).json({ error: 'Error generating quote number' }); - } -}); - // Upload logo app.post('/api/upload-logo', upload.single('logo'), (req, res) => { if (!req.file) { @@ -399,8 +399,14 @@ app.post('/api/quotes/:id/pdf', async (req, res) => { // Generate PDF with Puppeteer const browser = await puppeteer.launch({ - headless: 'new', - args: ['--no-sandbox', '--disable-setuid-sandbox'] + executablePath: process.env.PUPPETEER_EXECUTABLE_PATH || '/usr/bin/chromium-browser', + headless: true, + args: [ + '--no-sandbox', + '--disable-setuid-sandbox', + '--disable-dev-shm-usage', + '--disable-gpu' + ] }); const page = await browser.newPage(); await page.setContent(html, { waitUntil: 'networkidle0' });