# vipinkumar94997-tech/fantasy-sports-platform architecture

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

- Interactive diagram: https://gitdiagram.com/vipinkumar94997-tech/fantasy-sports-platform
- Repository: https://github.com/vipinkumar94997-tech/fantasy-sports-platform

## Overview

Fantasy11 is a fantasy-cricket contest platform: users register, browse matches, assemble teams, enter contests, follow live scores and leaderboards, and manage deposits or withdrawals. Administrators manage matches, users, KYC and withdrawal decisions. The frontend routes users into those experiences and calls the API; the backend exposes domain routes, applies controller logic and persists account and game state. Scoring, realtime updates, payments and notifications are distinct capabilities. Source excerpts establish wiring for authentication, administration and wallets; other feature links are shown only where supported by the server’s route mounting.

Main entry points: [`backend/server.ts`](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/server.ts) (HTTP and socket server), [`frontend/src/App.tsx`](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/frontend/src/App.tsx) (Fantasy11 app), [`backend/controllers/walletController.ts`](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/controllers/walletController.ts) (Wallet and payments), [`backend/controllers/adminController.ts`](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/controllers/adminController.ts) (Administration)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web application"]
  node_browser["Fantasy11 app<br/>[App.tsx]"]
  node_auth_ui["Auth experience<br/>[Login.tsx]"]
  node_game_ui["Match and contests<br/>[Contests.tsx]"]
  node_team_ui["Team creation<br/>[CreateTeam.tsx]"]
  node_live_ui["Live match<br/>[LiveMatch.tsx]"]
  node_leaderboard_ui["Leaderboard<br/>[Leaderboard.tsx]"]
  node_wallet_ui["Wallet experience<br/>[Wallet.tsx]"]
  node_admin_ui["Admin console<br/>[Dashboard.tsx]"]
  node_auth_storage[("Session storage<br/>[authStorage.ts]")]
  node_auth_service["Auth service<br/>[authService.ts]"]
  node_api_client["API client<br/>[api.ts]"]
end

subgraph group_api["API and domain"]
  node_server["HTTP and socket server<br/>[server.ts]"]
  node_auth_routes["Auth routes<br/>[authRoutes.ts]"]
  node_admin_routes["Admin routes<br/>[adminRoutes.ts]"]
  node_auth_controller["Authentication<br/>[authController.ts]"]
  node_admin_controller["Administration<br/>[adminController.ts]"]
  node_wallet_controller["Wallet and payments"]
  node_contest_domain["Contests and entries"]
  node_team_domain["Team management<br/>[teamController.ts]"]
  node_match_domain["Matches and scoring<br/>[matchController.ts]"]
  node_scoring["Fantasy scoring<br/>[scoringEngine.ts]"]
  node_realtime["Realtime updates<br/>[socketService.ts]"]
  node_kyc_domain["KYC review<br/>[KycController.ts]"]
  node_leaderboard_domain["Leaderboard"]
  node_notification_domain["Notifications"]
  node_payment_domain["Payment endpoints"]
end

subgraph group_state["Persistent state"]
  node_database[("Relational database<br/>[db.ts]")]
  node_user_model[("Users and wallets<br/>[User.ts]")]
  node_game_models[("Matches and contests<br/>[Contest.ts]")]
  node_ledger_models[("Transactions and withdrawals<br/>[Transaction.ts]")]
end

subgraph group_integrations["External services"]
  node_razorpay{{"Razorpay"}}
end

node_player(("Player"))
node_socket_clients(("Connected clients"))

