How grb10988/event-reservation-api works
Event Reservation is an ASP.NET Core API for managing customers, venues, events, seats, reservations, and orders. The principal workflow begins with an HTTP request, enters the relevant endpoint, is dispatched to an application feature, and uses repository abstractions backed by PostgreSQL; results are returned through the API. A separate RabbitMQ integration-event path consumes messages and dispatches them to handlers, while application messaging can publish events. The README is empty, so capability coverage is based on the feature tree; several internal links are omitted where sampled code does not establish their wiring.
Main entry points: Program.cs API host · QueryHandlerWrapper.cs Request pipeline · Dispatcher.cs Request dispatcher · Interfaces Repository contracts
Components 29
HTTP API
- API host
src/api/Program.cs - Customer endpoints
src/api/Endpoints/CustomerEndpoints.cs - Event endpoints
src/api/Endpoints/EventEndpoints.cs - Venue endpoints
src/api/Endpoints/VenueEndpoints.cs - Seat endpoints
src/api/Endpoints/SeatEndpoints.cs - Reservation endpoints
src/api/Endpoints/ReservationEndpoints.cs - Order endpoints
src/api/Endpoints/OrderEndpoints.cs - Event operations
src/api/Endpoints/EventEndpoints.cs - Telemetry export
src/api/DependencyInjection/ObservabilityServiceCollectionExtensions.cs
Application workflows
- Request dispatcher
src/application/Abstractions/Dispatcher.cs - Request pipeline
src/application/Abstractions/Requests/QueryHandlerWrapper.cs - Customer workflows
src/application/Features/Customers - Venue workflows
src/application/Features/Venues - Event workflows
src/application/Features/Events - Seat workflows
src/application/Features/Seats - Reservation workflows
src/application/Features/Reservations - Order workflows
src/application/Features/Orders - Repository contracts
src/application/Interfaces - Integration dispatcher
src/application/Abstractions/IntegrationEvents/IntegrationEventDispatcher.cs
Domain model
- Reservation models
src/domain/Models - Result handling
src/domain/Results/Result.cs
Persistence
- SQL repositories
src/infrastructure/Persistence/Repositories - Postgres connection
src/infrastructure/Persistence/NpgsqlConnectionFactory.cs
Messaging
- RabbitMQ consumer
src/infrastructure/Messaging/Consumers/RabbitMqConsumerWorker.cs - RabbitMQ publisher
src/infrastructure/Messaging/Publishers/RabbitMqPublisher.cs
Other components
- API caller
- PostgreSQL
- RabbitMQ broker
- OTLP collector
Connections 41
- API caller → API host: sends HTTP
- API host → Customer endpoints: maps routes
- API host → Event endpoints: maps routes
- API host → Venue endpoints: maps routes
- API host → Seat endpoints: maps routes
- API host → Reservation endpoints: maps routes
- API host → Order endpoints: maps routes
- Customer endpoints → Request dispatcher: dispatches requests
- Event endpoints → Request dispatcher: dispatches requests
- Venue endpoints → Request dispatcher: dispatches requests
- Seat endpoints → Request dispatcher: dispatches requests
- Reservation endpoints → Request dispatcher: dispatches requests
- Order endpoints → Request dispatcher: dispatches requests
- Request dispatcher → Request pipeline: handles requests
- Request pipeline → Customer workflows: invokes handler
- Request pipeline → Venue workflows: invokes handler
- Request pipeline → Event workflows: invokes handler
- Request pipeline → Seat workflows: invokes handler
- Request pipeline → Reservation workflows: invokes handler
- Request pipeline → Order workflows: invokes handler
- Customer workflows → Repository contracts: uses contracts
- Venue workflows → Repository contracts: uses contracts
- Event workflows → Repository contracts: uses contracts
- Seat workflows → Repository contracts: uses contracts
- Reservation workflows → Repository contracts: uses contracts
- Order workflows → Repository contracts: uses contracts
- Repository contracts → SQL repositories: implemented by
- SQL repositories → Postgres connection: opens connections
- Postgres connection → PostgreSQL: connects to
- SQL repositories → PostgreSQL: queries and updates
- Customer workflows → Reservation models: uses models
- Venue workflows → Reservation models: uses models
- Event workflows → Reservation models: uses models
- Seat workflows → Reservation models: uses models
- Reservation workflows → Reservation models: uses models
- Order workflows → Reservation models: uses models
- RabbitMQ consumer → RabbitMQ broker: consumes messages
- RabbitMQ consumer → Integration dispatcher: dispatches events
- RabbitMQ publisher → RabbitMQ broker: publishes events
- API host → Telemetry export: configures
- Telemetry export → OTLP collector: exports telemetry