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 sont pris sur GitHub ; pour les copies de travail locales, voir <<_développement_local>>.

== 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 compile sa ligne de commande à l'installation (voir DECISIONS).

== Développement local

shard.yml et shard.lock référencent les shards maison sur GitHub (aloli-crystal/* et aloli-partiduo/*), suivis par branche. Le verrou versionné ne contient aucune dépendance path: : les ports FreeBSD et la CI l'exigent.

Pour travailler sur les copies de travail voisines (../../prod-crystal/<nom> et ../partiduo-<dépôt>), lancer :

[source,sh]

scripts/override-local.sh

Le script génère un shard.override.yml local et non versionné (ignoré par git), installe les shards, puis remet shard.lock à son état versionné. Une copie de travail absente reste prise sur GitHub.

Pour régénérer le verrou versionné, supprimer d'abord l'override local :

[source,sh]

rm -f shard.override.yml SKIP_MARTEN_CLI_PRECOMPILATION=1 shards update scripts/override-local.sh # retour au mode local

== 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, vhosts nginx, unité systemd et commandes d'installation (certificat Let's Encrypt de l'instance compris) 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[].

L'exécutant de partiduo-admin (ADR-008 D4) pilote une instance par partiduo-manage instance <action> : état et version, migrations, activation des modules et extensions, lecture seule, réémission de l'invitation d'administrateur, préparation de sauvegarde. Réponse JSON, codes de sortie normalisés, contrat versionné : link:doc/api/instance-cli.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/liberal.adoc[]
  • link:doc/api/micro.adoc[]
  • link:doc/api/modules.adoc[]
  • link:doc/api/outils.adoc[] (imports CSV de fiches et du plan comptable, archive des pièces)
  • 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 # configurations de l'ADR-006 D7 et de l'ADR-007

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
  • 3
  • 12
  • about 2 hours ago
  • September 27, 2026
License

GNU Affero General Public License v3.0

Links
Synced at

Mon, 12 Oct 2026 16:29:02 GMT

Languages