# vishal343012/boardgame architecture

> Architecture diagram of the GitHub repository vishal343012/boardgame, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/vishal343012/boardgame
- Repository: https://github.com/vishal343012/boardgame

## Overview

Boardgame Listing is a Spring Boot web application for browsing boardgames and reviews, with role-gated creation and manager review editing/deletion. Users browse through the web UI or the boardgame REST endpoints; controllers delegate data access to JDBC-backed storage. Authentication and role permissions are a distinct capability, as are signup and the role-specific screens. The README documents these capabilities, but HomeController, security configuration, templates, and database initialization were not sampled, so their internal routing is not asserted.

Main entry points: [`src/main/java/com/javaproject/database/DatabaseAccess.java`](https://github.com/vishal343012/boardgame/blob/main/src/main/java/com/javaproject/database/DatabaseAccess.java) (JDBC data access), [`src/main/java/com/javaproject/controllers/BoardGameController.java`](https://github.com/vishal343012/boardgame/blob/main/src/main/java/com/javaproject/controllers/BoardGameController.java) (Boardgame API), [`src/main/java/com/javaproject/controllers/HomeController.java`](https://github.com/vishal343012/boardgame/blob/main/src/main/java/com/javaproject/controllers/HomeController.java) (Page controller), [`src/main/java/com/javaproject/security/SecurityConfig.java`](https://github.com/vishal343012/boardgame/blob/main/src/main/java/com/javaproject/security/SecurityConfig.java) (Authentication and roles)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web application"]
  node_boot["Spring Boot app"]
  node_web_controller["Page controller"]
  node_api_controller["Boardgame API"]
  node_web_views["Web views"]
  node_browser_assets["Browser script<br/>[script.js]"]
end

subgraph group_domain["Boardgame domain"]
  node_boardgames["Boardgame records<br/>[BoardGame.java]"]
  node_reviews["Review records<br/>[Review.java]"]
  node_api_errors["API error response<br/>[ErrorMessage.java]"]
end

subgraph group_security["Access control"]
  node_security_config["Authentication and roles"]
  node_denied_handler["Access denied handler"]
  node_signup_views["Signup and role screens<br/>[new-user.html]"]
end

subgraph group_persistence["Persistence"]
  node_jdbc_access["JDBC data access"]
  node_h2_store[("H2 database")]
  node_schema["Initial schema and data<br/>[schema.sql]"]
end

node_visitor(("Visitor / member"))

node_boot -.->|"hosts pages"| node_web_controller
node_visitor -.->|"browses"| node_web_controller
node_visitor -.->|"requests games"| node_api_controller
node_api_controller -->|"delegates queries"| node_jdbc_access
node_jdbc_access -->|"maps rows"| node_boardgames
node_jdbc_access -->|"maps rows"| node_reviews
node_api_controller -->|"returns errors"| node_api_errors
node_jdbc_access -->|"queries via JDBC"| node_h2_store
node_schema -.->|"initializes"| node_h2_store
node_visitor -.->|"authenticates"| node_security_config
node_security_config -.->|"handles denial"| node_denied_handler
node_visitor -.->|"signs up"| node_signup_views
node_web_controller -.->|"renders pages"| node_web_views
node_signup_views -.->|"validates roles"| node_browser_assets

click node_boot "https://github.com/vishal343012/boardgame/blob/main/src/main/java/com/javaproject/DatabaseServiceProjectApplication.java"
click node_web_controller "https://github.com/vishal343012/boardgame/blob/main/src/main/java/com/javaproject/controllers/HomeController.java"
click node_api_controller "https://github.com/vishal343012/boardgame/blob/main/src/main/java/com/javaproject/controllers/BoardGameController.java"
click node_web_views "https://github.com/vishal343012/boardgame/tree/main/src/main/resources/templates"
click node_browser_assets "https://github.com/vishal343012/boardgame/blob/main/src/main/resources/static/js/script.js"
click node_boardgames "https://github.com/vishal343012/boardgame/blob/main/src/main/java/com/javaproject/beans/BoardGame.java"
click node_reviews "https://github.com/vishal343012/boardgame/blob/main/src/main/java/com/javaproject/beans/Review.java"
click node_api_errors "https://github.com/vishal343012/boardgame/blob/main/src/main/java/com/javaproject/beans/ErrorMessage.java"
click node_security_config "https://github.com/vishal343012/boardgame/blob/main/src/main/java/com/javaproject/security/SecurityConfig.java"
click node_denied_handler "https://github.com/vishal343012/boardgame/blob/main/src/main/java/com/javaproject/security/LoggingAccessDeniedHandler.java"
click node_signup_views "https://github.com/vishal343012/boardgame/blob/main/src/main/resources/templates/new-user.html"
click node_jdbc_access "https://github.com/vishal343012/boardgame/blob/main/src/main/java/com/javaproject/database/DatabaseAccess.java"
click node_schema "https://github.com/vishal343012/boardgame/blob/main/src/main/resources/schema.sql"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_boot,node_web_controller,node_api_controller,node_web_views,node_browser_assets toneBlue
class node_boardgames,node_reviews,node_api_errors toneAmber
class node_security_config,node_denied_handler,node_signup_views toneMint
class node_jdbc_access,node_h2_store,node_schema toneRose
class node_visitor toneIndigo
```

## Components

### Web application

- [Spring Boot app](https://github.com/vishal343012/boardgame/blob/main/src/main/java/com/javaproject/DatabaseServiceProjectApplication.java): `src/main/java/com/javaproject/DatabaseServiceProjectApplication.java`
- [Page controller](https://github.com/vishal343012/boardgame/blob/main/src/main/java/com/javaproject/controllers/HomeController.java): `src/main/java/com/javaproject/controllers/HomeController.java`
- [Boardgame API](https://github.com/vishal343012/boardgame/blob/main/src/main/java/com/javaproject/controllers/BoardGameController.java): `src/main/java/com/javaproject/controllers/BoardGameController.java`
- [Web views](https://github.com/vishal343012/boardgame/tree/main/src/main/resources/templates): `src/main/resources/templates`
- [Browser script](https://github.com/vishal343012/boardgame/blob/main/src/main/resources/static/js/script.js): `src/main/resources/static/js/script.js`

### Boardgame domain

- [Boardgame records](https://github.com/vishal343012/boardgame/blob/main/src/main/java/com/javaproject/beans/BoardGame.java): `src/main/java/com/javaproject/beans/BoardGame.java`
- [Review records](https://github.com/vishal343012/boardgame/blob/main/src/main/java/com/javaproject/beans/Review.java): `src/main/java/com/javaproject/beans/Review.java`
- [API error response](https://github.com/vishal343012/boardgame/blob/main/src/main/java/com/javaproject/beans/ErrorMessage.java): `src/main/java/com/javaproject/beans/ErrorMessage.java`

### Access control

- [Authentication and roles](https://github.com/vishal343012/boardgame/blob/main/src/main/java/com/javaproject/security/SecurityConfig.java): `src/main/java/com/javaproject/security/SecurityConfig.java`
- [Access denied handler](https://github.com/vishal343012/boardgame/blob/main/src/main/java/com/javaproject/security/LoggingAccessDeniedHandler.java): `src/main/java/com/javaproject/security/LoggingAccessDeniedHandler.java`
- [Signup and role screens](https://github.com/vishal343012/boardgame/blob/main/src/main/resources/templates/new-user.html): `src/main/resources/templates/new-user.html`

### Persistence

- [JDBC data access](https://github.com/vishal343012/boardgame/blob/main/src/main/java/com/javaproject/database/DatabaseAccess.java): `src/main/java/com/javaproject/database/DatabaseAccess.java`
- **H2 database**
- [Initial schema and data](https://github.com/vishal343012/boardgame/blob/main/src/main/resources/schema.sql): `src/main/resources/schema.sql`

### Other components

- **Visitor / member**

## Connections

- Spring Boot app → Page controller: hosts pages
- Visitor / member → Page controller: browses
- Visitor / member → Boardgame API: requests games
- Boardgame API → JDBC data access: delegates queries (evidence: `src/main/java/com/javaproject/controllers/BoardGameController.java`)
- JDBC data access → Boardgame records: maps rows (evidence: `src/main/java/com/javaproject/database/DatabaseAccess.java`)
- JDBC data access → Review records: maps rows (evidence: `src/main/java/com/javaproject/database/DatabaseAccess.java`)
- Boardgame API → API error response: returns errors (evidence: `src/main/java/com/javaproject/controllers/BoardGameController.java`)
- JDBC data access → H2 database: queries via JDBC (evidence: `README.md`)
- Initial schema and data → H2 database: initializes
- Visitor / member → Authentication and roles: authenticates (evidence: `README.md`)
- Authentication and roles → Access denied handler: handles denial
- Visitor / member → Signup and role screens: signs up (evidence: `README.md`)
- Page controller → Web views: renders pages
- Signup and role screens → Browser script: validates roles
