# th1salk/mora-cricket-stat-records architecture

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

- Interactive diagram: https://gitdiagram.com/th1salk/mora-cricket-stat-records
- Repository: https://github.com/th1salk/mora-cricket-stat-records

## Overview

Mora Cricket Stats is a team-records web app: visitors browse match, player, and statistical views, while administrators manage records and enter performances. The documented manual entry flow is complemented by a PDF/import workflow that extracts and reviews match data before publication. The map includes season-aware statistics, authentication, persistence, and the major documented product branches. Some routes and UI modules were not sampled, so their links are included only where the README or source index supports them; unsampled implementation details are not inferred.

Main entry points: [`src/models`](https://github.com/th1salk/mora-cricket-stat-records/tree/main/src/models) (Domain models), [`src/app/api`](https://github.com/th1salk/mora-cricket-stat-records/tree/main/src/app/api) (API routes), [`src/lib/actions/importActions.ts`](https://github.com/th1salk/mora-cricket-stat-records/blob/main/src/lib/actions/importActions.ts) (Import actions), [`src/lib/queries`](https://github.com/th1salk/mora-cricket-stat-records/tree/main/src/lib/queries) (Data queries)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Web experience"]
  node_public["Public pages"]
  node_statsviews["Stats views"]
  node_careerrecords["Career and records<br/>[page.tsx]"]
  node_playerprofiles["Player profiles"]
end

subgraph group_operations["Admin and entry"]
  node_adminui["Admin pages"]
  node_manualentry["Manual entry<br/>[page.tsx]"]
  node_importui["Import review<br/>[DraftReview.tsx]"]
  node_importclient["Import workflow<br/>[ImportClient.tsx]"]
  node_importactions["Import actions<br/>[importActions.ts]"]
  node_importlogic["Import processing"]
end

subgraph group_domain["Cricket domain"]
  node_api["API routes"]
  node_queries["Data queries"]
  node_statsengine["Stats calculations"]
  node_seasonservice["Season service<br/>[seasonsServer.ts]"]
end

subgraph group_platform["Persistence and access"]
  node_auth["Authentication<br/>[auth.ts]"]
  node_ratelimit["Rate limiting<br/>[rateLimit.ts]"]
  node_connection["DB connection<br/>[mongodb.ts]"]
  node_models["Domain models"]
end

node_visitor(("Visitor"))
node_admin(("Administrator"))
node_mongodb[("MongoDB")]

node_visitor -->|"browses"| node_public
node_visitor -->|"views stats"| node_statsviews
node_visitor -->|"views career"| node_careerrecords
node_visitor -->|"views profiles"| node_playerprofiles
node_admin -->|"manages records"| node_adminui
node_admin -->|"enters performances"| node_manualentry
node_admin -.->|"imports scorecards"| node_importclient
node_importclient -->|"opens review"| node_importui
node_importclient -->|"uses processing"| node_importlogic
node_importui -->|"checks publish readiness"| node_importlogic
node_importui -->|"publishes draft"| node_importactions
node_importactions -->|"checks user"| node_auth
node_importactions -->|"checks limits"| node_ratelimit
node_importactions -->|"validates and publishes"| node_importlogic
node_importactions -->|"writes records"| node_models
node_api -->|"guards mutations"| node_auth
node_api -->|"limits requests"| node_ratelimit
node_api -->|"reads and writes"| node_models
node_api -->|"validates seasons"| node_seasonservice
node_api -->|"requests statistics"| node_queries
node_queries -->|"calculates summaries"| node_statsengine
node_queries -->|"resolves season filter"| node_seasonservice
node_queries -->|"loads match data"| node_models
node_seasonservice -->|"reads seasons and matches"| node_models
node_auth -->|"reads sessions and users"| node_models
node_ratelimit -->|"stores request counts"| node_models
node_connection -->|"connects"| node_mongodb
node_auth -->|"connects database"| node_connection
node_queries -->|"connects database"| node_connection
node_models -.->|"persists records"| node_mongodb

click node_public "https://github.com/th1salk/mora-cricket-stat-records/tree/main/src/app"
click node_statsviews "https://github.com/th1salk/mora-cricket-stat-records/tree/main/src/app/stats"
click node_careerrecords "https://github.com/th1salk/mora-cricket-stat-records/blob/main/src/app/career/page.tsx"
click node_playerprofiles "https://github.com/th1salk/mora-cricket-stat-records/tree/main/src/app/players"
click node_adminui "https://github.com/th1salk/mora-cricket-stat-records/tree/main/src/app/admin"
click node_manualentry "https://github.com/th1salk/mora-cricket-stat-records/blob/main/src/app/stats/enter/page.tsx"
click node_importui "https://github.com/th1salk/mora-cricket-stat-records/blob/main/src/components/import/DraftReview.tsx"
click node_importclient "https://github.com/th1salk/mora-cricket-stat-records/blob/main/src/components/import/ImportClient.tsx"
click node_importactions "https://github.com/th1salk/mora-cricket-stat-records/blob/main/src/lib/actions/importActions.ts"
click node_importlogic "https://github.com/th1salk/mora-cricket-stat-records/tree/main/src/lib/import"
click node_api "https://github.com/th1salk/mora-cricket-stat-records/tree/main/src/app/api"
click node_queries "https://github.com/th1salk/mora-cricket-stat-records/tree/main/src/lib/queries"
click node_statsengine "https://github.com/th1salk/mora-cricket-stat-records/tree/main/src/lib/stats"
click node_seasonservice "https://github.com/th1salk/mora-cricket-stat-records/blob/main/src/lib/seasonsServer.ts"
click node_auth "https://github.com/th1salk/mora-cricket-stat-records/blob/main/src/lib/auth.ts"
click node_ratelimit "https://github.com/th1salk/mora-cricket-stat-records/blob/main/src/lib/rateLimit.ts"
click node_connection "https://github.com/th1salk/mora-cricket-stat-records/blob/main/src/lib/mongodb.ts"
click node_models "https://github.com/th1salk/mora-cricket-stat-records/tree/main/src/models"

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_public,node_statsviews,node_careerrecords,node_playerprofiles toneBlue
class node_adminui,node_manualentry,node_importui,node_importclient,node_importactions,node_importlogic,node_mongodb toneAmber
class node_api,node_queries,node_statsengine,node_seasonservice toneMint
class node_auth,node_ratelimit,node_connection,node_models toneRose
class node_visitor,node_admin toneIndigo
```

## Components

### Web experience

- [Public pages](https://github.com/th1salk/mora-cricket-stat-records/tree/main/src/app): `src/app`
- [Stats views](https://github.com/th1salk/mora-cricket-stat-records/tree/main/src/app/stats): `src/app/stats`
- [Career and records](https://github.com/th1salk/mora-cricket-stat-records/blob/main/src/app/career/page.tsx): `src/app/career/page.tsx`
- [Player profiles](https://github.com/th1salk/mora-cricket-stat-records/tree/main/src/app/players): `src/app/players`

### Admin and entry

- [Admin pages](https://github.com/th1salk/mora-cricket-stat-records/tree/main/src/app/admin): `src/app/admin`
- [Manual entry](https://github.com/th1salk/mora-cricket-stat-records/blob/main/src/app/stats/enter/page.tsx): `src/app/stats/enter/page.tsx`
- [Import review](https://github.com/th1salk/mora-cricket-stat-records/blob/main/src/components/import/DraftReview.tsx): `src/components/import/DraftReview.tsx`
- [Import workflow](https://github.com/th1salk/mora-cricket-stat-records/blob/main/src/components/import/ImportClient.tsx): `src/components/import/ImportClient.tsx`
- [Import actions](https://github.com/th1salk/mora-cricket-stat-records/blob/main/src/lib/actions/importActions.ts): `src/lib/actions/importActions.ts`
- [Import processing](https://github.com/th1salk/mora-cricket-stat-records/tree/main/src/lib/import): `src/lib/import`

### Cricket domain

- [API routes](https://github.com/th1salk/mora-cricket-stat-records/tree/main/src/app/api): `src/app/api`
- [Data queries](https://github.com/th1salk/mora-cricket-stat-records/tree/main/src/lib/queries): `src/lib/queries`
- [Stats calculations](https://github.com/th1salk/mora-cricket-stat-records/tree/main/src/lib/stats): `src/lib/stats`
- [Season service](https://github.com/th1salk/mora-cricket-stat-records/blob/main/src/lib/seasonsServer.ts): `src/lib/seasonsServer.ts`

### Persistence and access

- [Authentication](https://github.com/th1salk/mora-cricket-stat-records/blob/main/src/lib/auth.ts): `src/lib/auth.ts`
- [Rate limiting](https://github.com/th1salk/mora-cricket-stat-records/blob/main/src/lib/rateLimit.ts): `src/lib/rateLimit.ts`
- [DB connection](https://github.com/th1salk/mora-cricket-stat-records/blob/main/src/lib/mongodb.ts): `src/lib/mongodb.ts`
- [Domain models](https://github.com/th1salk/mora-cricket-stat-records/tree/main/src/models): `src/models`

### Other components

- **Visitor**
- **Administrator**
- **MongoDB**

## Connections

- Visitor → Public pages: browses (evidence: `README.md`)
- Visitor → Stats views: views stats (evidence: `README.md`)
- Visitor → Career and records: views career (evidence: `README.md`)
- Visitor → Player profiles: views profiles (evidence: `README.md`)
- Administrator → Admin pages: manages records (evidence: `README.md`)
- Administrator → Manual entry: enters performances (evidence: `README.md`)
- Administrator → Import workflow: imports scorecards (evidence: `README.md`)
- Import workflow → Import review: opens review (evidence: `src/components/import/ImportClient.tsx`)
- Import workflow → Import processing: uses processing (evidence: `src/components/import/ImportClient.tsx`)
- Import review → Import processing: checks publish readiness (evidence: `src/components/import/DraftReview.tsx`)
- Import review → Import actions: publishes draft (evidence: `src/components/import/DraftReview.tsx`)
- Import actions → Authentication: checks user (evidence: `src/lib/actions/importActions.ts`)
- Import actions → Rate limiting: checks limits (evidence: `src/lib/actions/importActions.ts`)
- Import actions → Import processing: validates and publishes (evidence: `src/lib/actions/importActions.ts`)
- Import actions → Domain models: writes records (evidence: `src/lib/actions/importActions.ts`)
- API routes → Authentication: guards mutations (evidence: `src/app/api/matches/[id]/route.ts`)
- API routes → Rate limiting: limits requests (evidence: `src/app/api/matches/[id]/route.ts`)
- API routes → Domain models: reads and writes (evidence: `src/app/api/matches/[id]/route.ts`)
- API routes → Season service: validates seasons (evidence: `src/app/api/matches/[id]/route.ts`)
- API routes → Data queries: requests statistics (evidence: `src/app/api/stats/batting/route.ts`)
- Data queries → Stats calculations: calculates summaries (evidence: `src/lib/queries/stats.ts`)
- Data queries → Season service: resolves season filter (evidence: `src/lib/queries/stats.ts`)
- Data queries → Domain models: loads match data (evidence: `src/lib/queries/stats.ts`)
- Season service → Domain models: reads seasons and matches (evidence: `src/lib/seasonsServer.ts`)
- Authentication → Domain models: reads sessions and users (evidence: `src/lib/auth.ts`)
- Rate limiting → Domain models: stores request counts (evidence: `src/lib/rateLimit.ts`)
- DB connection → MongoDB: connects (evidence: `src/lib/mongodb.ts`)
- Authentication → DB connection: connects database (evidence: `src/lib/auth.ts`)
- Data queries → DB connection: connects database (evidence: `src/lib/queries/stats.ts`)
- Domain models → MongoDB: persists records
