# 🚀 Guide de DĂ©marrage - Frontend E-Voting ## 📋 PrĂ©requis - Node.js 14+ installĂ© - npm ou yarn - Backend E-Voting en cours d'exĂ©cution sur `http://localhost:8000` - Git (optionnel) ## 🎯 Installation Rapide ### 1. Installation des dĂ©pendances ```bash cd frontend npm install ``` ### 2. Configuration de l'environnement CrĂ©ez un fichier `.env` basĂ© sur `.env.example`: ```bash cp .env.example .env ``` Modifiez `.env` si nĂ©cessaire: ``` REACT_APP_API_URL=http://localhost:8000 REACT_APP_ENV=development REACT_APP_DEBUG_MODE=true ``` ### 3. DĂ©marrage du serveur ```bash npm start ``` L'application s'ouvrira automatiquement sur `http://localhost:3000` ## 📁 Structure du Projet ``` frontend/ ├── src/ │ ├── components/ # Composants rĂ©utilisables │ ├── pages/ # Pages de l'application │ ├── styles/ # Styles globaux │ ├── config/ # Configuration (thĂšme, etc.) │ ├── utils/ # Utilitaires (API, etc.) │ ├── hooks/ # Hooks personnalisĂ©s │ ├── App.js # Application principale │ └── index.js # Point d'entrĂ©e ├── public/ # Fichiers statiques ├── package.json # DĂ©pendances └── .env # Variables d'environnement ``` ## 🎹 Personnalisation du Design ### Couleurs Les couleurs sont dĂ©finies dans `src/styles/globals.css`: ```css :root { --primary-dark: #1e3a5f; --primary-blue: #2563eb; --success-green: #10b981; --warning-orange: #f97316; --danger-red: #ef4444; /* ... */ } ``` Pour modifier: 1. Ouvrez `src/styles/globals.css` 2. Changez les valeurs des variables CSS ### Fonts Modifiez dans `src/styles/globals.css`: ```css --font-primary: "Inter", "Segoe UI", "Roboto", sans-serif; ``` ### Espacements et Radius Ils sont aussi en variables CSS. Modifiez-les globalement pour changer tout le design. ## 🔄 Navigation ### Pages Publiques - **`/`** - Accueil - **`/login`** - Connexion - **`/register`** - Inscription - **`/archives`** - Votes terminĂ©s ### Pages PrivĂ©es (aprĂšs connexion) - **`/dashboard`** - Tableau de bord - **`/vote/:id`** - Page de vote - **`/profile`** - Profil utilisateur ## 🔌 IntĂ©gration Backend ### Configuration de l'API Modifiez l'URL de l'API dans `src/utils/api.js`: ```javascript const API_URL = process.env.REACT_APP_API_URL || 'http://localhost:8000'; ``` ### Exemples d'Appels API ```javascript import { APIClient } from './utils/api'; // Connexion const data = await APIClient.login('user@example.com', 'password'); // RĂ©cupĂ©rer les votes const votes = await APIClient.getElections(); // Voter const result = await APIClient.submitVote(electionId, 'Oui'); ``` ## đŸ§Ș Tests ```bash # Lancer les tests npm test # Tests avec couverture npm test -- --coverage # Tests en mode watch npm test -- --watch ``` ## đŸ—ïž Build pour Production ```bash # CrĂ©er un build optimisĂ© npm run build # Le build sera créé dans le dossier `build/` ``` ## 🐛 Debugging ### Console du Navigateur 1. Ouvrez DevTools: `F12` ou `Ctrl+Shift+I` (Windows/Linux) / `Cmd+Option+I` (Mac) 2. Allez Ă  l'onglet "Console" 3. VĂ©rifiez les erreurs ### React DevTools Installez l'extension [React DevTools](https://react-devtools-tutorial.vercel.app/) pour votre navigateur. ### Redux DevTools (optionnel) Si vous utilisez Redux, installez [Redux DevTools](https://github.com/reduxjs/redux-devtools). ## đŸ“± Responsive Design Le design est optimisĂ© pour: - **Desktop**: 1024px+ - **Tablet**: 768px - 1024px - **Mobile**: < 768px Testez sur mobile: 1. Ouvrez DevTools (`F12`) 2. Cliquez sur l'icĂŽne "Toggle device toolbar" 3. SĂ©lectionnez un appareil mobile ## ⚡ Performance ### Optimisation des Images Utilisez des images compressĂ©es. Outils recommandĂ©s: - TinyPNG - ImageOptim - GIMP ### Code Splitting DĂ©jĂ  implĂ©mentĂ© avec `React.lazy()` et `Suspense`. ### Caching Le navigateur cache automatiquement les fichiers statiques. Pour forcer un refresh: `Ctrl+Shift+R` (Windows/Linux) / `Cmd+Shift+R` (Mac) ## 🔒 SĂ©curitĂ© ### Authentification - Le token JWT est stockĂ© dans localStorage - À inclure dans le header `Authorization` pour les requĂȘtes privĂ©es - StockĂ© automatiquement aprĂšs la connexion ### Validation des DonnĂ©es Tous les formulaires sont validĂ©s cĂŽtĂ© client: - Email valide - Mot de passe minimum 8 caractĂšres - Confirmation de mot de passe ### HTTPS en Production Assurez-vous d'utiliser HTTPS en production pour sĂ©curiser les donnĂ©es. ## 🌍 Internationalisation (i18n) Pour ajouter plusieurs langues: 1. Installez `i18next`: ```bash npm install i18next i18next-react-backend i18next-browser-languagedetector ``` 2. CrĂ©ez des fichiers de traduction dans `src/locales/` 3. Configurez i18next dans `src/i18n.js` ## 📩 DĂ©ploiement ### GitHub Pages ```bash # Ajouter dans package.json: "homepage": "https://yourusername.github.io/e-voting-system", # Build et dĂ©ployer npm run build npm install gh-pages npm run deploy ``` ### Vercel ```bash # Installez Vercel CLI npm i -g vercel # DĂ©ployez vercel ``` ### AWS S3 + CloudFront 1. Build: `npm run build` 2. Upload le dossier `build/` vers S3 3. Configurez CloudFront pour servir le contenu ### Docker ```bash # CrĂ©ez un Dockerfile FROM node:16 WORKDIR /app COPY package*.json ./ RUN npm install COPY . . RUN npm run build EXPOSE 3000 CMD ["npm", "start"] # Build et run docker build -t evoting-frontend . docker run -p 3000:3000 evoting-frontend ``` ## 🆘 DĂ©pannage Commun ### "Cannot find module" ```bash # Supprimez node_modules et rĂ©installez rm -rf node_modules package-lock.json npm install ``` ### Port 3000 dĂ©jĂ  utilisĂ© ```bash # Utilisez un autre port PORT=3001 npm start ``` ### Erreur CORS avec le backend Assurez-vous que le backend a CORS activĂ© pour `http://localhost:3000` ### Connexion refusĂ©e au backend VĂ©rifiez que le backend fonctionne sur `http://localhost:8000`: ```bash curl http://localhost:8000/health ``` ## 📚 Ressources SupplĂ©mentaires - [Documentation React](https://react.dev) - [React Router](https://reactrouter.com) - [JavaScript Moderne (ES6+)](https://es6.io) - [CSS Flexbox Guide](https://css-tricks.com/snippets/css/a-guide-to-flexbox/) - [CSS Grid Guide](https://css-tricks.com/snippets/css/complete-guide-grid/) ## 📞 Support Pour des questions ou des problĂšmes: 1. Consultez la [documentation](./README_FRONTEND.md) 2. VĂ©rifiez les logs de la console 3. Ouvrez une issue sur GitHub ## ✅ Checklist de DĂ©ploiement - [ ] VĂ©rifier les variables d'environnement - [ ] Tester toutes les pages - [ ] Tester sur mobile - [ ] VĂ©rifier les performances (npm run build) - [ ] VĂ©rifier la sĂ©curitĂ© (pas de donnĂ©es sensibles dans le code) - [ ] Tester l'authentification - [ ] Tester tous les formulaires - [ ] VĂ©rifier les logs d'erreur - [ ] Mettre Ă  jour le domaine dans la config - [ ] DĂ©ployer sur le serveur --- **Bonne chance! 🎉**