# FreeGive

FreeGive est une plateforme solidaire Laravel qui réunit commerce responsable, dons financiers et demandes d’assistance. Elle couvre les parcours publics, bénéficiaires, marchands et administrateurs, avec paiements mobiles, notifications, modération et journal d’audit.

## Prérequis

- PHP 8.3 ou supérieur, avec les extensions Laravel usuelles
- Composer 2
- Node.js 20 ou supérieur et npm
- SQLite pour démarrer rapidement, ou MySQL 8 en exploitation

## Installation locale

```bash
composer install
cp .env.example .env
php artisan key:generate
php artisan migrate --seed
npm install --ignore-scripts
npm run build
```

Sous PowerShell, remplacez `cp .env.example .env` par `Copy-Item .env.example .env`. Configurez les variables `DB_*` avant les migrations si vous utilisez MySQL.

L’application peut ensuite être lancée avec Laragon ou avec :

```bash
composer run dev
```

## Services d’exploitation

Les notifications et traitements différés nécessitent un worker de file :

```bash
php artisan queue:work --tries=3
```

Le planificateur doit être exécuté chaque minute en production :

```cron
* * * * * cd /chemin/vers/freegive && php artisan schedule:run >/dev/null 2>&1
```

## Déploiement

```bash
composer install --no-dev --optimize-autoloader
npm ci
npm run build
php artisan migrate --force
php artisan optimize
php artisan queue:restart
```

En production, utilisez HTTPS, définissez `APP_ENV=production`, `APP_DEBUG=false` et `SESSION_SECURE_COOKIE=true`, puis renseignez `MOBILE_MONEY_WEBHOOK_SECRET`. Les secrets ne doivent jamais être versionnés. Prévoyez aussi la sauvegarde de la base et du stockage applicatif.

Avant la mise en ligne, contrôlez la configuration, la connexion à la base et les migrations indispensables :

```bash
php artisan ops:check --production
```

## Vérifications

```bash
php artisan test
vendor/bin/pint --test
npm run build
```

Les routes principales sont `/`, `/catalogue`, `/dons`, `/assistance`, `/marchand` et `/admin`. Les endpoints d’intégration sont regroupés sous `/api`.
