Démarrer un environnement de développement avec PostgreSQL en Docker et le backend DomiFa.
- Node.js >= 24
- pnpm >= 10 (via
corepackrecommandé)corepack enable corepack prepare pnpm@10.24.0 --activate
PostgreSQL en Docker + Backend en local avec pnpm workspaces – permet un meilleur contrôle du développement.
Tous les services dans Docker – utile pour la reproductibilité mais moins flexible pour le développement.
# 1. Configuration racine
cp .env.dev.example.env .env
# 2. Configuration backend
cp packages/backend/.env.backend.dev.example.env packages/backend/.env
# 3. Configuration tests (optionnel)
cp packages/backend/.env.backend.test.local.example.env packages/backend/.env.backend.test.local.envMode Docker complet (Backend aussi en Docker) :
# Dans packages/backend/.env
POSTGRES_HOST=postgres
# OU utiliser le preset
DOMIFA_ENV_PRESET=local-dev-docker.preset.envMode hybride (Backend en local, PostgreSQL en Docker) :
# Dans packages/backend/.env
POSTGRES_HOST=localhost
# OU utiliser le preset
DOMIFA_ENV_PRESET=local-dev.preset.env@domifa/common doit être compilé avant de démarrer les autres projets :
# À la racine du projet
pnpm --filter @domifa/common build
# OU avec l'alias (voir section Alias)
domcom build# PostgreSQL uniquement (recommandé avec pnpm workspaces)
./docker-compose.local.run.sh
# PostgreSQL + Backend en Docker (mode conteneurisé)
./docker-compose.local.run.sh --with-dev-containers# Arrêter les services
./docker-compose.local.run.sh --stop
# Supprimer les containers
./docker-compose.local.run.sh --stop --remove
# Reset complet (⚠️ SUPPRIME TOUTES LES DONNÉES DOMIFA)
./docker-compose.local.run.sh --stop --remove --drop-domifa-volumesLes bases de données sont créées automatiquement au premier démarrage avec des données de test.
📖 Voir ./2.databases-dumps.md pour plus de détails
# Vérifier que PostgreSQL fonctionne
docker ps | grep postgres
docker logs domifa-postgres# À la racine du projet – démarre le backend via le workspace
pnpm --filter @domifa/backend start:dev
# OU directement dans le dossier backend
cd packages/backend
pnpm start:dev
# OU avec l'alias (voir section Alias)
back start:dev# Entrer dans le container backend
docker exec -it domifa-backend bash
# Dans le container
pnpm start:dev- lint-staged : Formatage et linting automatique des fichiers modifiés
- node-talisman : Détection de secrets/credentials avant commit
- lerna : Gestion du monorepo et des workspaces
# Lerna (déjà dans devDependencies du projet)
npx lerna --version || pnpm add -D lerna
# Husky
npx husky initls -la .husky/
# Doit afficher : pre-commit, commit-msg
npx lerna --version
# Doit afficher la version installéeAjoutez ces alias dans votre ~/.zshrc pour accélérer vos commandes :
# Alias pour les workspaces DomiFa (pnpm)
alias front='pnpm --filter @domifa/frontend'
alias back='pnpm --filter @domifa/backend'
alias portail='pnpm --filter @domifa/portail-usagers'
alias admin='pnpm --filter @domifa/portail-admins'
alias domcom='pnpm --filter @domifa/common'Exemples d'utilisation :
# Build le package common
domcom build
# Démarrer le backend
back start:dev
# Démarrer le frontend
front start
# Lancer les tests backend
back test# Voir les logs PostgreSQL
docker logs domifa-postgres -f
# Voir les logs Backend (si en Docker)
docker logs domifa-backend -f
# Reset uniquement la base de données
docker volume rm domifa_postgres_data
# Migrations manuelles
pnpm --filter @domifa/backend db:dev:migrate-up
pnpm --filter @domifa/backend db:dev:create -- NomDeLaMigration# Vérifier les logs
docker logs domifa-postgres
# Vérifier l'espace disque
df -h
# Nettoyer les volumes orphelins
docker volume prune# Vérifier la configuration
cat packages/backend/.env | grep POSTGRES
# Vérifier que PostgreSQL accepte les connexions
telnet localhost 5432# Identifier le processus
lsof -i :3000
kill -9 <PID># Réinstaller les dépendances backend
cd packages/backend
pnpm install --frozen-lockfile# Nettoyer et rebuilder (exemple, selon vos scripts npm)
pnpm --filter @domifa/common buildÀ la fin de cette installation, vous devez avoir :
- ✅ Package
@domifa/commoncompilé - ✅ PostgreSQL accessible sur
localhost:5432 - ✅ Backend API accessible sur
http://localhost:3000