sprout_backend Architecture
NestJS-based microservice providing REST API and background job processing.
Overview
The sprout_backend is the core API service for the Sprout platform. It provides:
- REST API endpoints for the frontend
- Background job processing with BullMQ
- Event matching and pricing logic
- Inventory management
- User authentication
Architecture
Entry Points
1. Main API Server (src/main.ts)
- HTTP server on port 3000
- REST API endpoints
- Health checks
- Metrics endpoint
- Bull Board UI at
/queues
2. Background Worker (src/worker.ts)
- Queue processor on port 4001
- Processes jobs from BullMQ queues
- Separate OpenTelemetry tracing
- Metrics collection
3. CLI Interface (src/cli.ts)
- Command-line tools
- Uses nest-commander
- Operational commands
- Testing utilities
Core Modules
Data Processing
modules/data/event-matcher/
- Core event matching logic
- Price comparison
- Inventory matching
modules/data/skybox/
- Skybox API integration
- Inventory management
- Price updates
modules/data/ticketmaster/
- Ticketmaster Discovery API
- Event data synchronization
modules/data/tickops/
- TickOps service integration
- Purchase processing
Infrastructure
modules/db/
- Database service
- Prisma client
- Connection management
modules/worker/
- BullMQ configuration
- Queue management
- Job processing
modules/cache/
- Redis caching
- Cache strategies
Scrapers
scrapers/
- Web scraping services
- Firecrawl integration
- Playwright integration
Key Services
Event Matching Service
- Matches events across platforms
- Price comparison
- Inventory assignment
Inventory Service
- Skybox inventory management
- Purchase processing
- Status tracking
Pricing Service
- Price monitoring
- Price history
- Cost analysis
Database Schema
Uses Prisma ORM with PostgreSQL:
- Event Data: TicketmasterEvent, SkyboxResult, CombinedResult
- Inventory: SkyboxInventory, SkyboxSoldInventory
- Purchases: AssignedSoldInventory
- Monitoring: MonitoredListing, MonitoredListingPriceHistory
- Pipeline: EventRun, EventRunItem
Queue System
Queues
-
ETL_QUEUE (concurrency: 5)
- Data processing jobs
- Event synchronization
- Inventory updates
-
EVENT_MATCHER_QUEUE (concurrency: 1)
- Event matching jobs
- Price comparisons
Job Processing
- BullMQ for job queuing
- Redis for queue storage
- Retry logic and error handling
- Metrics and monitoring
API Endpoints
Health & Metrics
GET /health- Health checkGET /metrics- Prometheus metricsGET /queues- Bull Board UI
Event Management
- Event CRUD operations
- Event matching
- Price queries
Inventory Management
- Inventory CRUD
- Purchase processing
- Status updates
Monitoring
Metrics
- Request duration
- Success rates
- Queue metrics
- Business metrics
Logging
- Structured logging with Pino
- Request/response logging
- Error tracking
Tracing
- OpenTelemetry integration
- Distributed tracing
- Performance monitoring
Configuration
Environment variables validated with Joi schema in src/config.ts:
- Database connection
- Redis connection
- API keys
- Service URLs
- Monitoring configuration
Development
Running Locally
# Start API server
doppler run -- bun run start:dev
# Start worker
doppler run -- bun run worker:dev
# View queue dashboard
open http://localhost:3000/queues
Testing
# Unit tests
bun test
# E2E tests
bun run test:e2e
# Coverage
bun run test:cov
References
- Repository Documentation
- CLAUDE.md - Developer guide
- Commands Reference