Une application Dodock est un package Python qui étend le framework. Elle s'installe dans le dossier apps/ du bench.
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
| Dossier | Contenu |
|---|---|
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) |
| Fichier | Rôle |
|---|---|
requirements.txt | Dépendances Python (pip) |
package.json | Dépendances Node.js pour les assets frontend (optionnel) |
setup.py | Configuration du package Python pour l'installation |
MANIFEST.in | Liste des fichiers à inclure dans le package distribué |
license.txt | Licence de l'application |
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"]
Liste des modules de l'application, un par ligne. Chaque module correspond à un dossier contenant des DocTypes et rapports.
Mon Module
Autre Module
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
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
| Fichier | Rôle |
|---|---|
.json | Schéma du DocType : champs, options, permissions |
.py | Logique métier côté serveur (validation, événements) |
.js | Comportement de l'interface utilisateur |
_list.js | Personnalisation de la vue liste |
test_*.py | Tests automatisés |