# Structure du Projet - Dons Drôme-Ardèche

## Vue d'ensemble

Application Laravel 11 + Blade Web + Flutter Mobile pour plateforme de dons régionale.

### Arborescence

```
dons-dromeardche/
│
├── app/                          # Code application
│   ├── Models/
│   │   ├── User.php             # Utilisateur (donors, fundraisers, admins)
│   │   ├── Campaign.php         # Collecte (campagne de dons)
│   │   └── Donation.php         # Donation (paiement)
│   │
│   ├── Http/
│   │   ├── Controllers/
│   │   │   ├── AuthController.php           # Login/Register/Logout
│   │   │   ├── CampaignController.php       # CRUD campaigns
│   │   │   ├── DonationController.php       # Paiements Stripe
│   │   │   ├── StripeWebhookController.php  # Webhooks Stripe
│   │   │   └── AdminController.php          # Modération + stats
│   │   │
│   │   └── Middleware/
│   │       └── EnsureUserIsAdmin.php        # Vérifier role admin
│   │
│   └── Services/                 # (à ajouter - logique métier)
│       └── StripeService.php     # Gestion paiements Stripe
│
├── database/
│   └── migrations/
│       ├── 2026_08_27_000001_create_users_table.php
│       ├── 2026_08_27_000002_create_campaigns_table.php
│       └── 2026_08_27_000003_create_donations_table.php
│
├── routes/
│   └── api.php                   # Endpoints API REST
│
├── config/
│   └── services.php              # Config Stripe + donation
│
├── resources/
│   ├── views/                    # Templates Blade (à créer - Phase 2)
│   │   ├── layouts/
│   │   ├── campaigns/
│   │   └── admin/
│   │
│   └── js/                       # Alpine.js (optionnel)
│
├── storage/                      # Logs, uploads
│   ├── logs/
│   └── uploads/
│
├── .env.example                  # Config template
├── Postman_Collection.json       # Tests API Postman
├── README_API.md                 # Documentation API
├── PROJECT_STRUCTURE.md          # Ce fichier
└── composer.json                 # Dépendances PHP

```

## Phases de développement

### ✅ Phase 1 : Backend API (COMPLÉTÉE)

**Status** : Livrée

**Fichiers créés** :
- ✅ Migrations (users, campaigns, donations)
- ✅ Models (User, Campaign, Donation)
- ✅ Controllers (Auth, Campaign, Donation, Admin, Stripe Webhook)
- ✅ Routes API (/api/*)
- ✅ Middleware Admin
- ✅ Configuration Stripe
- ✅ Documentation API + Postman collection

**À faire avant production** :
- [ ] Tester tous les endpoints (voir Postman collection)
- [ ] Configurer variables d'environnement (.env)
- [ ] Vérifier clés Stripe (test + production)
- [ ] Setup Brevo pour emails
- [ ] Créer seed data (test campaigns)

---

### 📋 Phase 2 : Frontend Web (À FAIRE)

**Objectif** : Pages Blade + Alpine.js consommant l'API

**Fichiers à créer** :
```
resources/views/
├── layouts/
│   ├── app.blade.php            # Layout principal
│   └── auth.blade.php           # Layout auth
├── campaigns/
│   ├── index.blade.php          # Liste publique
│   ├── show.blade.php           # Détail collecte
│   ├── create.blade.php         # Créer collecte
│   └── edit.blade.php           # Modifier collecte
├── donations/
│   └── checkout.blade.php       # Paiement Stripe
├── dashboard/
│   ├── index.blade.php          # Dashboard collecteur
│   └── donations.blade.php      # Mes donations
└── admin/
    ├── campaigns.blade.php      # Modération
    └── stats.blade.php          # Statistiques
```

**Technologies** :
- Blade templating (Laravel)
- Alpine.js (réactivité légère)
- Tailwind CSS (styles)
- Stripe Payment Element (paiements)

---

### 📱 Phase 3 : App Flutter (À FAIRE)

**Objectif** : Screens iOS/Android consommant l'API

**Structure Flutter** :
```
lib/
├── main.dart
├── screens/
│   ├── auth/
│   │   ├── login_screen.dart
│   │   └── register_screen.dart
│   ├── campaigns/
│   │   ├── home_screen.dart
│   │   ├── campaign_detail_screen.dart
│   │   └── campaign_create_screen.dart
│   ├── dashboard/
│   │   └── fundraiser_dashboard.dart
│   └── payments/
│       └── payment_screen.dart
├── models/
│   ├── user.dart
│   ├── campaign.dart
│   └── donation.dart
├── services/
│   ├── api_service.dart
│   └── auth_service.dart
└── widgets/
    └── components.dart
```

**Packages** :
- `http` : Requêtes API
- `provider` : Gestion d'état
- `flutter_stripe` : Paiements Stripe
- `shared_preferences` : Stockage local tokens

---

### 🚀 Phase 4 : Déploiement (À FAIRE)

**Steps** :
1. Configuration O2switch
2. Setup BD MySQL
3. Upload fichiers via FTP/rsync
4. Migrations Laravel
5. Webhook Stripe configuré
6. Tests end-to-end
7. Go live

---

## Configuration avant production

### 1. Variables d'environnement (.env)

```bash
# Base app
APP_NAME="Dons Drôme-Ardèche"
APP_ENV=production
APP_KEY=base64:... (généré)
APP_DEBUG=false
APP_URL=https://dons-dromeardche.fr

# Database
DB_CONNECTION=mysql
DB_HOST=localhost
DB_DATABASE=dons_dromeardche
DB_USERNAME=root
DB_PASSWORD=...

# Stripe
STRIPE_PUBLIC_KEY=pk_live_...
STRIPE_SECRET_KEY=sk_live_...
STRIPE_WEBHOOK_SECRET=whsec_...

# Brevo (Email)
MAIL_MAILER=brevo
MAIL_USERNAME=...
MAIL_PASSWORD=...
```

### 2. Clés API à récupérer

- **Stripe** : https://dashboard.stripe.com/apikeys
- **Brevo** : https://app.brevo.com/settings/keys

### 3. Webhook Stripe

Configure dans Stripe Dashboard :
- URL : `https://dons-dromeardche.fr/api/webhooks/stripe`
- Events : payment_intent.*, charge.refunded

---

## Prochaines étapes

1. **Tester l'API** avec Postman collection
2. **Créer Phase 2** : Pages Web Blade
3. **Créer Phase 3** : App Flutter
4. **Déployer sur O2switch**
5. **Lancer auprès de la communauté Facebook**

---

## Support & Documentation

- API Docs : voir README_API.md
- Tests Postman : voir Postman_Collection.json
- Installation : voir README_API.md

**Contact** : hello@abcduweb.fr
