How boorry/dominos works
Dominos is a Spring Boot multiplayer domino game with REST account, matchmaking, game, tournament, and statistics features, plus WebSocket game notifications. A typical flow is player registration, joining a queue, automatic creation of a game for three players, then turn-by-turn play through the game engine. Tournaments can also create games for bracket matches. The README gives no detail; the map combines the tree with sampled controller and service excerpts, so links for unsampled controller or feature internals are omitted.
Main entry points: PartieApplicationService.java Game application service · UtilisateurRepository.java User repository · TournoiService.java Tournament service · UtilisateurController.java User controller
Components 24
REST API
- User controller
dominos/src/main/java/com/dominos/api/controller/UtilisateurController.java - Matchmaking controller
dominos/src/main/java/com/dominos/api/controller/MatchmakingController.java - Game controller
dominos/src/main/java/com/dominos/api/controller/PartieController.java - Tournament controller
dominos/src/main/java/com/dominos/api/controller/TournoiController.java
Accounts and stats
- User service
dominos/src/main/java/com/dominos/application/utilisateur/UtilisateurService.java - Password hashing
dominos/src/main/java/com/dominos/domain/utilisateur/MotDePasseService.java - User repository
dominos/src/main/java/com/dominos/application/utilisateur/UtilisateurRepository.java - User persistence
dominos/src/main/java/com/dominos/infrastructure/utilisateur/UtilisateurRepositoryJpa.java - Statistics service
dominos/src/main/java/com/dominos/application/stats/StatsService.java - Statistics repository
dominos/src/main/java/com/dominos/application/stats/StatsRepository.java - Statistics queries
dominos/src/main/java/com/dominos/infrastructure/stats/StatsRepositoryJpa.java
Matchmaking and play
- Matchmaking service
dominos/src/main/java/com/dominos/application/matchmaking/MatchmakingService.java - Queue repository
dominos/src/main/java/com/dominos/application/matchmaking/MatchmakingRepository.java - In-memory queue
dominos/src/main/java/com/dominos/infrastructure/matchmaking/MatchmakingRepositoryMemoire.java - Game application service
dominos/src/main/java/com/dominos/application/partie/PartieApplicationService.java - Game persistence
dominos/src/main/java/com/dominos/infrastructure/partie/PartieJpaRepository.java
Tournaments
- Tournament service
dominos/src/main/java/com/dominos/application/tournoi/TournoiService.java - Tournament repository
dominos/src/main/java/com/dominos/application/tournoi/TournoiRepository.java - Tournament storage
dominos/src/main/java/com/dominos/infrastructure/tournoi/TournoiRepositoryMemoire.java
Game domain and delivery
- Game state
dominos/src/main/java/com/dominos/domain/Partie.java - Move engine
dominos/src/main/java/com/dominos/moteur/MoteurJeu.java - Game notifications
dominos/src/main/java/com/dominos/application/partie/NotificationService.java
Other components
- Player
- WebSocket clients
Connections 28
- Player → User controller: sends account requests
- Player → Matchmaking controller: joins queue
- Player → Game controller: plays turns
- Player → Tournament controller: enters tournaments
- User controller → User service: delegates
- User controller → Statistics service: requests stats
- User service → User repository: reads and saves
- User service → Password hashing: hashes and verifies
- User repository → User persistence: implemented by
- Statistics service → User repository: checks player
- Statistics service → Statistics repository: calculates stats
- Statistics repository → Statistics queries: implemented by
- Matchmaking controller → Matchmaking service: delegates
- Matchmaking controller → Game application service: creates matched game
- Matchmaking service → User repository: loads players
- Matchmaking service → Queue repository: manages queue
- Queue repository → In-memory queue: implemented by
- Game controller → Game application service: handles game requests
- Game application service → Move engine: runs moves
- Game application service → Game persistence: saves game
- Game application service → Game notifications: dispatches events
- Move engine → Game state: updates state
- Game notifications → WebSocket clients: publishes events
- Tournament controller → Tournament service: delegates
- Tournament service → Tournament repository: loads and saves
- Tournament repository → Tournament storage: implemented by
- Tournament service → User repository: loads entrants
- Tournament service → Game application service: creates match games