# muhammad-wasay/framepulse architecture

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

- Interactive diagram: https://gitdiagram.com/muhammad-wasay/framepulse
- Repository: https://github.com/muhammad-wasay/framepulse

## Overview

FramePulse combines a React web client, Java REST backend, and Swing desktop client around game catalogs, performance sessions, moderated reviews, and analytics. The main user flow is authenticate, manage games, record telemetry or submit reviews, moderate pending reviews, then inspect metrics and reports. The README documents the principal capabilities; sampled source and the SOURCE INDEX support only some internal links, so unsampled implementation details are left unconnected.

Main entry points: [`src/AnalyticsSystem.java`](https://github.com/muhammad-wasay/framepulse/blob/main/src/AnalyticsSystem.java) (Application Controller), [`frontend/src/App.jsx`](https://github.com/muhammad-wasay/framepulse/blob/main/frontend/src/App.jsx) (Web App), [`src/MainFrame.java`](https://github.com/muhammad-wasay/framepulse/blob/main/src/MainFrame.java) (Swing Client), [`src/LoginDialog.java`](https://github.com/muhammad-wasay/framepulse/blob/main/src/LoginDialog.java) (Login Dialog)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web Client"]
  node_web_app["Web App<br/>[App.jsx]"]
  node_web_pages["Workflow Pages"]
  node_web_api["API Client<br/>[api.js]"]
  node_web_data["Seed Data<br/>[initialData.js]"]
  node_stickers["Canvas Stickers<br/>[fun.ts]"]
end

subgraph group_backend["Backend Services"]
  node_api_server["REST API<br/>[ApiServer.java]"]
  node_auth["Authentication<br/>[AuthService.java]"]
  node_database[("Data Access")]
  node_system["Application Controller"]
end

subgraph group_domain["Domain and Analytics"]
  node_games["Game Catalog<br/>[Game.java]"]
  node_sessions["Performance Sessions"]
  node_reviews["Community Reviews<br/>[Review.java]"]
  node_moderation["Review Moderation<br/>[Admin.java]"]
  node_analytics["Analytics Engine"]
  node_reports["Diagnostic Reports<br/>[Report.java]"]
end

subgraph group_desktop["Desktop Client"]
  node_desktop_login["Login Dialog<br/>[LoginDialog.java]"]
  node_desktop_shell["Swing Client<br/>[MainFrame.java]"]
  node_desktop_sessions["Session Entry"]
  node_desktop_reviews["Review UI<br/>[ReviewPanel.java]"]
end

node_player(("Player"))
node_admin_actor(("Administrator"))

node_player -->|"uses"| node_web_app
node_admin_actor -->|"uses"| node_web_app
node_web_app -->|"renders"| node_web_pages
node_web_app -->|"calls"| node_web_api
node_web_app -->|"loads"| node_web_data
node_web_pages -->|"renders"| node_stickers
node_web_api -->|"synchronizes"| node_api_server
node_api_server -->|"dispatches"| node_system
node_system -->|"delegates to"| node_auth
node_system -->|"persists through"| node_database
node_system -->|"manages"| node_games
node_system -->|"records"| node_sessions
node_system -->|"submits"| node_reviews
node_system -->|"uses"| node_moderation
node_analytics -->|"analyzes"| node_games
node_analytics -->|"generates"| node_reports
node_player -->|"authenticates"| node_desktop_login
node_desktop_login -->|"verifies"| node_auth
node_desktop_shell -->|"opens"| node_desktop_login
node_desktop_shell -->|"hosts"| node_desktop_sessions
node_desktop_shell -->|"hosts"| node_desktop_reviews
node_desktop_sessions -->|"records through"| node_system
node_desktop_reviews -->|"submits through"| node_system
node_admin_actor -->|"moderates"| node_moderation

click node_web_app "https://github.com/muhammad-wasay/framepulse/blob/main/frontend/src/App.jsx"
click node_web_pages "https://github.com/muhammad-wasay/framepulse/tree/main/frontend/src/pages"
click node_web_api "https://github.com/muhammad-wasay/framepulse/blob/main/frontend/src/services/api.js"
click node_web_data "https://github.com/muhammad-wasay/framepulse/blob/main/frontend/src/data/initialData.js"
click node_stickers "https://github.com/muhammad-wasay/framepulse/blob/main/frontend/src/stickers/fun.ts"
click node_api_server "https://github.com/muhammad-wasay/framepulse/blob/main/src/ApiServer.java"
click node_auth "https://github.com/muhammad-wasay/framepulse/blob/main/src/AuthService.java"
click node_database "https://github.com/muhammad-wasay/framepulse/blob/main/src/DatabaseHandler.java"
click node_system "https://github.com/muhammad-wasay/framepulse/blob/main/src/AnalyticsSystem.java"
click node_games "https://github.com/muhammad-wasay/framepulse/blob/main/src/Game.java"
click node_sessions "https://github.com/muhammad-wasay/framepulse/blob/main/src/PerformanceSession.java"
click node_reviews "https://github.com/muhammad-wasay/framepulse/blob/main/src/Review.java"
click node_moderation "https://github.com/muhammad-wasay/framepulse/blob/main/src/Admin.java"
click node_analytics "https://github.com/muhammad-wasay/framepulse/blob/main/src/AnalyticsEngine.java"
click node_reports "https://github.com/muhammad-wasay/framepulse/blob/main/src/Report.java"
click node_desktop_login "https://github.com/muhammad-wasay/framepulse/blob/main/src/LoginDialog.java"
click node_desktop_shell "https://github.com/muhammad-wasay/framepulse/blob/main/src/MainFrame.java"
click node_desktop_sessions "https://github.com/muhammad-wasay/framepulse/blob/main/src/LogSessionPanel.java"
click node_desktop_reviews "https://github.com/muhammad-wasay/framepulse/blob/main/src/ReviewPanel.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_web_app,node_web_pages,node_web_api,node_web_data,node_stickers toneBlue
class node_api_server,node_auth,node_database,node_system toneAmber
class node_games,node_sessions,node_reviews,node_moderation,node_analytics,node_reports toneMint
class node_desktop_login,node_desktop_shell,node_desktop_sessions,node_desktop_reviews toneRose
class node_player,node_admin_actor toneIndigo
```

## Components

### Web Client

- [Web App](https://github.com/muhammad-wasay/framepulse/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Workflow Pages](https://github.com/muhammad-wasay/framepulse/tree/main/frontend/src/pages): `frontend/src/pages`
- [API Client](https://github.com/muhammad-wasay/framepulse/blob/main/frontend/src/services/api.js): `frontend/src/services/api.js`
- [Seed Data](https://github.com/muhammad-wasay/framepulse/blob/main/frontend/src/data/initialData.js): `frontend/src/data/initialData.js`
- [Canvas Stickers](https://github.com/muhammad-wasay/framepulse/blob/main/frontend/src/stickers/fun.ts): `frontend/src/stickers/fun.ts`

### Backend Services

- [REST API](https://github.com/muhammad-wasay/framepulse/blob/main/src/ApiServer.java): `src/ApiServer.java`
- [Authentication](https://github.com/muhammad-wasay/framepulse/blob/main/src/AuthService.java): `src/AuthService.java`
- [Data Access](https://github.com/muhammad-wasay/framepulse/blob/main/src/DatabaseHandler.java): `src/DatabaseHandler.java`
- [Application Controller](https://github.com/muhammad-wasay/framepulse/blob/main/src/AnalyticsSystem.java): `src/AnalyticsSystem.java`

### Domain and Analytics

- [Game Catalog](https://github.com/muhammad-wasay/framepulse/blob/main/src/Game.java): `src/Game.java`
- [Performance Sessions](https://github.com/muhammad-wasay/framepulse/blob/main/src/PerformanceSession.java): `src/PerformanceSession.java`
- [Community Reviews](https://github.com/muhammad-wasay/framepulse/blob/main/src/Review.java): `src/Review.java`
- [Review Moderation](https://github.com/muhammad-wasay/framepulse/blob/main/src/Admin.java): `src/Admin.java`
- [Analytics Engine](https://github.com/muhammad-wasay/framepulse/blob/main/src/AnalyticsEngine.java): `src/AnalyticsEngine.java`
- [Diagnostic Reports](https://github.com/muhammad-wasay/framepulse/blob/main/src/Report.java): `src/Report.java`

### Desktop Client

- [Login Dialog](https://github.com/muhammad-wasay/framepulse/blob/main/src/LoginDialog.java): `src/LoginDialog.java`
- [Swing Client](https://github.com/muhammad-wasay/framepulse/blob/main/src/MainFrame.java): `src/MainFrame.java`
- [Session Entry](https://github.com/muhammad-wasay/framepulse/blob/main/src/LogSessionPanel.java): `src/LogSessionPanel.java`
- [Review UI](https://github.com/muhammad-wasay/framepulse/blob/main/src/ReviewPanel.java): `src/ReviewPanel.java`

### Other components

- **Player**
- **Administrator**

## Connections

- Player → Web App: uses
- Administrator → Web App: uses
- Web App → Workflow Pages: renders (evidence: `frontend/src/App.jsx`)
- Web App → API Client: calls (evidence: `frontend/src/App.jsx`)
- Web App → Seed Data: loads (evidence: `frontend/src/App.jsx`)
- Workflow Pages → Canvas Stickers: renders (evidence: `frontend/src/pages/DashboardPage.jsx`)
- API Client → REST API: synchronizes
- REST API → Application Controller: dispatches (evidence: `src/ApiServer.java`)
- Application Controller → Authentication: delegates to (evidence: `src/AnalyticsSystem.java`)
- Application Controller → Data Access: persists through (evidence: `src/AnalyticsSystem.java`)
- Application Controller → Game Catalog: manages (evidence: `src/AnalyticsSystem.java`)
- Application Controller → Performance Sessions: records (evidence: `src/AnalyticsSystem.java`)
- Application Controller → Community Reviews: submits (evidence: `src/AnalyticsSystem.java`)
- Application Controller → Review Moderation: uses (evidence: `src/AnalyticsSystem.java`)
- Analytics Engine → Game Catalog: analyzes (evidence: `src/AnalyticsEngine.java`)
- Analytics Engine → Diagnostic Reports: generates (evidence: `src/AnalyticsEngine.java`)
- Player → Login Dialog: authenticates
- Login Dialog → Authentication: verifies
- Swing Client → Login Dialog: opens (evidence: `src/MainFrame.java`)
- Swing Client → Session Entry: hosts (evidence: `src/MainFrame.java`)
- Swing Client → Review UI: hosts (evidence: `src/MainFrame.java`)
- Session Entry → Application Controller: records through (evidence: `src/LogSessionPanel.java`)
- Review UI → Application Controller: submits through (evidence: `src/ReviewPanel.java`)
- Administrator → Review Moderation: moderates
