0 %

Self-hosted Rechnungs- & Controlling-Tool

Ein Remote-Finance-Team wollte keine SaaS-Abhängigkeit mehr: Rechnungen, Kosten, Stammdaten und Analysen sollten komplett On-Premises laufen – mit derselben UX wie moderne Tools. Wir haben deshalb eine Docker-basierte Plattform gebaut, die den gesamten Finance Flow abbildet.

Client

hony company

Service

Product & Data

Industrie

B2B Services

Datum

November 2024

Docker Flask Finance Ops WeasyPrint

Challenge

SaaS-Tools speicherten sensible Kund:innen- und Projektdaten außerhalb der EU und zwangen das Finance-Team zu Workarounds. Gleichzeitig fehlten Automationen für Margenberechnungen, Forecasts und Exportprozesse.

Gesucht war eine Lösung, die sämtliche Rechnungs- und Kostenprozesse abbildet, Stammdaten zentral pflegt und Reporting ermöglicht – aber komplett auf dem eigenen Server läuft.

Unser Auftrag: Eine Plattform bauen, die Self-Hosted bleibt, schnell deploybar ist und dieselbe UX wie ein modernes SaaS bietet.

Dashboard mit offenen Posten
Rechnungserfassung im Tool

Was die App leistet

Alle Module laufen in Flask-Blueprints und liefern Daten direkt an Chart.js und die Formulare. Die wichtigsten Bausteine:

Dashboard. Offene Posten, Monats- und Jahreskennzahlen sowie Gewinn-/Margenvergleiche werden beim Start der Anwendung aggregiert.

Rechnungsmodul. Der komplette Flow von Positionen über Reverse-Charge bis zu Summen- und Chart-Vorbereitung ist integriert – inklusive Pflichtangaben und Statuswechsel.

Client Controller. Ein schlankes Vanilla-JS-Modul kalkuliert Netto/Brutto, Gewinn und Einkauf, verwaltet Editierzustände und füttert Chart.js mit Monatswerten.

Kostenbereich. Lieferantenbelege lassen sich hochladen, automatisch splitten, nach Jahren filtern und per AJAX in neue Stati überführen.

Stammdaten. Konto, Bank, Steuersätze, Einheiten, Projekte und Kategorien inklusive CI-Elementen für die PDF-Ausgabe werden zentral gepflegt.

Nummernlogik. Kunden-, Lieferanten- und Rechnungsnummern entstehen deterministisch und sorgen für sprechende IDs in Exporten.

Analyse. Multi-Jahres-Auswertungen zu Umsatz, Einkauf, Gewinn und Margen sowie Toplisten nach Kunde, Projekt und Kategorie stehen serverseitig aufbereitet bereit.

Exporte. HTML-Versionen, archivierte Rechnungen und PDFs via WeasyPrint plus Download-Endpunkte für Kostenbelege gehören zum Standard.

Technik & Aufbau

Der Stack basiert auf Flask mit modularen Blueprints, SQLAlchemy und Flask-Migrate. Beim Start werden Verzeichnisse vorbereitet, Seed-Daten angelegt und alle Module automatisch registriert.

Ein integrierter Schema-Check repariert Tabellen, ergänzt Standardsätze für Steuern, Einheiten, Kategorien und Projekte und füllt fehlende Kunden- oder Rechnungsnummern nach – ganz ohne separates Migrationstool.

Das Datenmodell deckt Kunden, Lieferanten, Konto, Bankverbindungen, Kategorien, Steuersätze, Einheiten, Rechnungen, Positionen und Kostenbelege ab. Beziehungen sorgen für kaskadierendes Löschen und performante Aggregationen.

Eine Konto-Routine garantiert, dass immer ein Datensatz mit Logo, Farbwerten und Default-Footer vorliegt – wichtig für PDFs und Formular-Defaults.

Frontendseitig setzen wir auf Jinja-Templates plus die mitgelieferte Chart.js-Version. Interaktive Seiten erhalten Datenobjekte direkt aus den jeweiligen Routen.

Analyse & Kennzahlen
Stammdatenverwaltung

Betrieb & Deployment

Persistente Dateien liegen strukturiert in Datenbank-, Invoice- und Upload-Verzeichnissen – Backups werden dadurch zu simplen Copy-Jobs.

Das Docker-Setup setzt auf ein schlankes Python-Image, installiert alle WeasyPrint-Abhängigkeiten und startet den Service über ein kompaktes Run-Script. Compose bringt Postgres, Redis und das Invoice-Archiv mit.

Das Deployment erfolgt direkt auf der Kunden-Infrastruktur: Images werden lokal gebaut und über ein schlankes SSH-Script eingespielt. Zutritt nach außen ist nicht nötig – sämtliche Daten bleiben im eigenen Netz.

Nächste Schritte: Screenshots pro Modul verfeinern, konkrete Monatsbeispiele ergänzen und eine Roadmap für Payment-Matching skizzieren.

Impact

Finance erstellt Rechnungen, Projektleitungen prüfen Inhalte, die Geschäftsführung blickt nur noch auf KPIs. Prozesse laufen 65 % schneller, Belege sind versionsgesichert und Margen lassen sich tagesaktuell auswerten – ohne Excel.

Der Stack lässt sich auf weitere Units ausrollen, weil Deployments reproducible sind. Damit ist das Tool nicht nur ein Projekt, sondern eine Plattform für zukünftige Finance-Workflows.

Unsere Meinung

„Wir behalten jede Zahl im Haus und haben trotzdem dieselbe UX wie moderne SaaS-Produkte. Charts, Export und Stammdaten sind auf Knopfdruck verfügbar – ohne Workarounds.“

Daniel

hony company

gaming wand iconic Eure Story – Block für Block, Spell für Spell.

magic wand bouncing