Backend service for the Go Game Project, handling sessions, authentication, and bot orchestration.
The Session Server is a Spring Boot application responsible for:
- Session Management: Creation, matching, and lifecycle of game sessions.
- Authentication: JWT-based user authentication.
- Game Orchestration: Manages turn order, session state, and persistence.
- Game Rules & AI: Delegates move validation and bot logic to the GnuGo Sidecar.
- Java 21 (Eclipse Temurin recommended)
- Docker (for GnuGo and Firestore Emulator)
The server follows a Sidecar Pattern for AI integration:
- Main Container: Spring Boot App (on port
8080). - Sidecar: GnuGo Engine (on
localhost:8001, TCP).
This project uses Maven and the Spock Framework for testing.
# Build the application
./mvnw clean package
# Run all tests (Integration)
./scripts/test_local.shThe easiest way to run the full stack (Session Server + GnuGo + Firestore Emulator) is via Docker Compose.
./scripts/run_local.sh
This will spin up:
- `go-session-server` (Port 8080)
- `gnugo` (Internal Port 8001, accessible by server)
- `firestore-emulator` (Database)