3.5 KiB
3.5 KiB
mb-app — Application Marchand de Biens
Application mobile et web pour la gestion quotidienne d'une activité de marchand de biens immobiliers.
Stack : React Native (Expo) + PocketBase (self-hosted sur NAS Synology) + IA Claude
Démarrage rapide
Prérequis
- Docker Desktop (Mac/Windows) ou Docker Engine (Linux/NAS)
- Node.js 18+
- Un compte DuckDNS (gratuit) pour l'accès distant
1. Cloner le projet
git clone https://github.com/VOUS/mb-app.git
cd mb-app
2. Setup initial
make setup
# → Crée les dossiers nécessaires
# → Copie .env.example en .env.local
Éditer .env.local :
EXPO_PUBLIC_PB_URL=http://localhost:8090
ANTHROPIC_API_KEY=sk-ant-VOTRE_CLE
3. Lancer en développement
# Terminal 1 — Backend PocketBase
make dev
# → PocketBase sur http://localhost:8090
# → Admin sur http://localhost:8090/_/
# Terminal 2 — App Expo
cd app
npm install
npx expo start
Première fois : Aller sur http://localhost:8090/_/ → créer le compte admin
→ Settings → Import collections → coller le contenu de pocketbase/pb_collections.json
Déploiement sur le NAS Synology
1. Cloner sur le NAS
# Se connecter en SSH au NAS
ssh admin@IP_DU_NAS
# Cloner le projet
git clone https://github.com/VOUS/mb-app.git /volume1/docker/mb-app
cd /volume1/docker/mb-app
2. Configurer l'environnement production
make setup-nas
# Puis éditer .env.production :
nano .env.production
EXPO_PUBLIC_PB_URL=https://mon-sous-domaine.duckdns.org
ANTHROPIC_API_KEY=sk-ant-VOTRE_CLE
DUCKDNS_SUBDOMAINS=mon-sous-domaine
DUCKDNS_TOKEN=VOTRE_TOKEN_DUCKDNS
3. Ouvrir les ports sur votre box internet
- Port 80 → IP du NAS, port 80
- Port 443 → IP du NAS, port 443
4. Obtenir le certificat SSL
make ssl
5. Lancer la stack
make prod
Mettre à jour après un git push
# Sur le NAS :
make deploy
# → git pull + restart PocketBase (les hooks sont rechargés)
Workflow de développement
[Local] Coder + tester
↓
git add . && git commit -m "feat: module visites"
↓
git push origin main
↓
[NAS] make deploy
Les données (pb_data/) restent sur chaque machine et ne sont jamais dans Git.
Le code (hooks, migrations, app) est versionné et déployé via Git.
Structure du projet
mb-app/
├── app/ ← Code React Native (Expo Router)
├── pocketbase/
│ ├── pb_hooks/ ← Hooks JS côté serveur (IA, etc.)
│ ├── pb_migrations/ ← Migrations auto PocketBase
│ └── pb_collections.json ← Schéma des collections
├── docker/
│ ├── docker-compose.dev.yml
│ ├── docker-compose.prod.yml
│ └── nginx.prod.conf
├── .cursorrules ← Contexte pour Cursor AI
├── AGENTS.md ← Suivi des sessions de développement
└── Makefile ← Raccourcis commandes
Commandes utiles
| Commande | Description |
|---|---|
make dev |
Lance PocketBase en local |
make dev-stop |
Arrête le dev |
make logs |
Logs en temps réel |
make prod |
Lance la stack NAS |
make deploy |
git pull + redémarre (sur NAS) |
make renew-ssl |
Renouvelle le certificat SSL |
Backup des données
Les données PocketBase sont dans pb_data/ (exclu du Git).
Configurer une tâche Synology Hyper Backup sur /volume1/docker/mb-app/pb_data/.