6ad24b36dc0c1d2849f4c81431d4f480e6da076b
Mes Budgets Participatifs
Une application web moderne pour gérer des campagnes de budgets participatifs, permettant aux collectifs de décider collectivement de leurs dépenses budgétaires.
🚀 Technologies utilisées
- Frontend: Next.js 14 avec TypeScript et App Router
- Styling: Tailwind CSS + Headless UI
- Base de données: PostgreSQL via Supabase
- Authentification: Supabase Auth (prévu pour les futures versions)
- Icons: Heroicons
📋 Fonctionnalités
✅ Implémentées
- Page d'accueil avec présentation de l'application
- Interface d'administration pour gérer les campagnes
- Création de nouvelles campagnes avec tous les paramètres
- Ajout de propositions à une campagne
- Ajout de participants à une campagne
- Gestion des états de campagne (dépôt, vote, fermé)
- Interface moderne et responsive
🔄 À venir
- Authentification des utilisateurs
- Interface de vote pour les participants
- Résultats et statistiques des votes
- Notifications par email
- Gestion des permissions
🛠️ Installation
Prérequis
- Node.js 18+
- npm ou yarn
- Compte Supabase
1. Cloner le projet
git clone <votre-repo>
cd mes-budgets-participatifs
2. Installer les dépendances
npm install
3. Configuration Supabase
Créer un projet Supabase
- Allez sur supabase.com
- Créez un nouveau projet
- Notez votre URL et votre clé anon
Configurer la base de données
- Dans votre projet Supabase, allez dans l'éditeur SQL
- Copiez et exécutez le contenu du fichier
supabase-schema.sql
Configurer les variables d'environnement
Créez un fichier .env.local à la racine du projet :
NEXT_PUBLIC_SUPABASE_URL=votre_url_supabase
NEXT_PUBLIC_SUPABASE_ANON_KEY=votre_cle_anon_supabase
4. Lancer l'application
npm run dev
L'application sera accessible sur http://localhost:3000
📊 Structure de la base de données
Table campaigns
id: Identifiant unique (UUID)title: Titre de la campagnedescription: Description détailléestatus: État de la campagne (deposit,voting,closed)budget_per_user: Budget alloué par participant (en euros)spending_tiers: Paliers de dépenses disponibles (séparés par des virgules)created_at: Date de créationupdated_at: Date de dernière modification
Table propositions
id: Identifiant unique (UUID)campaign_id: Référence vers la campagnetitle: Titre de la propositiondescription: Description détailléecreated_at: Date de création
Table participants
id: Identifiant unique (UUID)campaign_id: Référence vers la campagnefirst_name: Prénom du participantlast_name: Nom du participantemail: Adresse emailcreated_at: Date de création
🎨 Interface utilisateur
Page d'accueil
- Présentation de l'application
- Bouton d'accès à l'administration
- Design moderne avec gradient et cartes informatives
Page d'administration
- Liste des campagnes existantes
- Bouton pour créer une nouvelle campagne
- Actions rapides pour chaque campagne :
- Ajouter une proposition
- Ajouter un participant
- Indicateurs visuels pour les états des campagnes
Modals
- Création de campagne : Formulaire complet avec validation
- Ajout de proposition : Titre et description
- Ajout de participant : Informations personnelles
🔧 Développement
Structure des fichiers
src/
├── app/ # Pages Next.js (App Router)
│ ├── page.tsx # Page d'accueil
│ └── admin/ # Pages d'administration
├── components/ # Composants React réutilisables
├── lib/ # Services et configuration
│ ├── supabase.ts # Configuration Supabase
│ └── services.ts # Services de données
└── types/ # Types TypeScript
└── index.ts # Définitions des types
Scripts disponibles
npm run dev # Lancer en mode développement
npm run build # Construire pour la production
npm run start # Lancer en mode production
npm run lint # Vérifier le code avec ESLint
🚀 Déploiement
Vercel (recommandé)
- Connectez votre repo GitHub à Vercel
- Configurez les variables d'environnement dans Vercel
- Déployez automatiquement
Autres plateformes
L'application peut être déployée sur n'importe quelle plateforme supportant Next.js :
- Netlify
- Railway
- DigitalOcean App Platform
- AWS Amplify
🤝 Contribution
- Fork le projet
- Créez une branche pour votre fonctionnalité
- Committez vos changements
- Poussez vers la branche
- Ouvrez une Pull Request
📝 Licence
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
🆘 Support
Pour toute question ou problème :
- Vérifiez la documentation Supabase
- Consultez les issues GitHub
- Créez une nouvelle issue si nécessaire
Développé avec ❤️ pour faciliter la démocratie participative
Languages
TypeScript
93.6%
JavaScript
2.4%
PLpgSQL
2.1%
CSS
1.9%