node_player -->|"uses"| node_browser
node_browser -->|"routes to"| node_auth_ui
node_browser -->|"routes to"| node_game_ui
node_browser -->|"routes to"| node_team_ui
node_browser -->|"routes to"| node_live_ui
node_browser -->|"routes to"| node_leaderboard_ui
node_browser -->|"routes to"| node_wallet_ui
node_browser -->|"routes to"| node_admin_ui
node_auth_ui -->|"submits auth"| node_auth_service
node_auth_service -->|"sends requests"| node_api_client
node_auth_ui -->|"stores session"| node_auth_storage
node_api_client -->|"calls API"| node_server
node_server -->|"mounts"| node_auth_routes
node_server -->|"mounts"| node_admin_routes
node_server -->|"connects"| node_database
node_server -->|"sets socket server"| node_realtime
node_socket_clients -->|"connects"| node_server
node_auth_routes -->|"dispatches"| node_auth_controller
node_admin_routes -->|"dispatches"| node_admin_controller
node_auth_controller -->|"reads and writes"| node_user_model
node_auth_controller -->|"transacts"| node_database
node_admin_controller -->|"queries"| node_user_model
node_admin_controller -->|"queries and updates"| node_game_models
node_admin_controller -->|"queries and updates"| node_ledger_models
node_wallet_controller -->|"reads wallet"| node_user_model
node_wallet_controller -->|"records funds"| node_ledger_models
node_wallet_controller -->|"transacts"| node_database
node_wallet_controller -.->|"creates and verifies"| node_razorpay
node_server -->|"mounts contest routes"| node_contest_domain
node_server -->|"mounts team routes"| node_team_domain
node_server -->|"mounts match routes"| node_match_domain
node_server -->|"mounts KYC routes"| node_kyc_domain
node_server -->|"mounts leaderboard routes"| node_leaderboard_domain
node_server -->|"mounts notification routes"| node_notification_domain
node_server -->|"mounts payment routes"| node_payment_domain

click node_browser "https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/frontend/src/App.tsx"
click node_auth_ui "https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/frontend/src/pages/Login.tsx"
click node_game_ui "https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/frontend/src/pages/Contests.tsx"
click node_team_ui "https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/frontend/src/pages/CreateTeam.tsx"
click node_live_ui "https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/frontend/src/pages/LiveMatch.tsx"
click node_leaderboard_ui "https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/frontend/src/pages/Leaderboard.tsx"
click node_wallet_ui "https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/frontend/src/pages/Wallet.tsx"
click node_admin_ui "https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/frontend/src/pages/admin/Dashboard.tsx"
click node_auth_storage "https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/frontend/src/utils/authStorage.ts"
click node_auth_service "https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/frontend/src/services/authService.ts"
click node_api_client "https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/frontend/src/services/api.ts"
click node_server "https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/server.ts"
click node_auth_routes "https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/routes/authRoutes.ts"
click node_admin_routes "https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/routes/adminRoutes.ts"
click node_auth_controller "https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/controllers/authController.ts"
click node_admin_controller "https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/controllers/adminController.ts"
click node_wallet_controller "https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/controllers/walletController.ts"
click node_contest_domain "https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/controllers/contestController.ts"
click node_team_domain "https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/controllers/teamController.ts"
click node_match_domain "https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/controllers/matchController.ts"
click node_scoring "https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/services/scoringEngine.ts"
click node_realtime "https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/services/socketService.ts"
click node_kyc_domain "https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/controllers/KycController.ts"
click node_leaderboard_domain "https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/controllers/leaderboardController.ts"
click node_notification_domain "https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/controllers/notificationController.ts"
click node_payment_domain "https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/controllers/paymentController.ts"
click node_database "https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/config/db.ts"
click node_user_model "https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/models/User.ts"
click node_game_models "https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/models/Contest.ts"
click node_ledger_models "https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/models/Transaction.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_browser,node_auth_ui,node_game_ui,node_team_ui,node_live_ui,node_leaderboard_ui,node_wallet_ui,node_admin_ui,node_auth_storage,node_auth_service,node_api_client,node_socket_clients toneBlue
class node_server,node_auth_routes,node_admin_routes,node_auth_controller,node_admin_controller,node_wallet_controller,node_contest_domain,node_team_domain,node_match_domain,node_scoring,node_realtime,node_kyc_domain,node_leaderboard_domain,node_notification_domain,node_payment_domain toneAmber
class node_database,node_user_model,node_game_models,node_ledger_models toneMint
class node_razorpay toneRose
class node_player toneIndigo
```

## Components

### Web application

- [Fantasy11 app](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Auth experience](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/frontend/src/pages/Login.tsx): `frontend/src/pages/Login.tsx`
- [Match and contests](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/frontend/src/pages/Contests.tsx): `frontend/src/pages/Contests.tsx`
- [Team creation](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/frontend/src/pages/CreateTeam.tsx): `frontend/src/pages/CreateTeam.tsx`
- [Live match](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/frontend/src/pages/LiveMatch.tsx): `frontend/src/pages/LiveMatch.tsx`
- [Leaderboard](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/frontend/src/pages/Leaderboard.tsx): `frontend/src/pages/Leaderboard.tsx`
- [Wallet experience](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/frontend/src/pages/Wallet.tsx): `frontend/src/pages/Wallet.tsx`
- [Admin console](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/frontend/src/pages/admin/Dashboard.tsx): `frontend/src/pages/admin/Dashboard.tsx`
- [Session storage](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/frontend/src/utils/authStorage.ts): `frontend/src/utils/authStorage.ts`
- [Auth service](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/frontend/src/services/authService.ts): `frontend/src/services/authService.ts`
- [API client](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/frontend/src/services/api.ts): `frontend/src/services/api.ts`

### API and domain

- [HTTP and socket server](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/server.ts): `backend/server.ts`
- [Auth routes](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/routes/authRoutes.ts): `backend/routes/authRoutes.ts`
- [Admin routes](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/routes/adminRoutes.ts): `backend/routes/adminRoutes.ts`
- [Authentication](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/controllers/authController.ts): `backend/controllers/authController.ts`
- [Administration](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/controllers/adminController.ts): `backend/controllers/adminController.ts`
- [Wallet and payments](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/controllers/walletController.ts): `backend/controllers/walletController.ts`
- [Contests and entries](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/controllers/contestController.ts): `backend/controllers/contestController.ts`
- [Team management](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/controllers/teamController.ts): `backend/controllers/teamController.ts`
- [Matches and scoring](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/controllers/matchController.ts): `backend/controllers/matchController.ts`
- [Fantasy scoring](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/services/scoringEngine.ts): `backend/services/scoringEngine.ts`
- [Realtime updates](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/services/socketService.ts): `backend/services/socketService.ts`
- [KYC review](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/controllers/KycController.ts): `backend/controllers/KycController.ts`
- [Leaderboard](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/controllers/leaderboardController.ts): `backend/controllers/leaderboardController.ts`
- [Notifications](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/controllers/notificationController.ts): `backend/controllers/notificationController.ts`
- [Payment endpoints](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/controllers/paymentController.ts): `backend/controllers/paymentController.ts`

### Persistent state

- [Relational database](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/config/db.ts): `backend/config/db.ts`
- [Users and wallets](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/models/User.ts): `backend/models/User.ts`
- [Matches and contests](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/models/Contest.ts): `backend/models/Contest.ts`
- [Transactions and withdrawals](https://github.com/vipinkumar94997-tech/fantasy-sports-platform/blob/master/backend/models/Transaction.ts): `backend/models/Transaction.ts`

### External services

- **Razorpay**

### Other components

- **Player**
- **Connected clients**

## Connections

- Player → Fantasy11 app: uses
- Fantasy11 app → Auth experience: routes to
- Fantasy11 app → Match and contests: routes to
- Fantasy11 app → Team creation: routes to
- Fantasy11 app → Live match: routes to
- Fantasy11 app → Leaderboard: routes to
- Fantasy11 app → Wallet experience: routes to
- Fantasy11 app → Admin console: routes to
- Auth experience → Auth service: submits auth
- Auth service → API client: sends requests
- Auth experience → Session storage: stores session
- API client → HTTP and socket server: calls API
- HTTP and socket server → Auth routes: mounts
- HTTP and socket server → Admin routes: mounts
- HTTP and socket server → Relational database: connects
- HTTP and socket server → Realtime updates: sets socket server
- Connected clients → HTTP and socket server: connects
- Auth routes → Authentication: dispatches
- Admin routes → Administration: dispatches
- Authentication → Users and wallets: reads and writes
- Authentication → Relational database: transacts
- Administration → Users and wallets: queries
- Administration → Matches and contests: queries and updates
- Administration → Transactions and withdrawals: queries and updates
- Wallet and payments → Users and wallets: reads wallet
- Wallet and payments → Transactions and withdrawals: records funds
- Wallet and payments → Relational database: transacts
- Wallet and payments → Razorpay: creates and verifies
- HTTP and socket server → Contests and entries: mounts contest routes
- HTTP and socket server → Team management: mounts team routes
- HTTP and socket server → Matches and scoring: mounts match routes
- HTTP and socket server → KYC review: mounts KYC routes
- HTTP and socket server → Leaderboard: mounts leaderboard routes
- HTTP and socket server → Notifications: mounts notification routes
- HTTP and socket server → Payment endpoints: mounts payment routes
