Développement local
Configurer le monorepo AACsearch pour le développement local — prérequis, variables d'environnement, services Docker et exécution des applications.
AACsearch est un monorepo pnpm + Turborepo. Cette page couvre la configuration locale complète depuis un clone initial jusqu'à un tableau de bord SaaS et un site de documentation fonctionnels.
Prérequis
| Outil | Version | Installation |
|---|---|---|
| Node.js | 20+ | nodejs.org |
| pnpm | 10.28+ | npm i -g pnpm |
| Docker | Dernière | docker.com |
Cloner et installer
git clone <repo-url> AACSearch
cd AACSearch
pnpm installpnpm initialisera tous les packages du workspace. La première installation peut prendre 2 à 3 minutes.
Démarrer les services Docker
Le monorepo nécessite Postgres (base de données) et MinIO (stockage d'objets compatible S3) :
docker compose up -dCela démarre :
- Postgres sur le port
5432— base de données applicative - MinIO sur les ports
9000(API) et9001(console) — stockage de fichiers
Vérifiez que les services sont en bonne santé :
docker compose psAACSearch
Vous avez également besoin d'une instance AACSearch en cours d'exécution. L'approche la plus simple pour le développement local :
docker run -d \
-p 8108:8108 \
-v /tmp/aacsearch-data:/data \
aacsearch/search-engine:latest \
--data-dir /data \
--api-key=your-local-admin-key \
--listen-port 8108Définissez AACSEARCH_API_KEY et AACSEARCH_HOST dans votre fichier d'environnement (voir ci-dessous).
Variables d'environnement
Copiez le fichier d'exemple :
cp .env.local.example .env.localVariables clés à configurer :
# Base de données
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/AACSearch"
# Auth
BETTER_AUTH_SECRET="your-local-secret-at-least-32-chars"
BETTER_AUTH_URL="http://localhost:3000"
# AACSearch
AACSEARCH_HOST="localhost"
AACSEARCH_PORT="8108"
AACSEARCH_PROTOCOL="http"
AACSEARCH_API_KEY="your-local-admin-key"
# Stockage (MinIO)
STORAGE_ENDPOINT="http://localhost:9000"
STORAGE_BUCKET="AACSearch"
STORAGE_ACCESS_KEY="minioadmin"
STORAGE_SECRET_KEY="minioadmin"
# URLs des applications
NEXT_PUBLIC_SAAS_URL="http://localhost:3000"
NEXT_PUBLIC_MARKETING_URL="http://localhost:3001"Remarque : Prisma lit depuis .env, et non depuis .env.local. Copiez .env.local vers .env pour les commandes CLI Prisma :
cp .env.local .envConfiguration de la base de données
Générez le client Prisma et appliquez les migrations :
pnpm --filter @repo/database generate
pnpm --filter @repo/database push # développement : appliquer le schéma directementPrisma Studio (navigateur visuel de base de données optionnel) :
pnpm --filter @repo/database studioS'ouvre sur le port 5555.
Exécuter les applications
Exécutez toutes les applications simultanément (recommandé pour le développement) :
pnpm devOu exécutez des applications individuelles :
pnpm dev --filter=saas # Tableau de bord SaaS → http://localhost:3000
pnpm dev --filter=marketing # Site marketing → http://localhost:3001
pnpm dev --filter=docs # Site de docs → http://localhost:3002Turborepo exécute toutes les tâches avec une concurrence de 15 et met en cache les sorties de build.
Vérifier la configuration
- Ouvrez
http://localhost:3000— vous devriez voir la page de connexion AACsearch - Créez un compte via le formulaire d'inscription
- Créez une organisation
- Naviguez vers la section recherche
- Créez un index de recherche — ceci crée la collection AACSearch
Si AACSearch n'est pas joignable, la création de l'index échouera avec une erreur search_connection_error et
vous la verrez dans l'état d'erreur du tableau de bord.
Vérification des types et lint
pnpm type-check # Vérification des types TypeScript (tous les packages)
pnpm lint # Oxlint (PAS ESLint)
pnpm lint:fix # Correction automatique des problèmes de lint
pnpm format # Oxfmt (PAS Prettier)
pnpm format:check # Vérification du formatage uniquementCommandes utiles
# Construire le bundle widget (nécessaire pour le développement du widget)
pnpm --filter @repo/widget build
# Réinitialiser la base de données (DESTRUCTIF — supprime toutes les données)
docker compose down -v && docker compose up -d
pnpm --filter @repo/database push
# Vider le cache Turborepo
pnpm clean
# Tout construire
pnpm buildDépannage
Cannot find module '@repo/...' — exécutez pnpm install depuis la racine du dépôt.
Prisma DATABASE_URL empty — Prisma lit .env, pas .env.local. Exécutez cp .env.local .env.
Prisma Client not generated — exécutez pnpm --filter @repo/database generate.
BigInt serialization error — une procédure manque .transform(v => v.toString()) sur les champs de sortie BigInt.
Build OOM sur macOS — définissez NODE_OPTIONS='--max-old-space-size=12288' pnpm build.