partiduo-app

Partiduo — portage de NOALYSS en Crystal (partiduo-app)

= partiduo-app — socle et modules de Partiduo :toc: left :toc-title: Table des matières :icons: font

Partiduo est le portage en Crystal de https://noalyss.eu[NOALYSS], logiciel libre de comptabilité et d'ERP créé et maintenu par Dany De Bontridder. Partiduo n'est pas un projet officiel NOALYSS ; il en reprend les règles métier, lues dans le code PHP et le SQL d'origine, dans un schéma repensé.

Ce dépôt contient le métier : un socle toujours actif et des modules activables par instance (Comptabilité, Facturation, Analytique, puis Stock), exposés par le contrat Partiduo::Api. Il ne contient aucune interface — ni handler, ni gabarit, ni fichier statique (ADR-005) : l'interface est le dépôt partiduo-ui-bulma.

La spécification est dans ../partiduo-docs/ : CARTOGRAPHIE-NOALYSS.adoc, adr/ADR-001 à adr/ADR-006. Les conventions de code partagées et les décisions prises pendant le portage sont dans link:DECISIONS.adoc[], les blocages dans link:BLOCAGES.adoc[], l'avancement dans link:ETAT-PORTAGE.adoc[].

== Organisation

[source]

src/ ├── partiduo.cr # point d'entrée du shard : require "partiduo" ├── partiduo/ # version, configuration, conventions du contrat Api │ └── api/ # Result, FieldError, Actor, Guard, Transaction, erreurs

Socle — toujours actif

├── modules/ # registre Partiduo::Modules, manifeste, événements ├── auth/ # utilisateur (ADR-002 D1) ├── core/ # société, profils, exercices et périodes, paramètres ├── cards/ # tiers, articles et services ├── vat/ # taux de TVA ; be/ et fr/

Modules activables

├── accounting/ # Comptabilité ├── invoicing/ # Facturation └── analytic/ # Analytique (requiert accounting)

Chaque application Marten suit le même plan : app.cr, manifest.cr, models/, migrations/, services/ (interne), api/ (contrat public), locales/ (fr, en, nl).

== Prérequis

  • Crystal 1.19.1 ;
  • PostgreSQL 18, joint par socket Unix (/tmp/.s.PGSQL.5432) ;
  • les shards maison à côté du groupe : prod-crystal/marten, authn, password-policy, totp, webauthn, jose (dépendances path:, voir shard.override.yml).

== Installation

[source,sh]

SKIP_MARTEN_CLI_PRECOMPILATION=1 shards install createdb --encoding=UTF8 partiduo_dev crystal run manage.cr -- migrate

SKIP_MARTEN_CLI_PRECOMPILATION=1 évite que Marten, installé en path:, compile sa ligne de commande hors du dépôt (voir DECISIONS).

== Configuration

La configuration d'une instance tient dans son environnement (ADR-001 D2).

[cols="1,2,2",options="header"] |=== |Variable |Rôle |Défaut

|DATABASE_URL |base de l'instance |postgres:///partiduo_dev?host=/tmp (partiduo_test en test)

|PARTIDUO_MODULES |modules et extensions actifs, séparés par des virgules ; none pour le socle seul |accounting,invoicing,analytic

|PARTIDUO_DOMAIN |domaine des instances (<dossier>.<domaine>), RP ID WebAuthn |partiduo.localhost

|PARTIDUO_TIME_ZONE |fuseau de l'instance : date du jour des factures, échéances, relances, relevés |Europe/Paris

|PARTIDUO_RP_ID |identifiant de partie de confiance WebAuthn (à figer avant le premier enrôlement) |PARTIDUO_DOMAIN

|PARTIDUO_WEBAUTHN_ORIGINS |origines WebAuthn admises, liste exacte séparée par des virgules |tout sous-domaine du RP ID (http admis pour *.localhost)

|PARTIDUO_BCRYPT_COST |coût BCrypt des mots de passe |12 (4 en test)

|MARTEN_SECRET_KEY |clé secrète (obligatoire en production) |valeur de développement |===

== Créer une instance et exploiter le parc

Une instance par dossier : une base, une URL <dossier>.<domaine> (ADR-001 D2).

[source,sh]

bin/partiduo-provision --name "Exemple SARL" --regime fr
--modules accounting,invoicing --with skel exemple-sarl

crée la base, applique les migrations, enregistre la société et charge le jeu de données initial du régime, puis génère environnement, vhost nginx et unité systemd dans tmp/instances/exemple-sarl/ (sans les installer). deploy/bin/partiduo-fleet outille le parc (montée de version progressive, sauvegardes, retour arrière) : voir link:deploy/README.adoc[] et, pour le contrat, link:doc/api/core-settings.adoc[].

== Contrat Partiduo::Api

Référence par domaine (AsciiDoc) :

  • link:doc/api/accounting-closing.adoc[]
  • link:doc/api/accounting-entries.adoc[]
  • link:doc/api/accounting-forecasts.adoc[]
  • link:doc/api/accounting-reconciliation.adoc[]
  • link:doc/api/accounting-reference.adoc[]
  • link:doc/api/accounting-reports.adoc[]
  • link:doc/api/analytic.adoc[]
  • link:doc/api/auth.adoc[]
  • link:doc/api/core-settings.adoc[]
  • link:doc/api/followup.adoc[]
  • link:doc/api/invoicing.adoc[]
  • link:doc/api/modules.adoc[]
  • link:doc/api/socle-referentiel.adoc[]
  • link:doc/api/stock.adoc[]
  • link:doc/api/vat-returns.adoc[]

== Tests

[source,sh]

createdb --encoding=UTF8 partiduo_test crystal spec # tous les modules actifs PARTIDUO_MODULES=invoicing crystal spec # une configuration scripts/specs-modules.sh # les trois configurations de l'ADR-006 D7

Les specs reconstruisent le schéma de la base de test par les migrations à chaque exécution ; le nom de la base doit contenir test.

Contrôles de la CI (.github/workflows/ci.yml) :

[source,sh]

crystal tool format --check src spec config scripts manage.cr ameba crystal run scripts/interface_boundary.cr -- src # garde-fou ADR-005 D3

== Licence

AGPL-3.0-or-later — texte intégral dans link:LICENSE[].

Partiduo est une œuvre dérivée de NOALYSS (© Dany De Bontridder), publié sous GPL v2 « ou toute version ultérieure » : cette clause permet de reprendre son code sous GPL v3, compatible avec l'AGPL v3. Chaque fichier source commence par # SPDX-License-Identifier: AGPL-3.0-or-later.

Repository

partiduo-app

Owner
Statistic
  • 0
  • 0
  • 0
  • 0
  • 3
  • about 3 hours ago
  • September 27, 2026
License

GNU Affero General Public License v3.0

Links
Synced at

Sun, 27 Sep 2026 19:02:33 GMT

Languages