Files
mdb/README.md
Bastien COIGNOUX 7b3e50ff29 init
2026-05-03 22:17:48 +02:00

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/.