# SmartBoot : Un squelette prêt à l'emploi SmartBoot génère la structure complète d'un module Dolibarr augmenté avec SmartMaker (front React + back PHP). Sources: https://inligit.fr/cap-rel/dolibarr/smartmaker/smartboot.git ## Installation ### Linux ``` git clone https://inligit.fr/cap-rel/dolibarr/smartmaker/smartboot.git && ./smartboot/setup.sh ``` ### Windows Le script PowerShell est en cours de finalisation. ``` git clone https://inligit.fr/cap-rel/dolibarr/smartmaker/smartboot.git && powershell ./smartboot/setup.ps1 ``` Puis suivez les étapes de l'assistant : ``` Is your project name Coucou ? [y/n] y ok on continue please wait during npm install depends ... it could take time :) ``` ## Structure générée Après installation, SmartBoot ajoute à votre module : ``` monmodule/ ├── mobile/ # Application React │ ├── index.html # Point d'entrée (manifest PWA dynamique) │ ├── vite.config.js # Configuration Vite + PWA │ ├── src/ │ │ ├── main.jsx # Point d'entrée React │ │ ├── App.jsx # Composant racine │ │ ├── appConfig.js # Configuration globale │ │ └── components/ │ │ ├── app/ │ │ │ ├── Provider/ # Provider SmartCommon │ │ │ └── Router/ # Routes de l'application │ │ ├── layouts/ │ │ │ ├── AnimationLayout/ # Transitions de pages │ │ │ ├── PagesLayout/ # Layout global (thème, scale) │ │ │ ├── PrivatePagesLayout/ # Guard authentification │ │ │ ├── PublicPagesLayout/ # Guard pages publiques │ │ │ ├── PostDeviceIdentificationLayout/ │ │ │ └── PreDeviceIdentificationLayout/ │ │ ├── pages/ │ │ │ ├── public/ # Pages sans auth (Login) │ │ │ └── private/ # Pages avec auth (Home) │ │ └── common/ │ │ └── AboutModal/ # Modal "À propos" avec MAJ PWA │ └── public/ │ └── locales/ # Fichiers de traduction ├── pwa/ # Build de production │ ├── api.php # Routeur API │ └── .htaccess # Redirection Apache ├── smartmaker-api/ │ ├── Controllers/ # Vos controllers PHP │ ├── dmGenericObject.php # Exemple de mapping Dolibarr │ └── HomeController.php # Controller d'exemple └── smartmaker-api-prepend.php # Initialisation SmartAuth ``` ## Manifest PWA dynamique SmartBoot configure automatiquement le manifest PWA de manière dynamique via SmartAuth. Le fichier ''index.html'' pointe vers ''api.php/manifest'' au lieu d'un fichier statique : ``` ``` Et dans ''vite.config.js'', le manifest statique est désactivé : ``` VitePWA({ // ... manifest: false, // Servi dynamiquement par SmartAuth }) ``` Voir [[:03_front:pwa|PWA]] pour la configuration des constantes Dolibarr. ## Layouts SmartBoot fournit un système de layouts pour gérer l'authentification et les animations : ^ Layout ^ Rôle ^ | ''PagesLayout'' | Layout global : applique le thème, le dark mode et le scale | | ''AnimationLayout'' | Gère les transitions animées entre pages (Framer Motion) | | ''PrivatePagesLayout'' | Redirige vers ''/login'' si non authentifié | | ''PublicPagesLayout'' | Redirige vers ''/'' si déjà authentifié | | ''PostDeviceIdentificationLayout'' | Redirige vers identification si device requis | | ''PreDeviceIdentificationLayout'' | Redirige vers ''/'' si device déjà identifié | ### Exemple de Router ``` import { Routes, Route } from 'react-router-dom'; import { PagesLayout, AnimationLayout, PrivatePagesLayout, PublicPagesLayout } from '../layouts'; export const Router = () => ( }> }> {/* Pages publiques */} }> } /> {/* Pages privées */} }> } /> } /> ); ``` ## AboutModal SmartBoot inclut un composant ''AboutModal'' avec vérification des mises à jour PWA : ``` import { AboutModal } from '../common/AboutModal'; const [showAbout, setShowAbout] = useState(false); setShowAbout(false)} appName="Mon Application" /> ``` Ce composant affiche : - Le nom de l'application - La version (depuis ''APP_VERSION'') - Un bouton pour vérifier et installer les mises à jour PWA ## Controller d'exemple SmartBoot génère un ''HomeController.php'' d'exemple avec un mapping ''dmGenericObject.php'' : ``` // smartmaker-api/HomeController.php class HomeController { public function index($arr = null) { global $db, $langs; $ret = [ 'statusCode' => 200, 'generic_message' => "", 'lastupdate' => "", 'home' => "", ]; return ([$ret, 200]); } } ``` ## Étapes suivantes Vous pouvez maintenant passer au développement : - [[:04_howto:devback|Développement PHP (back)]] - Routes et controllers - [[:04_howto:devfront|Développement React (front)]] - Interface utilisateur