Installation
Bienvenue dans l'équipe ! 🎉 Ce guide t'amène d'un dépôt fraîchement cloné à un environnement de dev qui tourne. Compte ~30 min selon ta connexion et ce qui est déjà installé.
Prérequis
Assure-toi d'avoir ces outils avant de commencer :
| Outil | Version | Pourquoi |
|---|---|---|
| PHP | 8.3 | clartt-api (Laravel 12) |
| Composer | 2.x | Dépendances PHP |
| Node.js | 20+ | clartt-front, clartt-public, cette doc |
| Python | 3.12 | clartt-kent-ai (FastAPI) |
| Docker | récent | clartt-kent-ai + Qdrant |
💡 Astuce macOS : Laravel Herd fournit PHP, et surtout PostgreSQL, Redis et MinIO prêts à l'emploi. C'est le chemin le plus simple pour la couche données en local.
1. Cloner le monorepo
git clone <url-du-repo> clartt
cd clarttTu obtiens cette structure — 4 applications + cette documentation :
clartt/
├── clartt-api/ # API Laravel (le cœur)
├── clartt-front/ # Interface d'administration (Next.js)
├── clartt-public/ # Site marketing (Next.js)
├── clartt-kent-ai/ # Service IA (FastAPI)
└── clartt-doc/ # Cette documentation (VitePress)Chaque service possède son propre .env. Pense à copier les .env.example correspondants et à demander les secrets (clés API, tokens) à l'équipe.
2. clartt-api — l'API Laravel
C'est la pièce centrale : commence par elle.
cd clartt-api
composer setup # installe les deps, génère la clé, migre la basePour le développement au quotidien, une seule commande lance tout (serveur + queue + logs + Vite) :
composer devSi tu préfères lancer les processus à la main :
php artisan serve # API sur http://localhost:8000
php artisan horizon # worker de files d'attente (jobs)
php artisan reverb:start # serveur WebSocket sur :8080Et pour les tests (Pest) :
composer test # toute la suite
./vendor/bin/pest tests/Feature/Auth # un dossier précis
./vendor/bin/pest --filter "nom test" # un seul testVariables d'environnement clés (.env)
DB_CONNECTION=pgsql
REVERB_HOST=localhost
REVERB_PORT=8080
CLARTT_KENT_BASE_URL=http://localhost:5001
CLARTT_KENT_INTERNAL_TOKEN=<token-partagé-avec-kent>3. clartt-front — l'interface d'administration
cd clartt-front
npm install
npm run dev # http://localhost:3000Crée un fichier .env.local :
NEXT_PUBLIC_API_URL=http://localhost:8000
NEXT_PUBLIC_REVERB_HOST=localhost
NEXT_PUBLIC_REVERB_PORT=8081
NEXT_PUBLIC_REVERB_APP_KEY=laravel-herd4. clartt-public — le site marketing
cd clartt-public
npm install
npm run dev # http://localhost:30015. clartt-kent-ai — le service IA
Le plus simple est de passer par Docker (Qdrant est inclus dans le compose) :
cd clartt-kent-ai
docker compose up --build # premier lancement
docker compose up -d --build # en arrière-plan
docker compose logs -f api # suivre les logsPréférence pour le local sans Docker ? Un virtualenv suffit :
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload --port 5001Variables d'environnement clés (.env)
ENVIRONMENT=development
DEBUG=true
INTERNAL_TOKEN=<token-partagé-avec-api>
MISTRAL_API_KEY=<clé-mistral>
QDRANT_HOST=qdrant
QDRANT_PORT=6333
MINIO_ENDPOINT=minio.herd.test
MINIO_BUCKET=clarttLe INTERNAL_TOKEN doit être identique au CLARTT_KENT_INTERNAL_TOKEN côté API, et MINIO_BUCKET au AWS_BUCKET côté API.
6. Tout lancer d'un coup (VS Code)
Pas envie d'ouvrir 5 terminaux ? Ouvre le workspace à la racine :
code clartt.code-workspaceVS Code propose alors de démarrer automatiquement l'ensemble des services.
7. Vérifier que tout tourne
Une fois les services lancés, tu devrais avoir :
| Service | URL | Doit afficher |
|---|---|---|
| clartt-front | http://localhost:3000 | L'interface d'administration |
| clartt-public | http://localhost:3001 | Le site marketing |
| clartt-api | http://localhost:8000 | La réponse de l'API |
| clartt-kent-ai | http://localhost:5001/health/live | {"status": "ok"} |
| Qdrant | http://localhost:6333 | Le dashboard Qdrant |
Et après ?
Tu es prêt·e ! 🚀 Si quelque chose coince, vérifie d'abord que PostgreSQL, Redis et MinIO tournent (via Herd), puis que les tokens partagés entre l'API et Kent correspondent bien. N'hésite pas à demander un coup de main à l'équipe.