How n-mehdi/ensai-projet-info-2a works
ENSAI Cocktail Manager is a FastAPI/PostgreSQL application for managing cocktail recipes and a user’s cocktail-related resources. The main workflow is an API request, optional JWT-based user resolution, business logic in a service, and persistence through DAOs to PostgreSQL. Documented capabilities also include private cocktail access, reviews, favorites, tested cocktails, ingredient stock, shopping lists, and unit conversion. The graph follows the sampled routes and service/DAO references; unsampled capability links are documented at subsystem level rather than inferred as detailed call chains.
Main entry points: main.py API router · cocktail_service.py Cocktail logic · liste_course_service.py Shopping lists · utilisateur_service.py User service
Components 23
API and identity
- Application entry
src/main.py - API router
src/api/main.py - JWT user resolution
src/api/deps.py - User routes
src/api/routes/utilisateur_routes.py - Login routes
src/api/routes/login.py - User service
src/service/utilisateur_service.py
Cocktail domain
- Cocktail routes
src/api/routes/cocktail_routes.py - Private cocktail access
src/api/routes/acces_routes.py - Cocktail logic
src/service/cocktail_service.py - Reviews
src/api/routes/avis_routes.py - Favorites and tested cocktails
src/api/routes
Stock and shopping
- Shopping lists
src/service/liste_course_service.py - Shopping routes
src/api/routes/liste_course_routes.py - Stock routes
src/api/routes/stock_course_routes.py - Stock logic
src/service/stock_service.py - Ingredient logic
src/service/ingredient_service.py - Unit conversion
src/utils/conversion_unite.py
Data persistence
- User persistence
src/dao/utilisateur_dao.py - Cocktail persistence
src/dao/cocktail_dao.py - Stock persistence
src/dao/stock_dao.py - Ingredient persistence
src/dao/ingredient_dao.py - PostgreSQL
Other components
- User
Connections 31
- User → Application entry: requests API
README.md - Application entry → API router: starts API
src/main.py - API router → Login routes: registers routes
src/api/main.py - API router → User routes: registers routes
src/api/main.py - API router → Cocktail routes: registers routes
src/api/main.py - API router → Private cocktail access: registers routes
src/api/main.py - API router → Reviews: registers routes
src/api/main.py - API router → Shopping routes: registers routes
src/api/main.py - API router → Stock routes: registers routes
src/api/main.py - API router → Favorites and tested cocktails: registers routes
src/api/main.py - User routes → User service: delegates to
src/api/routes/utilisateur_routes.py - Login routes → User service: authenticates via
- JWT user resolution → User service: resolves user via
src/api/deps.py - User service → User persistence: reads and writes
src/service/utilisateur_service.py - Cocktail routes → Cocktail logic: delegates to
src/api/routes/cocktail_routes.py - Private cocktail access → Cocktail logic: uses service
src/api/routes/acces_routes.py - Cocktail logic → Cocktail persistence: queries recipes
src/service/cocktail_service.py - Reviews → Cocktail routes: supports recipe reviews
README.md - Shopping routes → Shopping lists: delegates to
src/api/routes/liste_course_routes.py - Shopping lists → Ingredient persistence: looks up ingredients
src/service/liste_course_service.py - Shopping lists → Stock persistence: reads stock
src/service/liste_course_service.py - Shopping lists → Unit conversion: converts quantities
src/service/liste_course_service.py - Stock routes → Stock logic: delegates to
src/api/routes/stock_course_routes.py - Stock logic → Stock persistence: reads and writes
src/service/stock_service.py - Stock logic → Ingredient persistence: uses ingredient data
src/service/stock_service.py - Cocktail logic → Stock persistence: checks availability
src/service/cocktail_service.py - Cocktail logic → Unit conversion: normalizes measures
src/service/cocktail_service.py - Ingredient persistence → PostgreSQL: queries
src/dao/ingredient_dao.py - Stock persistence → PostgreSQL: queries
src/dao/stock_dao.py - Cocktail persistence → PostgreSQL: queries
src/dao/cocktail_dao.py - User persistence → PostgreSQL: queries
src/dao/utilisateur_dao.py