Démarrage rapide
Guide d'installation et de mise en route de La Cafête.
Prérequis
| Logiciel | Version | Usage |
|---|---|---|
| Docker | 24+ | Infrastructure (Postgres, Redis, MinIO) |
| Rust | 1.85+ | Backend API et Worker |
| Node.js | 20+ | Dashboard frontend |
| PostgreSQL | 16+ | Base de données |
| Redis | 7+ | Jobs et cache |
1. Démarrer l'infrastructure
# Cloner le projet
git clone https://github.com/lescale-africaine/caffette
cd caffette
# Démarrer les services (Postgres, Redis, MinIO)
docker compose up -d
# Vérifier les services
docker compose ps
Services démarrés :
| Service | URL | Description |
|---|---|---|
| PostgreSQL | postgres://localhost:5432/caffette | Base de données |
| Redis | redis://localhost:6379 | Jobs et cache |
| MinIO | http://localhost:9000 | Stockage fichiers |
2. Configurer l'environnement
# Copier le template
cp .env.example .env
# Éditer les variables essentielles
nano .env
Variables obligatoires :
# Serveur
CAFFETTE_PORT=3500
# JWT (générer une paire de clés Ed25519)
# openssl genpkey -algorithm ed25519 -out private.pem
# openssl pkey -in private.pem -pubout -out public.pem
# base64 -w0 private.pem && base64 -w0 public.pem
JWT_PRIVATE_KEY=<base64-ed25519-private-key>
JWT_PUBLIC_KEY=<base64-ed25519-public-key>
# Base de données
CAFFETTE_DATABASE_URL=postgres://caffette:caffette@localhost:5432/caffette
# Redis
CAFFETTE_REDIS_URL=redis://localhost:6379
# Stockage (local ou s3)
CAFFETTE_STORAGE_PROVIDER=local
# Email (SMTP)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USERNAME=votre-email@gmail.com
SMTP_PASSWORD=votre-mot-de-passe-app
SMTP_FROM=noreply@caffette.app
3. Compiler et lancer l'API
# Compiler le workspace complet
cargo build --workspace
# Lancer l'API (port 3500)
cargo run -p caffette-api
# Vérifier le health check
curl http://localhost:3500/healthz
Réponse attendue :
{"status":"ok","service":"caffette-api","version":"0.1.0"}
4. Lancer le worker
Dans un nouveau terminal :
cargo run -p caffette-worker
Le worker expose un endpoint admin optionnel sur localhost:3001 pour le monitoring des jobs.
5. Lancer le dashboard
cd apps/dashboard
# Installer les dépendances
npm install
# Lancer en mode développement
npm run dev
Le dashboard est accessible sur : http://localhost:5173
6. Créer le premier admin système
Utilisez l'API ou le dashboard pour créer le premier utilisateur platform :
curl -X POST http://localhost:3500/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{
"login": "admin@caffette.app",
"password": "votre-mot-de-passe"
}'
astuce
Au premier login, le système est en mode bootstrap : le premier utilisateur obtient toutes les permissions. Après assignation de rôles, ce mode est désactivé.
Structure du projet
caffette/
├── backend/ # Rust + Axum
│ ├── crates/
│ │ ├── api/ # Serveur HTTP
│ │ ├── worker/ # Jobs (Apalis + tokio-cron-scheduler)
│ │ ├── domain/ # Entités métier
│ │ ├── auth/ # JWT + passwords
│ │ ├── persistence/ # SQLx + repositories
│ │ ├── storage/ # Local / S3
│ │ ├── notification/ # Multi-canal
│ │ ├── events/ # Event bus
│ │ └── shared/ # Types partagés
│ └── Cargo.toml
├── apps/
│ └── dashboard/ # React + Vite
├── docs/ # Documentation Docusaurus
└── docker-compose.yml
Commandes utiles
# Linter le code Rust
cargo clippy --workspace
# Formater le code
cargo fmt
# Run tests
cargo test --workspace
# Voir les migrations Applied
psql $DATABASE_URL -c "SELECT * FROM tenant_migrations;"
# Reset complet (DANGER)
cargo sqlx database drop && cargo sqlx database create && cargo run -p caffette-api