Boardgame Connect is a full-stack web application designed to connect board game players with local associations.
- Framework: Angular 21
- State Management: Angular Signals
- Framework: Spring Boot 3
- Language: Java 21
- Database: PostgreSQL
- ORM: Spring Data JPA (Hibernate)
- Security: Spring Security & JWT (JSON Web Tokens)
- Build Tool: Maven
- Nginx
- Docker Compose
The application is built as a distributed system using Docker containers, following modern software engineering principles.
Nginx acts as the single entry point (Reverse Proxy), routing traffic to the appropriate service based on the URL. This ensures a clean separation between the client and server while solving CORS issues in production.
| URL Path | Service | Internal Port | Description |
|---|---|---|---|
/ |
Frontend | 80 | Serves the Angular static files (SPA) |
/api/** |
Backend | 8080 | Proxies API requests to the Spring Boot container |
The system follows a RESTful architecture. The backend exposes resources (Users, Games, Associations) via standard HTTP methods (GET, POST, PUT, DELETE), ensuring a stateless and predictable interface.
The Angular client is structured using the Component-Service-Model pattern to ensure separation of concerns:
- Models: TypeScript interfaces defining the shape of data.
- Services: Injectable classes handling communication with the Backend system using REST APIs.
- Components: Standalone UI units responsible for presenting data and capturing user events.
The Spring Boot application adapts the classic Model-View-Controller (MVC) pattern for REST APIs:
- Controller: Handles incoming HTTP requests and maps them to service methods.
- Model: Represented by JPA Entities and DTOs (Data Transfer Objects) that manage data and business rules.
- View: Instead of rendering HTML server-side, the view is delegated to the Frontend system.
Docker and Docker Compose are required to run the full application.
The easiest way to run the application is using Docker Compose. This will set up the database, backend, and frontend automatically.
-
Clone the repository:
git clone https://github.com/emanuelebrizzi/game-connect.git cd boardgame-connect -
Build and Run:
docker-compose up --build --force-recreate -d
-
Access the Application: Open your browser and navigate to:
-
Stop the Application: Press
Ctrl+Cin the terminal or run:docker-compose down