Un clone de Google Forms développé avec Angular 19, offrant une interface moderne et intuitive pour créer et gérer des formulaires en ligne.
- ✅ Création et édition de formulaires
- ✅ 8 types de questions différents (texte court, texte long, choix multiple, cases à cocher, liste déroulante, nombre, date, email)
- ✅ Drag & drop pour réorganiser les questions
- ✅ Preview en temps réel
- ✅ Duplication de formulaires et questions
- ✅ Activation/désactivation des formulaires
- ✅ Interface de réponse responsive
- ✅ Validation en temps réel
- ✅ Barre de progression
- ✅ Support de l'authentification optionnelle
- ✅ Sauvegarde automatique des brouillons
- ✅ Vue résumé avec statistiques
- ✅ Vue individuelle pour parcourir les réponses
- ✅ Vue tableau pour une vision d'ensemble
- ✅ Export CSV des réponses
- ✅ Graphiques et visualisations
- ✅ Architecture modulaire et scalable
- ✅ Signals Angular pour la réactivité
- ✅ Guards pour la protection des routes
- ✅ Intercepteurs HTTP pour l'authentification
- ✅ Gestion centralisée des erreurs
- ✅ Animations fluides
- ✅ Design responsive
- Node.js (v18 ou supérieur)
- Angular CLI (v19)
- MongoDB (pour le backend)
- Un backend API compatible (FastAPI recommandé)
- Cloner le projet
git clone https://github.com/votre-username/angular-forms-clone.git
cd angular-forms-clone- Installer les dépendances
npm install- Configurer l'environnement
Modifier le fichier src/environments/environment.ts :
export const environment = {
production: false,
apiUrl: 'http://localhost:8000/api' // URL de votre API
};- Installer Angular CDK (pour le drag & drop)
npm install @angular/cdkng serveL'application sera accessible sur http://localhost:4200
ng build --configuration productionsrc/
├── app/
│ ├── core/ # Services singleton, guards, intercepteurs
│ │ ├── services/ # Services métier
│ │ ├── guards/ # Guards de navigation
│ │ ├── interceptors/ # Intercepteurs HTTP
│ │ └── models/ # Modèles TypeScript
│ │
│ ├── shared/ # Composants réutilisables
│ │ ├── components/ # Composants partagés
│ │ └── services/ # Services utilitaires
│ │
│ ├── features/ # Modules fonctionnels
│ │ ├── auth/ # Authentification
│ │ ├── dashboard/ # Tableau de bord
│ │ └── forms/ # Gestion des formulaires
│ │
│ └── layouts/ # Layouts de l'application
│
├── assets/
│ └── styles/ # Styles globaux CSS
│ ├── variables.css # Variables CSS
│ ├── animations.css # Animations
│ └── utilities.css # Classes utilitaires
│
└── environments/ # Configuration par environnement
L'application nécessite une API backend qui expose les endpoints suivants :
POST /api/auth/login- ConnexionPOST /api/auth/register- Inscription
GET /api/forms- Liste des formulairesGET /api/forms/:id- Détails d'un formulairePOST /api/forms- Créer un formulairePATCH /api/forms/:id- Modifier un formulaireDELETE /api/forms/:id- Supprimer un formulaire
GET /api/forms/:id/questions- Questions d'un formulairePOST /api/forms/:id/questions- Ajouter une questionPATCH /api/forms/:id/questions/:questionId- Modifier une questionDELETE /api/forms/:id/questions/:questionId- Supprimer une questionPOST /api/forms/:id/questions/reorder- Réordonner les questions
POST /api/forms/:id/submit- Soumettre une réponseGET /api/forms/:id/responses- Liste des réponsesGET /api/responses/:id- Détails d'une réponse
Les variables CSS sont définies dans src/assets/styles/variables.css. Vous pouvez personnaliser :
- Les couleurs primaires et secondaires
- Les espacements
- Les ombres
- Les border-radius
- Les breakpoints responsive
Les animations sont définies dans src/assets/styles/animations.css. Vous pouvez ajouter ou modifier les animations selon vos besoins.
ng testng e2eng build --configuration production- Copier le contenu du dossier
dist/sur votre serveur - Configurer votre serveur web (nginx, Apache) pour servir l'application
- S'assurer que toutes les routes redirigent vers
index.html(SPA)
server {
listen 80;
server_name example.com;
root /var/www/angular-forms;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
location /api {
proxy_pass http://backend-api:8000;
}
}- Fork le projet
- Créer une branche (
git checkout -b feature/AmazingFeature) - Commit les changements (
git commit -m 'Add some AmazingFeature') - Push sur la branche (
git push origin feature/AmazingFeature) - Ouvrir une Pull Request
Ce projet est sous licence MIT.
- Angular Team pour le framework
- Material Design pour les icônes
- Google Forms pour l'inspiration
Pour toute question ou suggestion, n'hésitez pas à ouvrir une issue sur GitHub.