Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

LütiSmart — Invoice Generator

Automated PDF invoice generation and delivery for small businesses.

A fully deployed automation workflow that takes a web form submission and delivers a professional PDF invoice to the client's inbox — automatically, in seconds. No manual work, no templates to fill, no emails to write.

🔗 Live demo: demo.lutismart.de/invoice


🎯 What it does

  1. Client fills a bilingual (DE/EN) web form — selects services, enters client details
  2. Form submits to a webhook on a self-hosted n8n instance
  3. n8n passes the data to a Python microservice that generates a PDF invoice using WeasyPrint
  4. PDF is returned as base64, converted to binary in n8n
  5. Gmail sends the PDF as an email attachment to the client
  6. Google Sheets logs the invoice for financial tracking

🏗 Architecture

[HTML Form] → [n8n Webhook]
                    ↓
             [JS Code Node]
             (build invoice HTML)
                    ↓
             [HTTP Request]
             → python-runner/convertHTML2PDF.py
             (WeasyPrint → base64 PDF)
                    ↓
             [Gmail Node]
             (send PDF attachment via OAuth2)
                    ↓
             [Google Sheets]
             (log invoice reference, client, total)

🛠 Stack

Component Technology
Automation n8n (self-hosted)
PDF generation Python · WeasyPrint
Email delivery Gmail API · OAuth2
Data logging Google Sheets API
Frontend Vanilla HTML · JS (bilingual DE/EN)
Infrastructure Docker · Nginx · Hetzner VPS · SSL

📁 Repository contents

frontend/
   index.html        # Bilingual form (DE/EN, dark/light mode)
python-runner/
  generatePdf.py      # WeasyPrint PDF generation script

The n8n workflow is not published — it is part of the LütiSmart production system.


✨ Frontend features

  • Bilingual interface (🇩🇪 German default / 🇬🇧 English toggle)
  • Dark and light mode (system preference)
  • Service selection with live price summary
  • Custom service input (name + price)
  • Auto-reset after successful submission
  • Toast notifications for validation and errors

🚀 Deployment

The full stack runs on a Hetzner VPS:

  • n8n self-hosted via Docker Compose
  • python-runner microservice (FastAPI + WeasyPrint) in a separate container
  • Nginx reverse proxy with SSL (Let's Encrypt)
  • Frontend served as static files

📬 Contact

demo.lutismart.de · info@lutismart.de

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages