Splendor
A multiplayer web version of the board game Splendor. My first-year group project at Howest, with a Java API on Vert.x and a board in plain HTML, CSS and JavaScript. A learning project.
Technologies
- Java 21
- HTML
- CSS
- JavaScript
- Vert.x
- OpenAPI
- JUnit
- Gradle
Architecture
- API
- Java 21 on Vert.x, routed through an OpenAPI bridge. Game logic sits in Game, Market, Player and Noble classes.
- Board
- ES modules split per feature, with no framework.
- Sync
- The board polls the API every second.
- Auth
- A bearer token per player.
- Rules
- The API validates every move, including payments and noble visits.
- Quality
- JUnit and JaCoCo on the API. HTML validation and SonarQube in CI.
Features
Lobby
HTML · JavaScript · Java · Vert.x
- Create public or private games
- Join from a list of open games
- Waiting room that starts when the table is full
Game
HTML · CSS · JavaScript · Java · Vert.x
- Take and return gem tokens
- Buy or reserve development cards, paying with gold where needed
- Nobles visit when a player qualifies
- Winner decided after the last round, shown on a leaderboard
Extras
HTML · CSS · JavaScript
- How-to-play page
- Background music with sound settings
My part
- Over 100 custom assets: development cards from photos of the Howest campus, noble cards, avatars, gem tokens and backgrounds
- Lobby: creating games, joining private ones, and the waiting room
- Leaderboard and the end-of-game flow
- Noble rendering and the pay-with-gold selector on the board
- API endpoints to buy and reserve cards and to update tokens
- Payment validation, noble eligibility and winner logic
- Game management in the service layer, and tests for it