# srujangithubit/dbms-miniproject architecture

> Architecture diagram of the GitHub repository srujangithubit/dbms-miniproject, 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/srujangithubit/dbms-miniproject
- Repository: https://github.com/srujangithubit/dbms-miniproject

## Overview

ArenaRank is a web platform for competitive esports matchmaking, Elo rankings, and player/admin workflows. Players register or sign in, view their game and season standings, and join a rating-aware queue; compatible players are paired into pending matches. An administrator finalizes the result, which updates ratings and match history. PostgreSQL handles transactional competition data, while MongoDB stores audit activity and documented match telemetry. The dashboard also exposes player search and admin activity. Some capability links are documented in the README; unsampled implementation details are not inferred.

Main entry points: [`app/page.tsx`](https://github.com/srujangithubit/dbms-miniproject/blob/main/app/page.tsx) (ArenaRank interface), [`lib/db.ts`](https://github.com/srujangithubit/dbms-miniproject/blob/main/lib/db.ts) (SQL access and transactions), [`lib/auth.ts`](https://github.com/srujangithubit/dbms-miniproject/blob/main/lib/auth.ts) (Signed sessions), [`app/api/matches/[id]/result/route.ts`](https://github.com/srujangithubit/dbms-miniproject/blob/main/app/api/matches/%5Bid%5D/result/route.ts) (Finalize result)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_webui["ArenaRank interface<br/>[page.tsx]"]
  node_dashboard["Dashboard data<br/>[route.ts]"]
  node_player_search["Player directory<br/>[route.ts]"]
end

subgraph group_identity["Identity and access"]
  node_auth_login["Sign in<br/>[route.ts]"]
  node_auth_register["Registration<br/>[route.ts]"]
  node_auth_session["Session and logout<br/>[route.ts]"]
  node_session["Signed sessions<br/>[auth.ts]"]
end

subgraph group_competition["Competition workflows"]
  node_queue_join["Join and pair queue<br/>[route.ts]"]
  node_queue_leave["Leave queue<br/>[route.ts]"]
  node_finalize["Finalize result<br/>[route.ts]"]
  node_elo["Elo calculation<br/>[elo.mjs]"]
end

subgraph group_data["Persistence and records"]
  node_pg_access["SQL access and transactions<br/>[db.ts]"]
  node_postgres[("Competition records<br/>[schema.sql]")]
  node_audit["Safe audit writer<br/>[audit.ts]"]
  node_mongo_access["MongoDB access<br/>[mongo.ts]"]
  node_mongodb[("Audit and telemetry documents")]
end

node_players(("Players and admins"))

node_players -->|"uses"| node_webui
node_webui -->|"signs in"| node_auth_login
node_webui -->|"registers"| node_auth_register
node_webui -->|"loads dashboard"| node_dashboard
node_webui -->|"searches players"| node_player_search
node_webui -->|"joins queue"| node_queue_join
node_webui -->|"leaves queue"| node_queue_leave
node_webui -->|"submits result"| node_finalize
node_auth_login -->|"queries accounts"| node_pg_access
node_auth_login -->|"creates session"| node_session
node_auth_register -->|"writes account"| node_pg_access
node_auth_register -->|"creates session"| node_session
node_auth_session -->|"checks session"| node_session
node_dashboard -->|"checks session"| node_session
node_dashboard -->|"queries standings"| node_pg_access
node_dashboard -->|"reads admin activity"| node_mongo_access
node_player_search -->|"checks session"| node_session
node_player_search -->|"searches rankings"| node_pg_access
node_queue_join -->|"checks session"| node_session
node_queue_join -->|"pairs transactionally"| node_pg_access
node_queue_join -->|"records activity"| node_audit
node_queue_leave -->|"checks session"| node_session
node_queue_leave -->|"deletes queue entry"| node_pg_access
node_queue_leave -->|"records activity"| node_audit
node_finalize -->|"checks role"| node_session
node_finalize -->|"calls finalizer"| node_pg_access
node_finalize -->|"records result"| node_audit
node_pg_access -->|"reads and writes"| node_postgres
node_audit -->|"writes events"| node_mongo_access
node_mongo_access -->|"reads and writes"| node_mongodb
node_finalize -.->|"uses rating logic"| node_elo

click node_webui "https://github.com/srujangithubit/dbms-miniproject/blob/main/app/page.tsx"
click node_auth_login "https://github.com/srujangithubit/dbms-miniproject/blob/main/app/api/auth/login/route.ts"
click node_auth_register "https://github.com/srujangithubit/dbms-miniproject/blob/main/app/api/auth/register/route.ts"
click node_auth_session "https://github.com/srujangithubit/dbms-miniproject/blob/main/app/api/auth/me/route.ts"
click node_session "https://github.com/srujangithubit/dbms-miniproject/blob/main/lib/auth.ts"
click node_dashboard "https://github.com/srujangithubit/dbms-miniproject/blob/main/app/api/dashboard/route.ts"
click node_player_search "https://github.com/srujangithubit/dbms-miniproject/blob/main/app/api/players/route.ts"
click node_queue_join "https://github.com/srujangithubit/dbms-miniproject/blob/main/app/api/queue/join/route.ts"
click node_queue_leave "https://github.com/srujangithubit/dbms-miniproject/blob/main/app/api/queue/leave/route.ts"
click node_finalize "https://github.com/srujangithubit/dbms-miniproject/blob/main/app/api/matches/%5Bid%5D/result/route.ts"
click node_elo "https://github.com/srujangithubit/dbms-miniproject/blob/main/lib/elo.mjs"
click node_pg_access "https://github.com/srujangithubit/dbms-miniproject/blob/main/lib/db.ts"
click node_postgres "https://github.com/srujangithubit/dbms-miniproject/blob/main/db/schema.sql"
click node_audit "https://github.com/srujangithubit/dbms-miniproject/blob/main/lib/audit.ts"
click node_mongo_access "https://github.com/srujangithubit/dbms-miniproject/blob/main/lib/mongo.ts"

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_webui,node_dashboard,node_player_search toneBlue
class node_auth_login,node_auth_register,node_auth_session,node_session toneAmber
class node_queue_join,node_queue_leave,node_finalize,node_elo toneMint
class node_pg_access,node_postgres,node_audit,node_mongo_access,node_mongodb toneRose
class node_players toneIndigo
```

## Components

### Web experience

- [ArenaRank interface](https://github.com/srujangithubit/dbms-miniproject/blob/main/app/page.tsx): `app/page.tsx`
- [Dashboard data](https://github.com/srujangithubit/dbms-miniproject/blob/main/app/api/dashboard/route.ts): `app/api/dashboard/route.ts`
- [Player directory](https://github.com/srujangithubit/dbms-miniproject/blob/main/app/api/players/route.ts): `app/api/players/route.ts`

### Identity and access

- [Sign in](https://github.com/srujangithubit/dbms-miniproject/blob/main/app/api/auth/login/route.ts): `app/api/auth/login/route.ts`
- [Registration](https://github.com/srujangithubit/dbms-miniproject/blob/main/app/api/auth/register/route.ts): `app/api/auth/register/route.ts`
- [Session and logout](https://github.com/srujangithubit/dbms-miniproject/blob/main/app/api/auth/me/route.ts): `app/api/auth/me/route.ts`
- [Signed sessions](https://github.com/srujangithubit/dbms-miniproject/blob/main/lib/auth.ts): `lib/auth.ts`

### Competition workflows

- [Join and pair queue](https://github.com/srujangithubit/dbms-miniproject/blob/main/app/api/queue/join/route.ts): `app/api/queue/join/route.ts`
- [Leave queue](https://github.com/srujangithubit/dbms-miniproject/blob/main/app/api/queue/leave/route.ts): `app/api/queue/leave/route.ts`
- [Finalize result](https://github.com/srujangithubit/dbms-miniproject/blob/main/app/api/matches/%5Bid%5D/result/route.ts): `app/api/matches/[id]/result/route.ts`
- [Elo calculation](https://github.com/srujangithubit/dbms-miniproject/blob/main/lib/elo.mjs): `lib/elo.mjs`

### Persistence and records

- [SQL access and transactions](https://github.com/srujangithubit/dbms-miniproject/blob/main/lib/db.ts): `lib/db.ts`
- [Competition records](https://github.com/srujangithubit/dbms-miniproject/blob/main/db/schema.sql): `db/schema.sql`
- [Safe audit writer](https://github.com/srujangithubit/dbms-miniproject/blob/main/lib/audit.ts): `lib/audit.ts`
- [MongoDB access](https://github.com/srujangithubit/dbms-miniproject/blob/main/lib/mongo.ts): `lib/mongo.ts`
- **Audit and telemetry documents**

### Other components

- **Players and admins**

## Connections

- Players and admins → ArenaRank interface: uses (evidence: `README.md`)
- ArenaRank interface → Sign in: signs in (evidence: `README.md`)
- ArenaRank interface → Registration: registers (evidence: `README.md`)
- ArenaRank interface → Dashboard data: loads dashboard (evidence: `README.md`)
- ArenaRank interface → Player directory: searches players (evidence: `README.md`)
- ArenaRank interface → Join and pair queue: joins queue (evidence: `README.md`)
- ArenaRank interface → Leave queue: leaves queue (evidence: `README.md`)
- ArenaRank interface → Finalize result: submits result (evidence: `README.md`)
- Sign in → SQL access and transactions: queries accounts (evidence: `app/api/auth/login/route.ts`)
- Sign in → Signed sessions: creates session (evidence: `app/api/auth/login/route.ts`)
- Registration → SQL access and transactions: writes account (evidence: `app/api/auth/register/route.ts`)
- Registration → Signed sessions: creates session (evidence: `app/api/auth/register/route.ts`)
- Session and logout → Signed sessions: checks session (evidence: `app/api/auth/me/route.ts`)
- Dashboard data → Signed sessions: checks session (evidence: `app/api/dashboard/route.ts`)
- Dashboard data → SQL access and transactions: queries standings (evidence: `app/api/dashboard/route.ts`)
- Dashboard data → MongoDB access: reads admin activity (evidence: `app/api/dashboard/route.ts`)
- Player directory → Signed sessions: checks session (evidence: `app/api/players/route.ts`)
- Player directory → SQL access and transactions: searches rankings (evidence: `app/api/players/route.ts`)
- Join and pair queue → Signed sessions: checks session (evidence: `app/api/queue/join/route.ts`)
- Join and pair queue → SQL access and transactions: pairs transactionally (evidence: `app/api/queue/join/route.ts`)
- Join and pair queue → Safe audit writer: records activity (evidence: `app/api/queue/join/route.ts`)
- Leave queue → Signed sessions: checks session (evidence: `app/api/queue/leave/route.ts`)
- Leave queue → SQL access and transactions: deletes queue entry (evidence: `app/api/queue/leave/route.ts`)
- Leave queue → Safe audit writer: records activity (evidence: `app/api/queue/leave/route.ts`)
- Finalize result → Signed sessions: checks role (evidence: `app/api/matches/[id]/result/route.ts`)
- Finalize result → SQL access and transactions: calls finalizer (evidence: `app/api/matches/[id]/result/route.ts`)
- Finalize result → Safe audit writer: records result (evidence: `app/api/matches/[id]/result/route.ts`)
- SQL access and transactions → Competition records: reads and writes (evidence: `README.md`)
- Safe audit writer → MongoDB access: writes events (evidence: `lib/audit.ts`)
- MongoDB access → Audit and telemetry documents: reads and writes (evidence: `lib/mongo.ts`)
- Finalize result → Elo calculation: uses rating logic
