maj README
This commit is contained in:
198
README.md
198
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
|
- **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
|
||||||
|
|||||||
Reference in New Issue
Block a user