Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Formfeed templates

Free document templates under the MIT license: invoices, quotes, delivery notes, reminders, credit notes, certificates, payslips, timesheets, tickets, name badges, vouchers, reports, social images and shipping labels. Each is plain HTML and CSS with Jinja2, Liquid or Handlebars tags, together with the sample data it was designed with and the PDF or image it renders to.

21 templates and 20 building blocks. Every template renders on Formfeed, where each has its own page with the API call in eight languages.

Use a template

  1. Copy it. A folder under templates/ holds template.html, its stylesheet and settings, and data/default.json. The tags are ordinary Jinja2, Liquid or Handlebars; the helpers they call (money, dates, QR codes and GiroCodes, barcodes, charts) are described in the helper reference.

  2. Push it into Formfeed. This repository is a Formfeed project (formfeed.json), so the CLI works in it as it is:

    git clone https://github.com/formfeed-dev/templates
    cd templates
    npx formfeed login
    npx formfeed templates push invoice-de

    Then change it in the editor, whose preview paginates like the PDF, and render it from your code: the API, the SDKs for TypeScript and Python, or Zapier, Make and n8n.

  3. Check it offline. npx formfeed validate compiles every template with its own sample data and reports unknown variables and filters. No account needed.

Templates

Quotes, invoices and what follows them

Template
German invoice with GiroCode
Line items, net, VAT and gross computed in the template, dates in German format with a due date 14 days out, a SEPA QR code banking apps scan, and a running footer with page numbers. Your code sends the facts; the template owns the legal layout.
Jinja2 · PDF
German quote (Angebot) with optional items
A quote in the German letter layout: optional positions are listed but stay out of the sum, the discount and VAT are computed in the template, and the validity date follows from the quote date. The footer carries the company details German law expects on business letters.
Jinja2 · PDF
Quote marked as a draft
The template knows nothing about the mark: post.watermark stamps DRAFT across every page after the render, so the reviewed draft and the final quote come from the same template and data. The text is sized to the page diagonal and runs from bottom left to top right. Half a unit on top of the render; /pdf/watermark marks a PDF you rendered earlier.
Liquid · PDF
German delivery note (Lieferschein)
A delivery note without prices: ordered against delivered quantities, a note on lines with a remainder to follow, the number as a Code 128 barcode for goods receipt, and a signature block that never splits across pages. Written in Liquid.
Liquid · PDF
German packing list (Packliste) grouped by package
The request sends one flat list of items; groupBy turns it into a section per package with its own table and weight, and the opening line counts packages, items and kilograms. A package never splits across two pages.
Jinja2 · PDF
German invoice correction (Rechnungskorrektur)
What is commonly called a “Gutschrift”: a correction that refers to the original invoice by number and date and shows the amounts as negatives. The data holds the positive values of the corrected lines; the template turns the sign with multiply(-1) and computes VAT on the result.
Jinja2 · PDF
German payment reminder (Mahnung) with GiroCode
A dunning letter in Handlebars: the wording changes with the final notice, open invoices are summed with interest and the reminder fee through nested helpers, and a GiroCode carries the total and the payment reference. The dunning run for all customers is one batch.
Handlebars · PDF

Certificates and HR documents

Template
Course certificate in Handlebars
A landscape certificate with a verification QR code, rendered one at a time as PNG or for a whole course as a batch that ends in a zip. Handlebars takes options as hash arguments: {{qrcode verify_url size=96}}.
Handlebars · PDF
German certificate of attendance (Teilnahmebescheinigung)
A certificate that lists what was taught: the course modules with their teaching units, the total as a number and spelled out in German by numToWords, and a QR code to verify the certificate number. Full-bleed A4 with zero margins, rendered for a whole course as one batch.
Handlebars · PDF
German reference letter (Arbeitszeugnis) from Markdown
A text document rather than a table: the paragraphs arrive as Markdown, markdown turns them into HTML with lists and emphasis, and the template sets a serif face, justified text with hyphenation and a signature block for two signers that stays together on one page.
Liquid · PDF
Confidential payslip with a password
Two post-processing steps in one request: a red CONFIDENTIAL mark on every page, then AES-256 encryption with the employee’s password, allowing printing but not copying or editing. The password never reaches the render log. The download opens with the password formfeed. One unit for the page plus half a unit per step.
Handlebars · PDF
German timesheet (Stundenzettel) with balance and projects
A weekly timesheet in Handlebars: weekdays formatted in German, worked hours summed and set against the target with subtract, and the same entries grouped by project for the summary. Two signature lines stay together at the foot of the page.
Handlebars · PDF

