maj README

This commit is contained in:
Yannick Le Duc
2025-09-16 16:55:27 +02:00
parent 17deb72834
commit bfda5d3015

198
README.md
View File

@@ -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 - **HTML responsive** : Emails avec design moderne et boutons d'action
- **Gestion d'erreurs** : Messages d'erreur détaillés pour les problèmes SMTP - **Gestion d'erreurs** : Messages d'erreur détaillés pour les problèmes SMTP
#### 📊 **Export des données** #### 📊 **Export des données avancé**
- **Export ODS** : Export des statistiques de vote en format tableur - **Formats multiples** : ODS (OpenDocument), CSV, XLS (Microsoft Excel)
- **Format LibreOffice** : Compatible avec LibreOffice Calc, OpenOffice, 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 - **Données complètes** : Toutes les propositions, participants et votes
- **Totaux automatiques** : Calculs des totaux par ligne et colonne - **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** #### 🎨 **Interface moderne**
- **Shadcn/ui** : Composants modernes et accessibles - **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 - **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é - **Interface d'envoi d'emails** : Modales dédiées pour l'envoi personnalisé
- **Suivi des envois** : Indicateurs de progression pour les envois en masse - **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 ## 🛠️ 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+ - Node.js 18+
- npm ou yarn - npm ou yarn
- Compte Supabase - Compte Supabase
### 1. Cloner le projet #### 1. Cloner et installer
```bash ```bash
git clone <votre-repo> git clone <votre-repo>
cd mes-budgets-participatifs cd mes-budgets-participatifs
```
### 2. Installer les dépendances
```bash
npm install npm install
``` ```
### 3. Configuration Supabase #### 2. Lancer l'assistant de configuration
#### 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
```bash ```bash
npm run dev 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 ```bash
# Lancer les tests fonctionnels # Lancer les tests fonctionnels
npm run test:working npm run test:working
@@ -242,96 +227,12 @@ npm run test:coverage
- `category`: Catégorie (email, general, etc.) - `category`: Catégorie (email, general, etc.)
- `description`: Description de la configuration - `description`: Description de la configuration
### Table `admin_users` ### Table `user_permissions`
- `user_id`: Référence vers l'utilisateur Supabase - `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 - `created_at`: Date de création
- `updated_at`: Date de dernière modification
## 🚀 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
```
## 🔒 Sécurité ## 🔒 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](docs/TESTING.md)** - Guide complet des tests
- **[Tests - Résumé](docs/TESTING_SUMMARY.md)** - Résumé de la suite de 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 - **[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 - **[Architecture](docs/NEW-ARCHITECTURE.md)** - Nouvelle architecture simplifiée
- **[Structure du projet](docs/PROJECT-STRUCTURE.md)** - Organisation du code - **[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 - **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 - **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 - **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 - **Gestion d'erreurs améliorée** : Messages d'erreur détaillés pour SMTP
- **HTML responsive** : Emails avec design moderne et boutons d'action - **HTML responsive** : Emails avec design moderne et boutons d'action