initial commit

This commit is contained in:
Yannick Le Duc
2025-08-25 14:38:13 +02:00
parent 02197190e9
commit e0f86a8845
25 changed files with 3336 additions and 128 deletions

187
README.md
View File

@@ -1,36 +1,181 @@
This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).
# Mes Budgets Participatifs
## Getting Started
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.
First, run the development server:
## 🚀 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
```bash
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
git clone <votre-repo>
cd mes-budgets-participatifs
```
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
### 2. Installer les dépendances
```bash
npm install
```
You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
### 3. Configuration Supabase
This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
#### Créer un projet Supabase
1. Allez sur [supabase.com](https://supabase.com)
2. Créez un nouveau projet
3. Notez votre URL et votre clé anon
## Learn More
#### 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 `supabase-schema.sql`
To learn more about Next.js, take a look at the following resources:
#### Configurer les variables d'environnement
Créez un fichier `.env.local` à la racine du projet :
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
```env
NEXT_PUBLIC_SUPABASE_URL=votre_url_supabase
NEXT_PUBLIC_SUPABASE_ANON_KEY=votre_cle_anon_supabase
```
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
### 4. Lancer l'application
```bash
npm run dev
```
## Deploy on Vercel
L'application sera accessible sur `http://localhost:3000`
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
## 📊 Structure de la base de données
Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
### Table `campaigns`
- `id`: Identifiant unique (UUID)
- `title`: Titre de la campagne
- `description`: Description détaillée
- `status`: É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éation
- `updated_at`: Date de dernière modification
### Table `propositions`
- `id`: Identifiant unique (UUID)
- `campaign_id`: Référence vers la campagne
- `title`: Titre de la proposition
- `description`: Description détaillée
- `created_at`: Date de création
### Table `participants`
- `id`: Identifiant unique (UUID)
- `campaign_id`: Référence vers la campagne
- `first_name`: Prénom du participant
- `last_name`: Nom du participant
- `email`: Adresse email
- `created_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
```bash
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é)
1. Connectez votre repo GitHub à Vercel
2. Configurez les variables d'environnement dans Vercel
3. 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
1. Fork le projet
2. Créez une branche pour votre fonctionnalité
3. Committez vos changements
4. Poussez vers la branche
5. 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 :
1. Vérifiez la documentation Supabase
2. Consultez les issues GitHub
3. Créez une nouvelle issue si nécessaire
---
**Développé avec ❤️ pour faciliter la démocratie participative**