Architecture

Structure d'une application

Organisation des fichiers et dossiers d'une application Dodock

Structure d'une application

Une application Dodock est un package Python qui étend le framework. Elle s'installe dans le dossier apps/ du bench.


Arborescence

mon_app/
├── mon_app/
│   ├── __init__.py
│   ├── hooks.py                  # Configuration et points d'extension
│   ├── modules.txt               # Liste des modules
│   ├── patches.txt               # Migrations de données
│   │
│   ├── templates/                # Templates Jinja (emails, impressions)
│   │   └── includes/
│   │
│   ├── www/                      # Pages du portail web public
│   │   └── ma_page.html
│   │
│   ├── public/                   # Assets statiques servis par le navigateur
│   │   ├── css/
│   │   ├── js/
│   │   └── images/
│   │
│   └── mon_module/               # Module métier
│       ├── __init__.py
│       ├── doctype/              # DocTypes du module
│       └── report/               # Rapports du module
│
├── pyproject.toml                # Dépendances Python
├── package.json                  # Dépendances Node.js (optionnel)
├── license.txt
├── MANIFEST.in
└── setup.py

Dossiers principaux

DossierContenu
templates/Templates Jinja pour emails, impressions PDF, snippets réutilisables
templates/includes/Fragments HTML réutilisables dans d'autres templates
www/Pages web publiques accessibles sans authentification
public/Fichiers statiques (CSS, JS, images) servis au navigateur
[module]/Module métier contenant DocTypes et rapports
[module]/doctype/Définitions et contrôleurs des DocTypes
[module]/report/Rapports personnalisés (script reports)

Fichiers à la racine

FichierRôle
requirements.txtDépendances Python (pip)
package.jsonDépendances Node.js pour les assets frontend (optionnel)
setup.pyConfiguration du package Python pour l'installation
MANIFEST.inListe des fichiers à inclure dans le package distribué
license.txtLicence de l'application

Fichiers de configuration

hooks.py

Point d'entrée de l'application. Contient les métadonnées et la configuration des extensions.

app_name = "mon_app"
app_title = "Mon Application"
app_publisher = "Mon Entreprise"
app_version = "1.0.0"

required_apps = ["dodock"]

modules.txt

Liste des modules de l'application, un par ligne. Chaque module correspond à un dossier contenant des DocTypes et rapports.

Mon Module
Autre Module

patches.txt

Liste des migrations de données à exécuter lors des mises à jour.

mon_app.patches.v1_0.migration_initiale
mon_app.patches.v1_1.ajouter_champ

Structure d'un DocType

Chaque DocType possède son propre dossier :

mon_doctype/
├── mon_doctype.json      # Définition (champs, permissions)
├── mon_doctype.py        # Contrôleur Python
├── mon_doctype.js        # Script client
├── mon_doctype_list.js   # Vue liste (optionnel)
└── test_mon_doctype.py   # Tests unitaires
FichierRôle
.jsonSchéma du DocType : champs, options, permissions
.pyLogique métier côté serveur (validation, événements)
.jsComportement de l'interface utilisateur
_list.jsPersonnalisation de la vue liste
test_*.pyTests automatisés

Pour aller plus loin

Modèle de données

DocTypes, Documents et métadonnées

Hooks

Points d'extension du framework

Personnalisations

Étendre les DocTypes existants