Aller au contenu

Cette page a été traduite automatiquement. Vos remarques sont les bienvenues : signaler une erreur de traduction sur GitHub ou écrire à hello@rhinvoice.com.

Contribuer à Rhinvoice (pour les développeurs)

Lecture : 3 min

Rhinvoice est open source sur GitHub sous licence AGPL. Les signalements d’erreurs, les règles fiscales avec leur source officielle et les pull requests sont les bienvenus. Lisez d’abord CONTRIBUTING.md, et ouvrez un ticket avant une modification importante.

Le backend est en Python 3.13 avec FastAPI, SQLAlchemy 2 et Alembic sur PostgreSQL, en couches (api → infrastructure → application → domain) vérifiées par import-linter. Le frontend est en React avec TypeScript et Vite, TanStack Router et Query et Tailwind CSS, avec un client API généré à partir du schéma OpenAPI. Les PDF sont rendus à partir de HTML par Gotenberg et transformés en PDF/A-3b avec pypdf, la facture QR suisse vient de qrbill, le code QR EPC de segno, et les sauvegardes de restic dans un conteneur à part.

Prérequis : Python 3.13 avec uv, Node.js 22 avec pnpm, Docker.

Fenêtre de terminal
make install # dépendances
make dev-backend # base de données sur :5433 + API sur :8000 (rechargement automatique)
make dev-frontend # Vite sur :5173, relaie /api vers le backend
make demo # clients, articles et documents de démonstration
make qa # le contrôle qualité complet (aussi exécuté par la CI)
make help # toutes les cibles

Rhinvoice traite de l’argent et des documents juridiques; chaque modification passe donc make qa, que la CI exécute aussi. Une pull request dont le contrôle échoue n’est pas relue.

Domaine Outils
Backend ruff (ALL), mypy –strict, pyright strict, import-linter, pytest avec 100 % de couverture des lignes et des branches, hypothesis, vrai PostgreSQL, schemathesis, mutmut (≥ 90 %), pip-audit
Frontend TypeScript strict, ESLint strict type-checked avec jsx-a11y, dependency-cruiser, Vitest avec 100 % de couverture, pnpm audit
E2E Playwright contre l’image de production, axe-core (WCAG 2.2 AA) dans chaque test, captures d’écran clair/sombre × bureau/mobile
Factures électroniques Validateur KoSIT et Mustang sur chaque exemple

Quelques règles de CONTRIBUTING.md : l’argent n’est jamais un float, le temps vient de la Clock, les documents émis restent inaltérables, et tout le code est en anglais.

Où se trouve le code source de Rhinvoice?

Sur GitHub, à l’adresse github.com/rhinvoice/rhinvoice, sous la GNU Affero General Public License v3.0 ou ultérieure.

Dois-je signer quelque chose pour contribuer?

Oui. Avant que la première pull request soit fusionnée, vous acceptez le Contributor License Agreement en cochant sa case dans la pull request. Vous gardez le droit d’auteur sur votre travail.

Puis-je ajouter un pays à Rhinvoice?

Oui. Tout ce qui diffère d’un pays à l’autre se trouve dans un profil de pays par pays. Le guide docs/adding-a-country.md vous accompagne, guidé par des tests. Ouvrez d’abord un ticket avec les sources officielles.