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
|
||||
- **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 <votre-repo>
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user