Confirmations and receipts

Template
German cancellation confirmation (Kündigungsbestätigung)
A plain business letter whose paragraphs depend on the data: with a refund it names the amount and the date, without one it says that nothing is open, and the data export paragraph appears only when there is a deadline. Dates are written out in German.
Handlebars · PDF
German donation receipt (Spendenbescheinigung)
A receipt for a monetary donation laid out after the wording of the official German sample: the amount in figures and, through numToWords, in capital letters as the form asks, the exemption notice of the tax office, and the liability note. It shows the mechanics; have your tax adviser check the wording for your organisation.
Liquid · PDF

Events: tickets, badges and vouchers

Template
Event ticket with QR code and PDF417
A print-at-home ticket on its own paper size, 210 × 80 mm without margins: a QR code for the check-in app on the stub, the ticket number again as a PDF417 strip for hand scanners, and the start time, doors and weekday formatted in German from two timestamps.
Jinja2 · PDF
Name badges, eight per A4 sheet
One request carries the whole guest list. chunk(8) cuts it into sheets of eight badges in a CSS grid of 90 × 67.5 mm cells, pageBreak() starts a new sheet between them, and default fills in a missing organisation or role. Ten guests give two pages.
Jinja2 · PDF
Gift voucher with Tailwind, as PDF and PNG
A voucher in the DIN long format, styled with Tailwind classes that are compiled at render time, arbitrary values such as h-[99mm] included. The expiry date is three years after the issue date through dateAdd, the message appears only when there is one, and the same template renders as a PNG for the mail.
Liquid · PDF

Reports and multilingual documents

Template
Report with a chart
A cover page, a page break and a Chart.js bar chart built from the data inside the template, with pluck pulling the labels and values out of the rows. Charts render without animation, so the PDF matches the preview. Long reports go async and report back through a webhook.
Jinja2 · PDF
One template, many languages
Texts come from the template’s dictionary through t(), and the request’s locale picks the language and the number and date formats. The German render says “Auftragsbestätigung” and “113,50 €”, the English one “Order confirmation” and “€113.50”, from the same data.
Jinja2 · PDF

Images and labels

Template
Open Graph image with Tailwind
A 1200×630 social image in Liquid with Tailwind classes, compiled at render time. Liquid passes options as keyword arguments (`
image: width: 72`), and identical requests are served from the dedup cache at zero units.
Shipping label, 100×150 mm
A custom paper size for thermal printers, a Code 128 tracking barcode, a QR code built from a URL and the tracking number, and the package contents summed in the template. barcode also does EAN-13, ITF-14, DataMatrix and PDF417.
Jinja2 · PDF

Building blocks

Smaller pieces for your own templates, each in all three dialects: a letterhead, an address window, an invoice table with totals, payment terms, a GiroCode, a signature line, page breaks, key figures and a chart. In the Formfeed editor each is one click in the blocks panel.

Letter

  • Letterhead: Logo from the brand kit, or the organisation name when no logo is set.
  • Window envelope address: Return address and recipient in the 85 × 45 mm field of a DIN 5008 window envelope.
  • Reference block: Customer number, invoice number and date as a right-aligned table; put it in a two-column layout to sit beside the address.
  • Address block: Recipient name and postal address lines.
  • Signature line: Place, date and a signature line.

Invoice and payment

Page and layout

Report

  • Cover page: Title, subtitle and date on a page of its own.
  • Chart: Bar chart from labels and values in the data, in the brand colour.
  • Key figures: A row of cards with label, value and change for each figure.

Contributing

New templates and fixes are welcome; see CONTRIBUTING.md.

License

MIT, see LICENSE. Use the templates in any project, with Formfeed or without it.

About

Free HTML document templates — invoices, quotes, certificates, reports, tickets, labels — in Jinja2, Liquid and Handlebars, with sample data and rendered PDFs. MIT.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages