# epicanard/globalmarketchest architecture

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

- Interactive diagram: https://gitdiagram.com/epicanard/globalmarketchest
- Repository: https://github.com/epicanard/globalmarketchest

## Overview

GlobalMarketChest is a Spigot plugin for player-facing global item auctions and shops. Players browse, search, create, edit, and buy auctions through inventory GUIs; administrators also manage shops and auctions with commands. Auction and shop managers implement domain operations, backed by SQLite or MySQL and Vault-compatible economy services. The README documents the user capabilities; sampled source confirms key startup, manager-to-database, and query-execution relationships. Several GUI-to-domain links are not visible in the excerpts, so those are marked unverified rather than presented as confirmed calls.

Main entry points: [`src/main/java/fr/epicanard/globalmarketchest/GlobalMarketChest.java`](https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/GlobalMarketChest.java) (Plugin lifecycle), [`src/main/java/fr/epicanard/globalmarketchest/commands/CommandHandler.java`](https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/commands/CommandHandler.java) (Command handler), [`src/main/java/fr/epicanard/globalmarketchest/managers/AuctionManager.java`](https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/managers/AuctionManager.java) (Auction manager), [`src/main/java/fr/epicanard/globalmarketchest/gui/shops/interfaces`](https://github.com/epicanard/globalmarketchest/tree/master/src/main/java/fr/epicanard/globalmarketchest/gui/shops/interfaces) (Shop interfaces)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Entry and Administration"]
  node_plugin["Plugin lifecycle"]
  node_commands["Command handler"]
  node_listeners["Event listeners"]
end

subgraph group_interfaces["Shop Interfaces"]
  node_gui["Inventory GUI<br/>[InventoryGUI.java]"]
  node_shopviews["Shop interfaces"]
  node_categories["Categories and pages"]
end

subgraph group_domain["Auction and Shop Domain"]
  node_auctionmanager["Auction manager"]
  node_auction["Auction data<br/>[AuctionInfo.java]"]
  node_shopmanager["Shop manager<br/>[ShopManager.java]"]
  node_shopdata["Shop data<br/>[ShopInfo.java]"]
end

subgraph group_storage["Persistence"]
  node_dbmanager["Database manager"]
  node_patches["Schema patches<br/>[PatchHandler.java]"]
  node_executor["Query executor<br/>[QueryExecutor.java]"]
  node_connector["Database connector"]
end

subgraph group_support["Configuration and Services"]
  node_config["Configuration loader<br/>[ConfigLoader.java]"]
  node_economy["Vault economy<br/>[VaultEconomy.java]"]
  node_ranks["Ranks and permissions<br/>[RanksLoader.java]"]
  node_language["Language and item utilities<br/>[LangUtils.java]"]
end

node_players(("Players"))
node_admins(("Server admins"))
node_database[("SQLite or MySQL")]
node_vault["Vault and economy plugin"]

node_plugin -->|"registers"| node_commands
node_plugin -->|"registers"| node_listeners
node_players -->|"use shops"| node_gui
node_gui -.->|"renders"| node_shopviews
node_shopviews -.->|"auction actions"| node_auctionmanager
node_shopviews -.->|"browses"| node_categories
node_players -->|"run commands"| node_commands
node_admins -->|"manage shops"| node_commands
node_commands -.->|"administers auctions"| node_auctionmanager
node_commands -.->|"manages shops"| node_shopmanager
node_auctionmanager -->|"uses auction data"| node_auction
node_shopmanager -->|"uses shop data"| node_shopdata
node_auctionmanager -->|"queries"| node_dbmanager
node_shopmanager -->|"queries"| node_dbmanager
node_dbmanager -.->|"builds queries"| node_executor
node_patches -->|"executes patches"| node_executor
node_executor -->|"gets connection"| node_connector
node_connector -.->|"reads and writes"| node_database
node_plugin -->|"initializes"| node_config
node_plugin -->|"initializes"| node_economy
node_economy -->|"integrates"| node_vault
node_plugin -.->|"loads ranks"| node_ranks
node_auction -->|"formats display"| node_language

click node_plugin "https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/GlobalMarketChest.java"
click node_commands "https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/commands/CommandHandler.java"
click node_listeners "https://github.com/epicanard/globalmarketchest/tree/master/src/main/java/fr/epicanard/globalmarketchest/listeners"
click node_gui "https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/gui/InventoryGUI.java"
click node_shopviews "https://github.com/epicanard/globalmarketchest/tree/master/src/main/java/fr/epicanard/globalmarketchest/gui/shops/interfaces"
click node_categories "https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/gui/CategoryHandler.java"
click node_auctionmanager "https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/managers/AuctionManager.java"
click node_auction "https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/auctions/AuctionInfo.java"
click node_shopmanager "https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/managers/ShopManager.java"
click node_shopdata "https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/shops/ShopInfo.java"
click node_dbmanager "https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/database/DatabaseManager.java"
click node_patches "https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/database/PatchHandler.java"
click node_executor "https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/database/querybuilder/QueryExecutor.java"
click node_connector "https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/database/connectors/DatabaseConnector.java"
click node_config "https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/configuration/ConfigLoader.java"
click node_economy "https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/economy/VaultEconomy.java"
click node_ranks "https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/ranks/RanksLoader.java"
click node_language "https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/utils/LangUtils.java"

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_plugin,node_commands,node_listeners toneBlue
class node_gui,node_shopviews,node_categories,node_database toneAmber
class node_auctionmanager,node_auction,node_shopmanager,node_shopdata,node_admins toneMint
class node_dbmanager,node_patches,node_executor,node_connector toneRose
class node_config,node_economy,node_ranks,node_language,node_players,node_vault toneIndigo
```

## Components

### Entry and Administration

- [Plugin lifecycle](https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/GlobalMarketChest.java): `src/main/java/fr/epicanard/globalmarketchest/GlobalMarketChest.java`
- [Command handler](https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/commands/CommandHandler.java): `src/main/java/fr/epicanard/globalmarketchest/commands/CommandHandler.java`
- [Event listeners](https://github.com/epicanard/globalmarketchest/tree/master/src/main/java/fr/epicanard/globalmarketchest/listeners): `src/main/java/fr/epicanard/globalmarketchest/listeners`

### Shop Interfaces

- [Inventory GUI](https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/gui/InventoryGUI.java): `src/main/java/fr/epicanard/globalmarketchest/gui/InventoryGUI.java`
- [Shop interfaces](https://github.com/epicanard/globalmarketchest/tree/master/src/main/java/fr/epicanard/globalmarketchest/gui/shops/interfaces): `src/main/java/fr/epicanard/globalmarketchest/gui/shops/interfaces`
- [Categories and pages](https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/gui/CategoryHandler.java): `src/main/java/fr/epicanard/globalmarketchest/gui/CategoryHandler.java`

### Auction and Shop Domain

- [Auction manager](https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/managers/AuctionManager.java): `src/main/java/fr/epicanard/globalmarketchest/managers/AuctionManager.java`
- [Auction data](https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/auctions/AuctionInfo.java): `src/main/java/fr/epicanard/globalmarketchest/auctions/AuctionInfo.java`
- [Shop manager](https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/managers/ShopManager.java): `src/main/java/fr/epicanard/globalmarketchest/managers/ShopManager.java`
- [Shop data](https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/shops/ShopInfo.java): `src/main/java/fr/epicanard/globalmarketchest/shops/ShopInfo.java`

### Persistence

- [Database manager](https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/database/DatabaseManager.java): `src/main/java/fr/epicanard/globalmarketchest/database/DatabaseManager.java`
- [Schema patches](https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/database/PatchHandler.java): `src/main/java/fr/epicanard/globalmarketchest/database/PatchHandler.java`
- [Query executor](https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/database/querybuilder/QueryExecutor.java): `src/main/java/fr/epicanard/globalmarketchest/database/querybuilder/QueryExecutor.java`
- [Database connector](https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/database/connectors/DatabaseConnector.java): `src/main/java/fr/epicanard/globalmarketchest/database/connectors/DatabaseConnector.java`

### Configuration and Services

- [Configuration loader](https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/configuration/ConfigLoader.java): `src/main/java/fr/epicanard/globalmarketchest/configuration/ConfigLoader.java`
- [Vault economy](https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/economy/VaultEconomy.java): `src/main/java/fr/epicanard/globalmarketchest/economy/VaultEconomy.java`
- [Ranks and permissions](https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/ranks/RanksLoader.java): `src/main/java/fr/epicanard/globalmarketchest/ranks/RanksLoader.java`
- [Language and item utilities](https://github.com/epicanard/globalmarketchest/blob/master/src/main/java/fr/epicanard/globalmarketchest/utils/LangUtils.java): `src/main/java/fr/epicanard/globalmarketchest/utils/LangUtils.java`

### Other components

- **Players**
- **Server admins**
- **SQLite or MySQL**
- **Vault and economy plugin**

## Connections

- Plugin lifecycle → Command handler: registers (evidence: `src/main/java/fr/epicanard/globalmarketchest/GlobalMarketChest.java`)
- Plugin lifecycle → Event listeners: registers (evidence: `src/main/java/fr/epicanard/globalmarketchest/GlobalMarketChest.java`)
- Players → Inventory GUI: use shops (evidence: `README.md`)
- Inventory GUI → Shop interfaces: renders (evidence: `src/main/java/fr/epicanard/globalmarketchest/gui/shops/interfaces/SearchView.java`)
- Shop interfaces → Auction manager: auction actions
- Shop interfaces → Categories and pages: browses
- Players → Command handler: run commands (evidence: `README.md`)
- Server admins → Command handler: manage shops (evidence: `README.md`)
- Command handler → Auction manager: administers auctions
- Command handler → Shop manager: manages shops
- Auction manager → Auction data: uses auction data (evidence: `src/main/java/fr/epicanard/globalmarketchest/managers/AuctionManager.java`)
- Shop manager → Shop data: uses shop data (evidence: `src/main/java/fr/epicanard/globalmarketchest/managers/ShopManager.java`)
- Auction manager → Database manager: queries (evidence: `src/main/java/fr/epicanard/globalmarketchest/managers/AuctionManager.java`)
- Shop manager → Database manager: queries (evidence: `src/main/java/fr/epicanard/globalmarketchest/managers/ShopManager.java`)
- Database manager → Query executor: builds queries
- Schema patches → Query executor: executes patches (evidence: `src/main/java/fr/epicanard/globalmarketchest/database/PatchHandler.java`)
- Query executor → Database connector: gets connection (evidence: `src/main/java/fr/epicanard/globalmarketchest/database/querybuilder/QueryExecutor.java`)
- Database connector → SQLite or MySQL: reads and writes
- Plugin lifecycle → Configuration loader: initializes (evidence: `src/main/java/fr/epicanard/globalmarketchest/GlobalMarketChest.java`)
- Plugin lifecycle → Vault economy: initializes (evidence: `src/main/java/fr/epicanard/globalmarketchest/GlobalMarketChest.java`)
- Vault economy → Vault and economy plugin: integrates (evidence: `README.md`)
- Plugin lifecycle → Ranks and permissions: loads ranks (evidence: `src/main/java/fr/epicanard/globalmarketchest/GlobalMarketChest.java`)
- Auction data → Language and item utilities: formats display (evidence: `src/main/java/fr/epicanard/globalmarketchest/auctions/AuctionInfo.java`)
