diff --git a/README.md b/README.md index da1d0d7..23f2fad 100644 --- a/README.md +++ b/README.md @@ -85,11 +85,18 @@ Une application web moderne et éthique pour gérer des campagnes de budgets par - **HTML responsive** : Emails avec design moderne et boutons d'action - **Gestion d'erreurs** : Messages d'erreur détaillés pour les problèmes SMTP -#### 📊 **Export des données** -- **Export ODS** : Export des statistiques de vote en format tableur -- **Format LibreOffice** : Compatible avec LibreOffice Calc, OpenOffice, Excel +#### 📊 **Export des données avancé** +- **Formats multiples** : ODS (OpenDocument), CSV, XLS (Microsoft Excel) +- **Export des statistiques** : Matrice complète des votes avec 6 onglets de tri +- **Export des propositions** : Liste détaillée des propositions par campagne +- **Anonymisation RGPD** : 3 niveaux de protection des données personnelles + - **Anonymisation complète** : Noms remplacés par "XXXX" (recommandé) + - **Initiales uniquement** : Premières lettres des noms/prénoms + - **Aucune anonymisation** : Noms complets (avec avertissement RGPD) - **Données complètes** : Toutes les propositions, participants et votes - **Totaux automatiques** : Calculs des totaux par ligne et colonne +- **Formatage professionnel** : En-têtes, bordures, colonnes dimensionnées +- **Configuration centralisée** : Paramètres d'export dans l'interface admin #### 🎨 **Interface moderne** - **Shadcn/ui** : Composants modernes et accessibles @@ -114,78 +121,56 @@ Une application web moderne et éthique pour gérer des campagnes de budgets par - **Footer dynamique** : Messages de pied de page avec liens cliquables vers le projet - **Interface d'envoi d'emails** : Modales dédiées pour l'envoi personnalisé - **Suivi des envois** : Indicateurs de progression pour les envois en masse +- **Export multi-formats** : ODS, CSV, XLS avec configuration centralisée +- **Anonymisation configurable** : Protection RGPD avec 3 niveaux de sécurité +- **Export des propositions** : Export séparé des propositions par campagne +- **Formatage professionnel** : Exports avec mise en forme et totaux automatiques ## 🛠️ Installation -### Prérequis +### 🚀 **Installation simplifiée (recommandée)** + +L'application dispose d'un **assistant de configuration automatique** qui guide pas à pas l'installation complète. + +#### Prérequis - Node.js 18+ - npm ou yarn - Compte Supabase -### 1. Cloner le projet +#### 1. Cloner et installer ```bash git clone cd mes-budgets-participatifs -``` - -### 2. Installer les dépendances -```bash npm install ``` -### 3. Configuration Supabase - -#### Créer un projet Supabase -1. Allez sur [supabase.com](https://supabase.com) -2. Créez un nouveau projet -3. Notez votre URL et vos clés - -#### Configurer la base de données -1. Dans votre projet Supabase, allez dans l'éditeur SQL -2. Copiez et exécutez le contenu du fichier `database/supabase-schema.sql` - -#### Configurer l'authentification -1. Dans Supabase Dashboard > Authentication > Settings -2. Activez l'authentification par email -3. Désactivez "Enable email confirmations" pour les administrateurs -4. Créez les utilisateurs dans Authentication > Users -5. Ajoutez les administrateurs dans la table `admin_users` via l'éditeur SQL - -#### Configurer les variables d'environnement -Créez un fichier `.env.local` à la racine du projet : - -```env -# Configuration Supabase (obligatoire) -NEXT_PUBLIC_SUPABASE_URL=votre_url_supabase -NEXT_PUBLIC_SUPABASE_ANON_KEY=votre_cle_anon_supabase -SUPABASE_SERVICE_ROLE_KEY=votre_cle_service_supabase -``` - -**⚠️ Important :** La `SUPABASE_SERVICE_ROLE_KEY` est **obligatoire** pour les opérations d'administration. Elle permet d'effectuer des opérations privilégiées côté serveur (création d'utilisateurs, gestion des campagnes, etc.). - -### 4. Configuration des administrateurs -1. **Créez les utilisateurs** dans Supabase Dashboard > Authentication > Users -2. **Ajoutez les administrateurs** dans la table `admin_users` via l'éditeur SQL : - ```sql - INSERT INTO admin_users (user_id, role) - VALUES ('votre_user_id', 'admin'); - ``` -3. **Connectez-vous** avec les identifiants créés - -### 5. Configuration email (optionnelle) -Une fois connecté à l'administration, vous pouvez configurer les paramètres SMTP via l'interface : -1. Allez dans **Paramètres** > **Configuration SMTP** -2. Renseignez vos paramètres de serveur SMTP -3. Testez la configuration - -### 6. Lancer l'application +#### 2. Lancer l'assistant de configuration ```bash npm run dev ``` -L'application sera accessible sur `http://localhost:3000` +Puis accédez à `http://localhost:3000/setup` pour l'**assistant de configuration automatique**. -### 7. Tests (optionnel) +#### 3. Suivre l'assistant pas à pas +L'assistant vous guide automatiquement pour : +- ✅ **Configuration Supabase** : Création du projet et récupération des clés +- ✅ **Base de données** : Exécution automatique du schéma SQL +- ✅ **Authentification** : Configuration des utilisateurs admin +- ✅ **Variables d'environnement** : Génération automatique du fichier `.env.local` +- ✅ **Premier administrateur** : Création du compte admin initial +- ✅ **Test de connexion** : Vérification que tout fonctionne + +#### 4. Configuration email (optionnelle) +Une fois l'assistant terminé, connectez-vous à l'administration : +1. Allez dans **Paramètres** > **Configuration SMTP** +2. Renseignez vos paramètres de serveur SMTP +3. Testez la configuration + +### 📚 **Installation manuelle (avancée)** + +Si vous préférez une installation manuelle, consultez le [Guide de configuration détaillé](docs/SETUP.md). + +### 🧪 **Tests (optionnel)** ```bash # Lancer les tests fonctionnels npm run test:working @@ -242,96 +227,12 @@ npm run test:coverage - `category`: Catégorie (email, general, etc.) - `description`: Description de la configuration -### Table `admin_users` +### Table `user_permissions` - `user_id`: Référence vers l'utilisateur Supabase -- `role`: Rôle (admin, super_admin) +- `is_admin`: Booléen indiquant si l'utilisateur est administrateur +- `is_super_admin`: Booléen indiquant si l'utilisateur est super administrateur - `created_at`: Date de création - -## 🚀 Déploiement - -### Solutions éthiques et libres (recommandées) - -#### 🇫🇷 **Hébergement en France - Solutions éthiques** - -##### 1. **OVHcloud** (Lyon, France) -- **Avantages** : Hébergeur français, RGPD compliant, prix compétitifs -- **Déploiement** : VPS ou Cloud avec Docker -- **Prix** : À partir de 3,50€/mois -- **Site** : [ovhcloud.com](https://ovhcloud.com) - -##### 2. **Scaleway** (Paris, France) -- **Avantages** : Cloud français, éco-responsable, API complète -- **Déploiement** : App Platform ou VPS -- **Prix** : À partir de 2,99€/mois -- **Site** : [scaleway.com](https://scaleway.com) - -##### 3. **Clever Cloud** (Nantes, France) -- **Avantages** : PaaS français, déploiement automatique, support français -- **Déploiement** : Platform as a Service -- **Prix** : À partir de 7€/mois -- **Site** : [clever-cloud.com](https://clever-cloud.com) - -##### 4. **AlwaysData** (Paris, France) -- **Avantages** : Hébergeur français, support Next.js, éco-responsable -- **Déploiement** : Hosting avec déploiement Git -- **Prix** : À partir de 5€/mois -- **Site** : [alwaysdata.com](https://alwaysdata.com) - -#### 🌍 **Autres solutions possibles** (liste non exhaustive) - -##### 5. **Render** (États-Unis) -- **Avantages** : Déploiement automatique, base de données PostgreSQL -- **Déploiement** : Connectez votre repo Git -- **Prix** : Gratuit pour les projets personnels, puis 7$/mois -- **Site** : [render.com](https://render.com) - -##### 6. **Railway** (États-Unis) -- **Avantages** : Déploiement simple, base de données incluse, éthique -- **Déploiement** : Connectez votre repo Git -- **Prix** : 5$/mois (plus de gratuité pour l'open source) -- **Site** : [railway.app](https://railway.app) - -##### 7. **Vercel** (États-Unis) -- **Avantages** : Optimisé pour Next.js, déploiement automatique, gratuit pour l'open source -- **Déploiement** : Connectez votre repo Git -- **Prix** : Gratuit pour les projets personnels et open source -- **Site** : [vercel.com](https://vercel.com) - -##### 8. **Netlify** (États-Unis) -- **Avantages** : Interface simple, déploiement automatique, généreux pour l'open source -- **Déploiement** : Connectez votre repo Git -- **Prix** : Gratuit pour les projets personnels et open source -- **Site** : [netlify.com](https://netlify.com) - -##### 9. **DigitalOcean App Platform** (États-Unis) -- **Avantages** : Déploiement simple, base de données gérée -- **Déploiement** : Interface graphique simple -- **Prix** : À partir de 5$/mois -- **Site** : [digitalocean.com](https://digitalocean.com) - -### Configuration du déploiement - -#### Variables d'environnement de production -```env -# Configuration Supabase (obligatoire) -NEXT_PUBLIC_SUPABASE_URL=votre_url_supabase_production -NEXT_PUBLIC_SUPABASE_ANON_KEY=votre_cle_anon_supabase_production -SUPABASE_SERVICE_ROLE_KEY=votre_cle_service_supabase_production -``` - -#### Commandes de build -```bash -# Installation des dépendances -npm install - -# Build de production -npm run build - -# Démarrage en production -npm start -``` - - +- `updated_at`: Date de dernière modification ## 🔒 Sécurité @@ -423,7 +324,7 @@ Pour une documentation complète, consultez le dossier [docs/](docs/) : - **[Tests](docs/TESTING.md)** - Guide complet des tests - **[Tests - Résumé](docs/TESTING_SUMMARY.md)** - Résumé de la suite de tests - **[Tests - Démarrage rapide](docs/README-TESTS.md)** - Démarrage rapide des tests -- **[Export ODS](docs/EXPORT-FEATURE.md)** - Fonctionnalité d'export des statistiques +- **[Export avancé](docs/EXPORT-FEATURE.md)** - Fonctionnalités d'export multi-formats et anonymisation - **[Architecture](docs/NEW-ARCHITECTURE.md)** - Nouvelle architecture simplifiée - **[Structure du projet](docs/PROJECT-STRUCTURE.md)** - Organisation du code @@ -475,6 +376,9 @@ Cette application est développée avec des valeurs éthiques : - **Système d'email avancé** : Envoi personnalisé avec templates et placeholders - **Interface d'envoi d'emails** : Modales dédiées pour l'envoi individuel et en masse - **Footer personnalisable** : Messages de pied de page avec liens cliquables -- **Tests étendus** : Couverture complète des fonctionnalités email +- **Export multi-formats** : Support ODS, CSV, XLS avec configuration centralisée +- **Anonymisation RGPD** : 3 niveaux de protection des données personnelles +- **Export des propositions** : Export séparé des propositions par campagne +- **Tests étendus** : Couverture complète des fonctionnalités email et export - **Gestion d'erreurs améliorée** : Messages d'erreur détaillés pour SMTP - **HTML responsive** : Emails avec design moderne et boutons d'action