Click and Eat API est une API REST monolithique modulaire conçue pour gérer les fonctionnalités d'une application de commande ou de recommandation alimentaire. Elle adopte une architecture Domain-Driven Design (DDD) et est déployée via Docker avec PostgreSQL comme base de données et Dragonfly comme cache compatible Redis.
L'API est organisée en modules découplés selon les principes du Domain-Driven Design :
authentication/: Module métier dédié à l'authentification.shared/: Contient les composants partagés (exceptions, types, middlewares, etc.).api/: Module central, point d'entrée de l'application, qui orchestre les modules métiers.
Chaque module métier est autonome, avec sa propre logique métier, ses contrôleurs et ses services. Les noms des modules
sont simples et sans préfixe/suffixe (ex. : authentication, pas auth-module).
- Docker et Docker Compose installés.
- Accès au registre privé
ghcr.io. - Un fichier
.envconfiguré à la racine du projet.
-
Vérifiez que le fichier
.envest présent et correctement configuré. -
Lancez la stack avec la commande suivante :
docker compose up -d
Cela déploie :
- L'API (conteneur principal).
- Une instance PostgreSQL.
- Une instance Dragonfly (cache compatible Redis).
L'image de l'API est disponible sur le registre privé :
docker pull ghcr.io/click-and-eat-organization/click-and-eat-api:0.0.1-snapshotVoici un exemple de configuration pour le fichier .env :
# API
PROJECT_MODE=development
SERVER_PORT=8080
USE_TESTCONTAINERS=false
# Base de données
DB_USERNAME=admin
DB_PASSWORD=securepassword
DB_URL=jdbc:postgresql://localhost:5432/clickandeat
DB_NAME=clickandeat
# JWT
JWT_SECRET=your_jwt_secret_key
EXPIRATION_ACCESS_TOKEN=15m
EXPIRATION_REFRESH_TOKEN=7d
# Cache
REDIS_HOST=localhost
REDIS_PORT=6379
# Docker Compose
DOCKER_DB_PORTS=5432:5432L'API utilise le standard JWT avec deux types de tokens :
- Access Token : Token de courte durée pour les requêtes authentifiées.
- Refresh Token : Token de longue durée pour renouveler les access tokens.
JWT_SECRET: Clé secrète pour signer les tokens.EXPIRATION_ACCESS_TOKEN: Durée de vie de l'access token (ex. :15mpour 15 minutes).EXPIRATION_REFRESH_TOKEN: Durée de vie du refresh token (ex. :7dpour 7 jours).
- Base de données : PostgreSQL
- Cache : Dragonfly (compatible Redis)
- Architecture : Monolithe modulaire
- Langage et framework : Java 24 / Spring
Consultez les règles Git et la configuration CI pour comprendre le fonctionnement des branches, PR et des vérifications automatiques.