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)
Cette page s’adresse aux personnes qui veulent modifier Rhinvoice ou y contribuer. Pour utiliser Rhinvoice, vous n’en avez pas besoin; commencez par l’installation.
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.
Par où commencer
Section intitulée « Par où commencer »- CONTRIBUTING.md : façons d’aider, environnement de développement, règles pour les pull requests
- Contributor License Agreement : accepté en cochant sa case dans votre première pull request; vous gardez le droit d’auteur sur votre travail
- Décisions d’architecture dans
docs/adr: lisez l’ADR du domaine que vous modifiez - Adding a country : un profil de pays, guidé par des tests (vue d’ensemble pour tous : Autres pays)
- Changelog
- Questions et idées : discussions GitHub; erreurs : issues
- Les problèmes de sécurité passent par un signalement privé, jamais par un ticket public : SECURITY.md
Technologies
Section intitulée « Technologies »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.
Développement
Section intitulée « Développement »Prérequis : Python 3.13 avec uv, Node.js 22 avec pnpm, Docker.
make install # dépendancesmake dev-backend # base de données sur :5433 + API sur :8000 (rechargement automatique)make dev-frontend # Vite sur :5173, relaie /api vers le backendmake demo # clients, articles et documents de démonstrationmake qa # le contrôle qualité complet (aussi exécuté par la CI)make help # toutes les ciblesLe contrôle qualité : make qa
Section intitulée « Le contrôle qualité : make qa »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.
Questions fréquentes
Section intitulée « Questions fréquentes »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.