How balloprotel/projet_indiv26-espace-com-troc-don works
This repository implements a community donation-and-barter marketplace: members publish listings and images, moderators approve them, and members propose exchanges or donations through completion. The web client reaches services through a URL-preserving gateway; Catalog owns listing data, Marketplace owns proposals and transactions, and Notification consumes events. The README documents Keycloak, MinIO, PostgreSQL, and RabbitMQ roles. Edges below rely on README statements and the shown controller/module references; unsampled service internals and runtime wiring are not asserted.
Main entry points: proxy.ts API Gateway · proposals.controller.ts Proposals · listings Listings and moderation · catalog-client.service.ts Catalog client
Components 20
Web experience
- Marketplace UI
apps/web
API edge
- API Gateway
apps/gateway/src/proxy.ts - Legacy API fallback
apps/api/src
Catalog service
- Listings and moderation
apps/catalog-service/src/listings - Image management
apps/catalog-service/src/listings/listing-images.service.ts - Image object storage
apps/catalog-service/src/storage/object-storage.service.ts - Internal listing API
apps/catalog-service/src/internal/internal-listings.controller.ts - Catalog PostgreSQL
apps/catalog-service/src/prisma/prisma.service.ts
Marketplace service
- Proposals
apps/marketplace-service/src/proposals/proposals.controller.ts - Transactions
apps/marketplace-service/src/transactions/transactions.controller.ts - Catalog client
apps/marketplace-service/src/catalog/catalog-client.service.ts - Marketplace PostgreSQL
apps/marketplace-service/src/prisma/prisma.service.ts - Event publisher and outbox
apps/marketplace-service/src/events/event-publisher.service.ts
Notifications
- RabbitMQ
- Event consumer
apps/notification-service/src/rabbitmq/rabbitmq.consumer.ts - Notification inbox
apps/notification-service/src/notifications/notification.store.ts - Recent notifications
apps/notification-service/src/notifications/notifications.controller.ts
Other components
- Visitor or member
- Keycloak OIDC
- MinIO
Connections 20
- Visitor or member → Marketplace UI: uses
README.md - Marketplace UI → API Gateway: calls API
README.md - API Gateway → Listings and moderation: routes requests
README.md - API Gateway → Proposals: routes requests
README.md - API Gateway → Legacy API fallback: fallback routes
README.md - Listings and moderation → Catalog PostgreSQL: reads and writes
- Image management → Image object storage: stores images
- Image object storage → MinIO: uses
README.md - Proposals → Marketplace PostgreSQL: persists proposals
- Transactions → Marketplace PostgreSQL: persists transactions
- Proposals → Catalog client: checks listing
- Transactions → Catalog client: checks listing
- Catalog client → Internal listing API: requests listing
README.md - Internal listing API → Listings and moderation: reads listings
- Event publisher and outbox → Marketplace PostgreSQL: records outbox
README.md - Event publisher and outbox → RabbitMQ: publishes events
README.md - RabbitMQ → Event consumer: delivers events
README.md - Event consumer → Notification inbox: stores and deduplicates
README.md - Recent notifications → Notification inbox: reads recent
apps/notification-service/src/notifications/notifications.controller.ts - Visitor or member → Keycloak OIDC: authenticates
README.md