Générateur CDC est une application web Laravel permettant de créer et gérer des Cahiers des Charges (CDC) pour les projets de qualification professionnelle. L'application génère automatiquement des documents Word formatés à partir de formulaires personnalisables.
- 📝 Création de formulaires dynamiques avec support Markdown
- 📄 Génération automatique de CDC au format Word (.docx)
- 👥 Gestion des utilisateurs avec système de rôles et permissions (Spatie)
- 🔐 4 niveaux d'accès : Super Admin, Admin, Formateur, Utilisateur
- 📊 Dashboard avec vue d'ensemble des CDC et formulaires
- 🎨 Interface moderne avec Tailwind CSS et Alpine.js
- Backend : Laravel 12.x (PHP 8.2+)
- Frontend : Tailwind CSS 3.x, Alpine.js 3.x, Vite
- Base de données : PostgreSQL
- Génération de documents : PHPWord
- Permissions : Spatie Laravel Permission
- Markdown : League CommonMark
Avant de commencer, assurez-vous d'avoir installé :
- PHP >= 8.2
- Composer >= 2.x
- Node.js >= 18.x et npm
- PostgreSQL >= 14.x
- Git
php -v
composer -V
node -v
npm -v
psql --versiongit clone <URL_DU_REPO>
cd generateur-cdccomposer installnpm installcp .env.example .envphp artisan key:generateOuvrez le fichier .env et modifiez les paramètres suivants :
APP_NAME="Générateur CDC"
APP_ENV=local
APP_DEBUG=true
APP_URL=http://localhost:8000
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=generateur_cdc
DB_USERNAME=votre_utilisateur_postgres
DB_PASSWORD=votre_mot_de_passe_postgres
SESSION_DRIVER=database
QUEUE_CONNECTION=database
CACHE_STORE=databaseConnectez-vous à PostgreSQL :
psql -U postgresCréez la base de données :
CREATE DATABASE generateur_cdc;
\qphp artisan storage:linkphp artisan migratephp artisan db:seedCette commande va créer :
- Les rôles :
super-admin,admin,formateur,user - Les permissions pour CDC, formulaires, utilisateurs, etc.
- 4 utilisateurs de test (voir tableau ci-dessous)
| Rôle | Mot de passe | Permissions | |
|---|---|---|---|
superadmin@cdcs.com |
Super Admin | password123 |
Accès total |
admin@cdcs.com |
Admin | password123 |
Gestion complète sauf certains paramètres système |
formateur@cdcs.com |
Formateur | password123 |
Créer/Éditer des formulaires et CDC |
user@cdcs.com |
User | password123 |
Consulter et exporter des CDC |
composer devCette commande lance automatiquement :
- Serveur Laravel (
php artisan serve) - Queue worker (
php artisan queue:listen) - Logs en temps réel (
php artisan pail) - Vite dev server (
npm run dev)
php artisan servenpm run devphp artisan queue:workUne fois les serveurs lancés, ouvrez votre navigateur :
http://localhost:8000
Connectez-vous avec l'un des comptes de test ci-dessus.
generateur-cdc/
├── app/
│ ├── Http/
│ │ ├── Controllers/
│ │ │ ├── CdcController.php # Gestion des CDC
│ │ │ ├── FormController.php # Gestion des formulaires
│ │ │ └── Admin/
│ │ │ └── UserController.php # Gestion des utilisateurs
│ │ └── Middleware/
│ ├── Models/
│ │ ├── Cdc.php # Modèle CDC
│ │ ├── Form.php # Modèle Formulaire
│ │ └── User.php # Modèle Utilisateur
│ ├── Services/
│ │ └── CdcPhpWordGenerator.php # Générateur Word
│ └── Helpers/
│ └── RoleHelper.php # Helper pour les rôles
├── database/
│ ├── migrations/ # Migrations de la BDD
│ └── seeders/
│ └── RolePermissionSeeder.php # Seeder rôles & permissions
├── resources/
│ ├── views/
│ │ ├── forms/ # Vues formulaires
│ │ ├── admin/ # Vues admin
│ │ └── dashboard.blade.php # Dashboard principal
│ └── css/
│ └── app.css # Styles Tailwind
├── routes/
│ ├── web.php # Routes principales
│ └── auth.php # Routes authentification
├── storage/
│ └── app/
│ └── public/
│ └── cdcs/ # Documents CDC générés
├── .env.example # Template configuration
├── composer.json # Dépendances PHP
├── package.json # Dépendances Node.js
└── README.md # Ce fichier
| Rôle | Description | Permissions clés |
|---|---|---|
| Super Admin | Accès complet | Toutes les permissions |
| Admin | Administration | Gestion utilisateurs, CDC, formulaires, logs |
| Formateur | Gestionnaire de contenu | Créer/éditer formulaires et CDC |
| User | Utilisateur standard | Consulter et exporter CDC |
form.view- Voir les formulairesform.create- Créer un formulaireform.edit- Modifier un formulaireform.delete- Supprimer un formulaireform.publish- Publier un formulaire
user.view- Voir les utilisateursuser.create- Créer un utilisateuruser.edit- Modifier un utilisateuruser.delete- Supprimer un utilisateuruser.roles- Gérer les rôles
dashboard.view- Accéder au dashboardsettings.view/settings.edit- Paramètreslogs.view- Voir les logsbackup.create/backup.download- Sauvegardes
composer testou
php artisan testnpm run buildphp artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan optimizeAPP_ENV=production
APP_DEBUG=false
APP_URL=https://votre-domaine.comphp artisan cache:clear
composer dump-autoload
php artisan config:clearnpm run build
php artisan storage:linkVérifiez que PostgreSQL est démarré :
# Linux/Mac
sudo service postgresql status
# Windows
pg_ctl statusSupprimez et recréez la base de données :
php artisan migrate:fresh --seed- Connectez-vous en tant que Formateur ou Admin
- Allez dans Formulaires → Nouveau formulaire
- Remplissez les champs (support Markdown)
- Enregistrez
- Allez dans Nouveau CDC
- Sélectionnez un formulaire comme base
- Remplissez les informations du candidat, experts, etc.
- Cliquez sur Générer le CDC
- Le document Word se télécharge automatiquement
- Allez dans Admin → Utilisateurs
- Créez ou modifiez des utilisateurs
- Assignez des rôles
- Les permissions sont automatiquement appliquées
Par défaut, les CDC sont stockés dans storage/app/public/cdcs/.
Pour changer :
- Modifiez
.env:
FILESYSTEM_DISK=s3 # Pour AWS S3- Configurez les credentials AWS dans
.env
Modifiez le service CdcPhpWordGenerator.php :
app/Services/CdcPhpWordGenerator.phpModifiez le seeder :
database/seeders/RolePermissionSeeder.phpPuis relancez :
php artisan migrate:fresh --seed