How nutcas3/lets-bet works
This is a multi-country betting platform whose documented user journey spans sports odds and bet placement, wallet funding, game play, and settlement. The repository separates HTTP/service entry points, country-specific payment adapters, core use cases, and shared infrastructure. The sampled code confirms the odds engine’s provider/cache/event flow and the crash-game engine’s dependencies; the README supplies the broader product capabilities and service architecture. Some documented flows have no sampled implementation excerpt, so their links are shown only where the README explicitly describes them.
Main entry points: engine.go Odds engine · crash_engine.go Crash game engine · main.go API gateway · mpesa.go Country payment adapters
Components 23
Service entry points
- API gateway
cmd/gateway/main.go - Betting engine
cmd/engine/main.go - Games service
cmd/games/main.go - Wallet service
cmd/wallet/main.go - Settlement service
cmd/settlement/main.go
Betting and games
- Sports HTTP
internal/infrastructure/http/engine_handlers.go - Bet placement
internal/core/usecase/place_bet.go - Odds engine
internal/core/usecase/odds/engine.go - Live sports
internal/sports/live/service.go - Crash game engine
internal/core/usecase/games/crash_engine.go - Provably fair
internal/core/usecase/provably_fair.go
Wallet and compliance
- Wallet operations
internal/core/usecase/wallet/wallet.go - Tax calculations
internal/core/usecase/tax/tax.go - Country payment adapters
internal/tenant/ke/mpesa.go - BCLB compliance
internal/compliance/bclb/service.go - Smile ID KYC
internal/infrastructure/kyc/smileid.go
Shared infrastructure
- PostgreSQL
internal/infrastructure/repository/postgres/sport_bet_repository.go - Redis cache
internal/infrastructure/storage/odds_cache.go - NATS event bus
internal/infrastructure/events/bus.go
Other components
- Bettor
- Sports odds feeds
- Payment networks
- Identity provider
Connections 28
- Bettor → API gateway: submits requests
- Bettor → Games service: plays crash game
- API gateway → Betting engine: routes betting
- API gateway → Wallet service: routes wallet
- API gateway → Games service: routes game
- Betting engine → Sports HTTP: registers routes
- Sports HTTP → Odds engine: handles odds
- Bet placement → Tax calculations: applies tax
- Bet placement → Wallet operations: reserves funds
- Bet placement → PostgreSQL: persists bet
- Odds engine → Sports odds feeds: fetches odds
- Odds engine → Redis cache: caches odds
- Odds engine → NATS event bus: publishes updates
- Odds engine → Redis cache: reads odds
- Live sports → Sports odds feeds: retrieves events
- Games service → Crash game engine: starts engine
- Crash game engine → Provably fair: generates outcomes
- Crash game engine → Wallet operations: uses wallet
- Crash game engine → Tax calculations: uses tax
- Crash game engine → PostgreSQL: stores game data
- Wallet service → Country payment adapters: initiates payment
- Country payment adapters → Payment networks: requests transfer
- Payment networks → Country payment adapters: sends callback
- Country payment adapters → Wallet operations: credits wallet
- BCLB compliance → Smile ID KYC: requests verification
- Smile ID KYC → Identity provider: verifies identity
- Settlement service → PostgreSQL: reads bet records
- Settlement service → Wallet operations: pays winners