Overview
The Catalog service is responsible for managing the event catalog, including event details, venues, and seatmaps. It provides read-only access to event information and seat availability for the ticketing platform. Port: 50001 (external), 5001 (internal)Database Schema:
bc_catalogDependencies: PostgreSQL
Responsibilities
- Store and retrieve event information (name, description, date, pricing)
- Manage venue seatmaps with section, row, and seat details
- Provide event listings and detailed event views
- Track seat status (available, reserved, sold)
- Support querying events and seats by various criteria
API Endpoints
All endpoints are accessed via theEventsController.
Get All Events
Returns a list of all available events without seatmap details.
Get Event by ID
Returns a specific event by ID without seatmap details.
The unique identifier of the event
Get Event Seatmap
Returns a specific event with its complete seatmap including all seat details.
The unique identifier of the event
Domain Models
Event
Represents a ticketed event with associated seats.Unique event identifier
Event name
Event description
Date and time of the event
Base ticket price for the event
Collection of all seats for this event
~/workspace/source/services/catalog/src/Domain/Entities/Event.cs
Seat
Represents an individual seat within an event venue.Unique seat identifier
Reference to the parent event
Venue section code (e.g., “A”, “B”, “VIP”)
Row number within the section
Seat number within the row
Price for this specific seat
Current seat status:
available, reserved, or soldID of the active reservation (if reserved)
~/workspace/source/services/catalog/src/Domain/Entities/Seat.cs
Configuration
Database Connection
appsettings.json
bc_catalog) within the shared ticketing database.
CORS
Configured to allow requests from the frontend running onhttp://localhost:3000.
Use Cases
- GetAllEvents: Retrieves all events for display in event listings
- GetEvent: Retrieves a single event’s basic information
- GetEventSeatmap: Retrieves an event with complete seatmap data for seat selection
Architecture Notes
- Uses MediatR for CQRS-style command/query handling
- Read-only service (no write operations exposed via API)
- Seat status updates are managed by the Inventory service
- Infrastructure services registered via
AddInfrastructure()extension method
