Zum Inhalt springen

An Rhinvoice mitarbeiten (für Entwickler)

Lesezeit 2 Minuten

Rhinvoice ist Open Source auf GitHub, unter der AGPL. Fehlermeldungen, Steuerregeln mit amtlicher Quelle und Pull Requests sind willkommen. Lesen Sie zuerst CONTRIBUTING.md (auf Englisch) und eröffnen Sie vor grösseren Änderungen ein Issue.

Das Backend ist Python 3.13 mit FastAPI, SQLAlchemy 2 und Alembic auf PostgreSQL, in Schichten (api → infrastructure → application → domain), die import-linter prüft. Das Frontend ist React mit TypeScript und Vite, TanStack Router und Query und Tailwind CSS, mit einem API-Client, der aus dem OpenAPI-Schema erzeugt wird. PDFs rendert Gotenberg aus HTML, pypdf macht daraus PDF/A-3b, die QR-Rechnung mit qrbill, der GiroCode mit segno, die Backups mit restic in einem eigenen Container.

Voraussetzungen: Python 3.13 mit uv, Node.js 22 mit pnpm, Docker.

Terminal-Fenster
make install # dependencies
make dev-backend # database on :5433 + API on :8000 (auto-reload)
make dev-frontend # Vite on :5173, proxies /api to the backend
make demo # demo customers, articles and documents
make qa # the full quality gate (also what CI runs)
make help # all targets

Rhinvoice verarbeitet Geld und rechtlich verbindliche Dokumente. Deshalb muss jede Änderung make qa bestehen, das auch in der CI läuft. Ein Pull Request mit roter Prüfung wird nicht begutachtet.

Bereich Werkzeuge
Backend ruff (ALL), mypy –strict, pyright strict, import-linter, pytest mit 100 % Zeilen- und Zweigabdeckung, hypothesis, echtes PostgreSQL, schemathesis, mutmut (≥ 90 %), pip-audit
Frontend TypeScript strict, ESLint strict type-checked mit jsx-a11y, dependency-cruiser, Vitest mit 100 % Abdeckung, pnpm audit
E2E Playwright gegen das Produktions-Image, axe-core (WCAG 2.2 AA) in jedem Test, Screenshots hell/dunkel × Desktop/Mobil
E-Rechnung KoSIT-Validator und Mustang für jedes Beispiel

Einige Regeln aus CONTRIBUTING.md: Geld ist nie ein Float, die Zeit kommt aus der Clock, ausgestellte Dokumente bleiben unveränderlich, und im Code ist alles Englisch.

Wo ist der Quellcode von Rhinvoice?

Auf GitHub unter github.com/rhinvoice/rhinvoice, lizenziert unter der GNU Affero General Public License v3.0 oder später.

Muss ich etwas unterschreiben, um beizutragen?

Ja. Bevor Ihr erster Pull Request übernommen wird, akzeptieren Sie das Contributor License Agreement mit einem Häkchen im Pull Request. Das Urheberrecht an Ihrer Arbeit behalten Sie.

Kann ich Rhinvoice um ein Land erweitern?

Ja. Alles, was sich zwischen Ländern unterscheidet, steckt in einem Länderprofil pro Land. Die Anleitung docs/adding-a-country.md führt mit Tests durch die Arbeit. Eröffnen Sie zuerst ein Issue mit den amtlichen Quellen.