[{"data":1,"prerenderedAt":167},["ShallowReactive",2],{"\u002Fnext\u002Fdodock\u002Fressources\u002Fcustom-app":3,"section:\u002Fnext\u002Fdodock\u002Fressources\u002Fcustom-app":166},{"id":4,"title":5,"body":6,"description":154,"extension":155,"meta":156,"navigation":157,"path":162,"seo":163,"stem":164,"__hash__":165},"docs\u002F2.next\u002F3.dodock\u002F14.ressources\u002F4.custom-app\u002F0.index.md","Applications personnalisées",{"type":7,"value":8,"toc":148},"minimark",[9,13,22,27,96,111,115,126,130,144],[10,11,5],"h1",{"id":12},"applications-personnalisées",[14,15,16,17,21],"p",{},"Une application personnalisée contient votre code : types de document, scripts, hooks, champs personnalisés. Elle se met à jour avec ",[18,19,20],"code",{},"git"," et s'installe sur plusieurs sites. Utilisez-la quand une personnalisation par l'interface ne suffit pas ou doit être identique sur plusieurs sites (développement, recette, production).",[23,24,26],"h2",{"id":25},"créer-une-application","Créer une application",[28,29,30,59,62],"ol",{},[31,32,33,34],"li",{},"Dans le dossier du bench, lancez :",[35,36,41],"pre",{"className":37,"code":38,"language":39,"meta":40,"style":40},"language-sh shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","bench new-app mon_app\n","sh","",[18,42,43],{"__ignoreMap":40},[44,45,48,52,56],"span",{"class":46,"line":47},"line",1,[44,49,51],{"class":50},"sBMFI","bench",[44,53,55],{"class":54},"sfazB"," new-app",[44,57,58],{"class":54}," mon_app\n",[31,60,61],{},"Répondez aux questions : titre, description, éditeur, e-mail, licence, création d'une action GitHub pour les tests, nom de la branche.",[31,63,64,65],{},"Installez l'application sur un site :",[35,66,68],{"className":37,"code":67,"language":39,"meta":40,"style":40},"bench --site \u003Cmon-site> install-app mon_app\n",[18,69,70],{"__ignoreMap":40},[44,71,72,74,77,81,84,88,91,94],{"class":46,"line":47},[44,73,51],{"class":50},[44,75,76],{"class":54}," --site",[44,78,80],{"class":79},"sMK4o"," \u003C",[44,82,83],{"class":54},"mon-sit",[44,85,87],{"class":86},"sTEyZ","e",[44,89,90],{"class":79},">",[44,92,93],{"class":54}," install-app",[44,95,58],{"class":54},[14,97,98,99,102,103,106,107,110],{},"La commande crée le dossier ",[18,100,101],{},"apps\u002Fmon_app"," avec le fichier ",[18,104,105],{},"hooks.py",", le fichier ",[18,108,109],{},"modules.txt"," et un premier module.",[23,112,114],{"id":113},"pages-de-cette-section","Pages de cette section",[116,117,118],"ul",{},[31,119,120,125],{},[121,122,124],"a",{"href":123},"\u002Fnext\u002Fdodock\u002Fressources\u002Fcustom-app\u002Fcustom-fields","Champs additionnels"," : créer des champs personnalisés et des « Property Setter » depuis le code.",[23,127,129],{"id":128},"voir-aussi","Voir aussi",[116,131,132,138],{},[31,133,134],{},[121,135,137],{"href":136},"\u002Fnext\u002Fdodock\u002Fdeveloppeurs\u002Farchitecture\u002Fstructure-application","Structure d'une application",[31,139,140],{},[121,141,143],{"href":142},"\u002Fnext\u002Fdodock\u002Fdeveloppeurs\u002Fhooks","Référence des hooks",[145,146,147],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}",{"title":40,"searchDepth":47,"depth":149,"links":150},2,[151,152,153],{"id":25,"depth":149,"text":26},{"id":113,"depth":149,"text":114},{"id":128,"depth":149,"text":129},"Créer une application personnalisée pour étendre Dodock : structure, installation et livraison de champs personnalisés par le code.","md",{"reviewed":157,"last_verified":158,"sources":159},true,"2026-11-03",[160,161],"bench:bench\u002Fcommands\u002Fmake.py","dodock@develop:frappe\u002Futils\u002Fboilerplate.py","\u002Fnext\u002Fdodock\u002Fressources\u002Fcustom-app",{"title":5,"description":154},"2.next\u002F3.dodock\u002F14.ressources\u002F4.custom-app\u002F0.index","Hl9j1fP2N2Jv8gpm4uItQ8cWZPyZbkPCSQppi45aHjs",{},1794701639629]