# Germa Field Management
PWA interne de gestion terrain pour Germa : clients, réfrigérateurs, visites de supervision et incidents.
- **Frontend** : React 19 + Vite 8 + Tailwind CSS v4, mobile-first
- **Backend** : Supabase (PostgreSQL, Auth, Storage, Edge Functions) avec **RLS** activé sur toutes les tables
- **Carte** : Mapbox GL JS (clusters, marqueurs colorés, sélection, itinéraires)
- **PWA** : installable, cache de tuiles Mapbox et pré-cache hors-ligne
## Comptes de démonstration
| Rôle | Email | Mot de passe |
| --- | --- | --- |
| Admin | `admin@germa.dz` | `Admin123!` |
| Superviseur | `supervisor@germa.dz` | `Super123!` |
> Ces comptes sont créés par la migration `010_seed_data.sql` (données de démonstration uniquement — à remplacer en production).
## Prérequis
- Node.js 20+ (développé/testé avec Node 24)
- Un projet **Supabase** (gratuit) :
supabase.com
- Un token **Mapbox** (gratuit) :
account.mapbox.com
- Git (pour versionner) : non installé sur la machine actuelle, voir « Première mise en place » ci-dessous
## Première mise en place
```bash
# 1. Initialiser le dépôt git
git init
# 2. Installer les dépendances
npm install
```
## Configuration
Copier `.env.example` vers `.env` et remplir les valeurs :
```bash
VITE_SUPABASE_URL=
VITE_SUPABASE_ANON_KEY=
VITE_MAPBOX_ACCESS_TOKEN=
```
> La clé **service_role** ne doit JAMAIS être utilisée côté frontend. Elle est réservée à l'Edge Function (variable d'environnement serveur).
## Base de données (Supabase)
1. Créer un projet sur
supabase.com et récupérer l'URL + clé **anon** dans **Project Settings → API**.
2. Appliquer les migrations dans l'ordre :
```bash
# Avec la CLI Supabase (projet lié) :
supabase link --project-ref
supabase db push
```
Ou copier-coller chaque fichier `supabase/migrations/0XX_*.sql` dans **SQL Editor** du dashboard, dans l'ordre numérique (001 → 010).
### Structure des migrations
| Fichier | Contenu |
| --- | --- |
| `001_create_pro …