# wealthts/paygame architecture

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

- Interactive diagram: https://gitdiagram.com/wealthts/paygame
- Repository: https://github.com/wealthts/paygame

## Overview

This repository contains a Flutter client shell and an Express/MySQL backend for a game-top-up service. The visible backend workflow is: a user registers or logs in, browses games and packages, creates an order, and accesses payment, points, or receipt endpoints; administrators can manage games and complete orders. The Flutter application’s Dart feature code is absent from the supplied tree, so its screens and API calls cannot be mapped. Backend route relationships are shown where the server mounts them; route-to-database links are supported by the source index and sampled route code.

Main entry points: [`backend/server.js`](https://github.com/wealthts/paygame/blob/main/backend/server.js) (Express API), [`backend/db_config.js`](https://github.com/wealthts/paygame/blob/main/backend/db_config.js) (MySQL connection), [`backend/routes/games.js`](https://github.com/wealthts/paygame/blob/main/backend/routes/games.js) (Game management), [`backend/routes/orders.js`](https://github.com/wealthts/paygame/blob/main/backend/routes/orders.js) (Order lifecycle)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["API entry and auth"]
  node_server["Express API<br/>[server.js]"]
  node_auth["Registration and login<br/>[auth.js]"]
  node_middleware["JWT authorization<br/>[auth.js]"]
  node_users["User endpoints<br/>[users.js]"]
end

subgraph group_catalog["Game catalog"]
  node_games["Game management<br/>[games.js]"]
  node_packages["Package endpoints<br/>[packages.js]"]
end

subgraph group_commerce["Orders and fulfillment"]
  node_orders["Order lifecycle<br/>[orders.js]"]
  node_payments["Payment endpoints<br/>[payments.js]"]
  node_points["Points endpoints<br/>[points.js]"]
  node_receipts["Receipt endpoints<br/>[receipts.js]"]
end

subgraph group_persistence["Persistence"]
  node_dbconfig["MySQL connection<br/>[db_config.js]"]
  node_database[("Paygame database")]
end

node_user(("API user"))

node_user -->|"sends API requests"| node_server
node_server -->|"mounts routes"| node_auth
node_server -->|"mounts routes"| node_games
node_server -->|"mounts routes"| node_orders
node_server -->|"mounts routes"| node_packages
node_server -->|"mounts routes"| node_payments
node_server -->|"mounts routes"| node_points
node_server -->|"mounts routes"| node_receipts
node_server -->|"mounts routes"| node_users
node_auth -->|"queries users"| node_dbconfig
node_games -->|"checks admin access"| node_middleware
node_orders -->|"checks access"| node_middleware
node_games -->|"queries games"| node_dbconfig
node_orders -->|"reads and writes orders"| node_dbconfig
node_packages -->|"queries packages"| node_dbconfig
node_payments -->|"queries payment data"| node_dbconfig
node_points -->|"queries points data"| node_dbconfig
node_receipts -->|"queries receipts"| node_dbconfig
node_users -->|"queries users"| node_dbconfig
node_dbconfig -->|"connects to"| node_database

click node_server "https://github.com/wealthts/paygame/blob/main/backend/server.js"
click node_auth "https://github.com/wealthts/paygame/blob/main/backend/routes/auth.js"
click node_middleware "https://github.com/wealthts/paygame/blob/main/backend/middleware/auth.js"
click node_users "https://github.com/wealthts/paygame/blob/main/backend/routes/users.js"
click node_games "https://github.com/wealthts/paygame/blob/main/backend/routes/games.js"
click node_packages "https://github.com/wealthts/paygame/blob/main/backend/routes/packages.js"
click node_orders "https://github.com/wealthts/paygame/blob/main/backend/routes/orders.js"
click node_payments "https://github.com/wealthts/paygame/blob/main/backend/routes/payments.js"
click node_points "https://github.com/wealthts/paygame/blob/main/backend/routes/points.js"
click node_receipts "https://github.com/wealthts/paygame/blob/main/backend/routes/receipts.js"
click node_dbconfig "https://github.com/wealthts/paygame/blob/main/backend/db_config.js"

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_server,node_auth,node_middleware,node_users,node_user toneBlue
class node_games,node_packages toneAmber
class node_orders,node_payments,node_points,node_receipts toneMint
class node_dbconfig,node_database toneRose
```

## Components

### API entry and auth

- [Express API](https://github.com/wealthts/paygame/blob/main/backend/server.js): `backend/server.js`
- [Registration and login](https://github.com/wealthts/paygame/blob/main/backend/routes/auth.js): `backend/routes/auth.js`
- [JWT authorization](https://github.com/wealthts/paygame/blob/main/backend/middleware/auth.js): `backend/middleware/auth.js`
- [User endpoints](https://github.com/wealthts/paygame/blob/main/backend/routes/users.js): `backend/routes/users.js`

### Game catalog

- [Game management](https://github.com/wealthts/paygame/blob/main/backend/routes/games.js): `backend/routes/games.js`
- [Package endpoints](https://github.com/wealthts/paygame/blob/main/backend/routes/packages.js): `backend/routes/packages.js`

### Orders and fulfillment

- [Order lifecycle](https://github.com/wealthts/paygame/blob/main/backend/routes/orders.js): `backend/routes/orders.js`
- [Payment endpoints](https://github.com/wealthts/paygame/blob/main/backend/routes/payments.js): `backend/routes/payments.js`
- [Points endpoints](https://github.com/wealthts/paygame/blob/main/backend/routes/points.js): `backend/routes/points.js`
- [Receipt endpoints](https://github.com/wealthts/paygame/blob/main/backend/routes/receipts.js): `backend/routes/receipts.js`

### Persistence

- [MySQL connection](https://github.com/wealthts/paygame/blob/main/backend/db_config.js): `backend/db_config.js`
- **Paygame database**

### Other components

- **API user**

## Connections

- API user → Express API: sends API requests
- Express API → Registration and login: mounts routes (evidence: `backend/server.js`)
- Express API → Game management: mounts routes (evidence: `backend/server.js`)
- Express API → Order lifecycle: mounts routes (evidence: `backend/server.js`)
- Express API → Package endpoints: mounts routes (evidence: `backend/server.js`)
- Express API → Payment endpoints: mounts routes (evidence: `backend/server.js`)
- Express API → Points endpoints: mounts routes (evidence: `backend/server.js`)
- Express API → Receipt endpoints: mounts routes (evidence: `backend/server.js`)
- Express API → User endpoints: mounts routes (evidence: `backend/server.js`)
- Registration and login → MySQL connection: queries users (evidence: `backend/routes/auth.js`)
- Game management → JWT authorization: checks admin access (evidence: `backend/routes/games.js`)
- Order lifecycle → JWT authorization: checks access (evidence: `backend/routes/orders.js`)
- Game management → MySQL connection: queries games (evidence: `backend/routes/games.js`)
- Order lifecycle → MySQL connection: reads and writes orders (evidence: `backend/routes/orders.js`)
- Package endpoints → MySQL connection: queries packages (evidence: `backend/routes/packages.js`)
- Payment endpoints → MySQL connection: queries payment data (evidence: `backend/routes/payments.js`)
- Points endpoints → MySQL connection: queries points data (evidence: `backend/routes/points.js`)
- Receipt endpoints → MySQL connection: queries receipts (evidence: `backend/routes/receipts.js`)
- User endpoints → MySQL connection: queries users (evidence: `backend/routes/users.js`)
- MySQL connection → Paygame database: connects to (evidence: `backend/db_config.js`)
