Aller au contenu principal

Démarrage rapide

Guide d'installation et de mise en route de La Cafête.

Prérequis​

LogicielVersionUsage
Docker24+Infrastructure (Postgres, Redis, MinIO)
Rust1.85+Backend API et Worker
Node.js20+Dashboard frontend
PostgreSQL16+Base de données
Redis7+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 :

ServiceURLDescription
PostgreSQLpostgres://localhost:5432/caffetteBase de données
Redisredis://localhost:6379Jobs et cache
MinIOhttp://localhost:9000Stockage 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