# sathvikchoudar61/codemanager architecture

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

- Interactive diagram: https://gitdiagram.com/sathvikchoudar61/codemanager
- Repository: https://github.com/sathvikchoudar61/codemanager

## Overview

CodeManager aggregates competitive-programming profiles and adds account management, daily problems, contests, and an online compiler. The main workflow is a signed-in user viewing the dashboard or refreshing platform data: platform services fetch external statistics, update a unified record, and expose aggregate views to the frontend. The graph also preserves the documented feature areas whose source was not sampled. Relationships among those unsampled parts are shown as unverified where necessary; source excerpts establish the specific service-to-fetcher, persistence, and authentication links.

Main entry points: [`frontend/src/services/api.js`](https://github.com/sathvikchoudar61/codemanager/blob/main/frontend/src/services/api.js) (API client), [`frontend/src/App.jsx`](https://github.com/sathvikchoudar61/codemanager/blob/main/frontend/src/App.jsx) (Route application), [`CodingManager/src/main/java/com/sathvik/CodingManager/service/auth`](https://github.com/sathvikchoudar61/codemanager/tree/main/CodingManager/src/main/java/com/sathvik/CodingManager/service/auth) (Authentication), [`CodingManager/src/main/java/com/sathvik/CodingManager/model/CodingStats.java`](https://github.com/sathvikchoudar61/codemanager/blob/main/CodingManager/src/main/java/com/sathvik/CodingManager/model/CodingStats.java) (Platform statistics)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web application"]
  node_app["Route application<br/>[App.jsx]"]
  node_authctx["Auth state<br/>[AuthContext.jsx]"]
  node_api["API client<br/>[api.js]"]
  node_dashboard["Dashboard views<br/>[Dashboard.jsx]"]
  node_platformview["Platform details"]
  node_profileview["Profile settings<br/>[Profile.jsx]"]
end

subgraph group_identity["Identity and profile"]
  node_authservice["Authentication"]
  node_email["Email delivery<br/>[EmailService.java]"]
  node_userstore[("User records<br/>[User.java]")]
  node_profile["Profile updates"]
end

subgraph group_aggregation["Platform aggregation"]
  node_platformupdate["Stats synchronization"]
  node_fetchers["Platform fetchers"]
  node_stats[("Platform statistics<br/>[CodingStats.java]")]
  node_platformget["Stats retrieval"]
end

subgraph group_features["Coding features"]
  node_potd["Daily problems"]
  node_potdstore[("Daily problem record")]
  node_contests["Contest updates"]
  node_conteststore[("Contest records<br/>[Contest.java]")]
  node_compiler["Online compiler"]
end

node_user(("User"))
node_platforms{{"Coding platforms"}}
node_docker{{"Docker runtime"}}
node_mongodb[("MongoDB")]

node_user -->|"uses"| node_app
node_app -->|"provides auth"| node_authctx
node_authctx -->|"requests session"| node_api
node_app -->|"routes to"| node_dashboard
node_app -->|"routes to"| node_platformview
node_app -->|"routes to"| node_profileview
node_dashboard -.->|"loads stats"| node_api
node_platformview -.->|"loads details"| node_api
node_profileview -.->|"updates profile"| node_api
node_api -.->|"calls API"| node_authservice
node_authservice -.->|"reads and writes"| node_userstore
node_authservice -->|"sends verification"| node_email
node_authservice -.->|"sends email"| node_email
node_email -.->|"delivers mail"| node_user
node_profile -->|"updates user"| node_userstore
node_profile -->|"updates usernames"| node_stats
node_platformupdate -->|"dispatches fetches"| node_fetchers
node_platformupdate -->|"saves totals"| node_stats
node_fetchers -->|"fetches profiles"| node_platforms
node_platformget -->|"reads stats"| node_stats
node_platformget -.->|"serves views"| node_api
node_potd -->|"saves daily picks"| node_potdstore
node_potd -->|"fetches challenges"| node_fetchers
node_potd -.->|"serves problems"| node_api
node_contests -->|"updates contests"| node_conteststore
node_contests -.->|"serves contests"| node_api
node_api -.->|"submits code"| node_compiler
node_compiler -.->|"executes isolated"| node_docker
node_stats -->|"stored in"| node_mongodb
node_userstore -->|"stored in"| node_mongodb

click node_app "https://github.com/sathvikchoudar61/codemanager/blob/main/frontend/src/App.jsx"
click node_authctx "https://github.com/sathvikchoudar61/codemanager/blob/main/frontend/src/contexts/AuthContext.jsx"
click node_api "https://github.com/sathvikchoudar61/codemanager/blob/main/frontend/src/services/api.js"
click node_dashboard "https://github.com/sathvikchoudar61/codemanager/blob/main/frontend/src/pages/Dashboard.jsx"
click node_platformview "https://github.com/sathvikchoudar61/codemanager/blob/main/frontend/src/pages/PlatformDetails.jsx"
click node_profileview "https://github.com/sathvikchoudar61/codemanager/blob/main/frontend/src/pages/Profile.jsx"
click node_authservice "https://github.com/sathvikchoudar61/codemanager/tree/main/CodingManager/src/main/java/com/sathvik/CodingManager/service/auth"
click node_email "https://github.com/sathvikchoudar61/codemanager/blob/main/CodingManager/src/main/java/com/sathvik/CodingManager/service/email/EmailService.java"
click node_userstore "https://github.com/sathvikchoudar61/codemanager/blob/main/CodingManager/src/main/java/com/sathvik/CodingManager/model/User.java"
click node_profile "https://github.com/sathvikchoudar61/codemanager/tree/main/CodingManager/src/main/java/com/sathvik/CodingManager/service/profile"
click node_platformupdate "https://github.com/sathvikchoudar61/codemanager/blob/main/CodingManager/src/main/java/com/sathvik/CodingManager/service/platform/PlatformUpdateService.java"
click node_fetchers "https://github.com/sathvikchoudar61/codemanager/tree/main/CodingManager/src/main/java/com/sathvik/CodingManager/service/fetchers"
click node_stats "https://github.com/sathvikchoudar61/codemanager/blob/main/CodingManager/src/main/java/com/sathvik/CodingManager/model/CodingStats.java"
click node_platformget "https://github.com/sathvikchoudar61/codemanager/blob/main/CodingManager/src/main/java/com/sathvik/CodingManager/service/platform/PlatformGetService.java"
click node_potd "https://github.com/sathvikchoudar61/codemanager/blob/main/CodingManager/src/main/java/com/sathvik/CodingManager/service/problemoftheday/ProblemOfTheDayService.java"
click node_potdstore "https://github.com/sathvikchoudar61/codemanager/blob/main/CodingManager/src/main/java/com/sathvik/CodingManager/model/problemoftheday/ProblemOfTheDay.java"
click node_contests "https://github.com/sathvikchoudar61/codemanager/blob/main/CodingManager/src/main/java/com/sathvik/CodingManager/service/contest/ContestUpdateService.java"
click node_conteststore "https://github.com/sathvikchoudar61/codemanager/blob/main/CodingManager/src/main/java/com/sathvik/CodingManager/model/Contest.java"
click node_compiler "https://github.com/sathvikchoudar61/codemanager/tree/main/CodingManager/src/main/java/com/sathvik/CodingManager/service/compiler"

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_app,node_authctx,node_api,node_dashboard,node_platformview,node_profileview,node_user toneBlue
class node_authservice,node_email,node_userstore,node_profile,node_mongodb toneAmber
class node_platformupdate,node_fetchers,node_stats,node_platformget toneMint
class node_potd,node_potdstore,node_contests,node_conteststore,node_compiler toneRose
class node_platforms,node_docker toneIndigo
```

## Components

### Web application

- [Route application](https://github.com/sathvikchoudar61/codemanager/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Auth state](https://github.com/sathvikchoudar61/codemanager/blob/main/frontend/src/contexts/AuthContext.jsx): `frontend/src/contexts/AuthContext.jsx`
- [API client](https://github.com/sathvikchoudar61/codemanager/blob/main/frontend/src/services/api.js): `frontend/src/services/api.js`
- [Dashboard views](https://github.com/sathvikchoudar61/codemanager/blob/main/frontend/src/pages/Dashboard.jsx): `frontend/src/pages/Dashboard.jsx`
- [Platform details](https://github.com/sathvikchoudar61/codemanager/blob/main/frontend/src/pages/PlatformDetails.jsx): `frontend/src/pages/PlatformDetails.jsx`
- [Profile settings](https://github.com/sathvikchoudar61/codemanager/blob/main/frontend/src/pages/Profile.jsx): `frontend/src/pages/Profile.jsx`

### Identity and profile

- [Authentication](https://github.com/sathvikchoudar61/codemanager/tree/main/CodingManager/src/main/java/com/sathvik/CodingManager/service/auth): `CodingManager/src/main/java/com/sathvik/CodingManager/service/auth`
- [Email delivery](https://github.com/sathvikchoudar61/codemanager/blob/main/CodingManager/src/main/java/com/sathvik/CodingManager/service/email/EmailService.java): `CodingManager/src/main/java/com/sathvik/CodingManager/service/email/EmailService.java`
- [User records](https://github.com/sathvikchoudar61/codemanager/blob/main/CodingManager/src/main/java/com/sathvik/CodingManager/model/User.java): `CodingManager/src/main/java/com/sathvik/CodingManager/model/User.java`
- [Profile updates](https://github.com/sathvikchoudar61/codemanager/tree/main/CodingManager/src/main/java/com/sathvik/CodingManager/service/profile): `CodingManager/src/main/java/com/sathvik/CodingManager/service/profile`

### Platform aggregation

- [Stats synchronization](https://github.com/sathvikchoudar61/codemanager/blob/main/CodingManager/src/main/java/com/sathvik/CodingManager/service/platform/PlatformUpdateService.java): `CodingManager/src/main/java/com/sathvik/CodingManager/service/platform/PlatformUpdateService.java`
- [Platform fetchers](https://github.com/sathvikchoudar61/codemanager/tree/main/CodingManager/src/main/java/com/sathvik/CodingManager/service/fetchers): `CodingManager/src/main/java/com/sathvik/CodingManager/service/fetchers`
- [Platform statistics](https://github.com/sathvikchoudar61/codemanager/blob/main/CodingManager/src/main/java/com/sathvik/CodingManager/model/CodingStats.java): `CodingManager/src/main/java/com/sathvik/CodingManager/model/CodingStats.java`
- [Stats retrieval](https://github.com/sathvikchoudar61/codemanager/blob/main/CodingManager/src/main/java/com/sathvik/CodingManager/service/platform/PlatformGetService.java): `CodingManager/src/main/java/com/sathvik/CodingManager/service/platform/PlatformGetService.java`

### Coding features

- [Daily problems](https://github.com/sathvikchoudar61/codemanager/blob/main/CodingManager/src/main/java/com/sathvik/CodingManager/service/problemoftheday/ProblemOfTheDayService.java): `CodingManager/src/main/java/com/sathvik/CodingManager/service/problemoftheday/ProblemOfTheDayService.java`
- [Daily problem record](https://github.com/sathvikchoudar61/codemanager/blob/main/CodingManager/src/main/java/com/sathvik/CodingManager/model/problemoftheday/ProblemOfTheDay.java): `CodingManager/src/main/java/com/sathvik/CodingManager/model/problemoftheday/ProblemOfTheDay.java`
- [Contest updates](https://github.com/sathvikchoudar61/codemanager/blob/main/CodingManager/src/main/java/com/sathvik/CodingManager/service/contest/ContestUpdateService.java): `CodingManager/src/main/java/com/sathvik/CodingManager/service/contest/ContestUpdateService.java`
- [Contest records](https://github.com/sathvikchoudar61/codemanager/blob/main/CodingManager/src/main/java/com/sathvik/CodingManager/model/Contest.java): `CodingManager/src/main/java/com/sathvik/CodingManager/model/Contest.java`
- [Online compiler](https://github.com/sathvikchoudar61/codemanager/tree/main/CodingManager/src/main/java/com/sathvik/CodingManager/service/compiler): `CodingManager/src/main/java/com/sathvik/CodingManager/service/compiler`

### Other components

- **User**
- **Coding platforms**
- **Docker runtime**
- **MongoDB**

## Connections

- User → Route application: uses (evidence: `README.md`)
- Route application → Auth state: provides auth (evidence: `frontend/src/App.jsx`)
- Auth state → API client: requests session (evidence: `frontend/src/contexts/AuthContext.jsx`)
- Route application → Dashboard views: routes to (evidence: `frontend/src/App.jsx`)
- Route application → Platform details: routes to (evidence: `frontend/src/App.jsx`)
- Route application → Profile settings: routes to (evidence: `frontend/src/App.jsx`)
- Dashboard views → API client: loads stats
- Platform details → API client: loads details
- Profile settings → API client: updates profile (evidence: `frontend/src/pages/Profile.jsx`)
- API client → Authentication: calls API
- Authentication → User records: reads and writes (evidence: `CodingManager/src/main/java/com/sathvik/CodingManager/service/auth/AuthCheckService.java`)
- Authentication → Email delivery: sends verification (evidence: `CodingManager/src/main/java/com/sathvik/CodingManager/service/auth/SignUpService.java`)
- Authentication → Email delivery: sends email (evidence: `CodingManager/src/main/java/com/sathvik/CodingManager/service/auth/SignUpService.java`)
- Email delivery → User: delivers mail
- Profile updates → User records: updates user (evidence: `CodingManager/src/main/java/com/sathvik/CodingManager/service/profile/UpdateProfileService.java`)
- Profile updates → Platform statistics: updates usernames (evidence: `CodingManager/src/main/java/com/sathvik/CodingManager/service/profile/UpdateProfileService.java`)
- Stats synchronization → Platform fetchers: dispatches fetches (evidence: `CodingManager/src/main/java/com/sathvik/CodingManager/service/platform/PlatformUpdateService.java`)
- Stats synchronization → Platform statistics: saves totals (evidence: `CodingManager/src/main/java/com/sathvik/CodingManager/service/platform/PlatformUpdateService.java`)
- Platform fetchers → Coding platforms: fetches profiles (evidence: `CodingManager/src/main/java/com/sathvik/CodingManager/service/fetchers/LeetcodeFetcherService.java`)
- Stats retrieval → Platform statistics: reads stats (evidence: `CodingManager/src/main/java/com/sathvik/CodingManager/service/platform/PlatformGetService.java`)
- Stats retrieval → API client: serves views
- Daily problems → Daily problem record: saves daily picks (evidence: `CodingManager/src/main/java/com/sathvik/CodingManager/service/problemoftheday/ProblemOfTheDayService.java`)
- Daily problems → Platform fetchers: fetches challenges (evidence: `CodingManager/src/main/java/com/sathvik/CodingManager/service/problemoftheday/ProblemOfTheDayService.java`)
- Daily problems → API client: serves problems
- Contest updates → Contest records: updates contests (evidence: `CodingManager/src/main/java/com/sathvik/CodingManager/service/contest/ContestUpdateService.java`)
- Contest updates → API client: serves contests
- API client → Online compiler: submits code
- Online compiler → Docker runtime: executes isolated (evidence: `README.md`)
- Platform statistics → MongoDB: stored in (evidence: `CodingManager/src/main/java/com/sathvik/CodingManager/model/CodingStats.java`)
- User records → MongoDB: stored in (evidence: `CodingManager/src/main/java/com/sathvik/CodingManager/model/User.java`)
