# code-of-zhang/litecode-cpp architecture

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

- Interactive diagram: https://gitdiagram.com/code-of-zhang/litecode-cpp
- Repository: https://github.com/code-of-zhang/litecode-cpp

## Overview

LiteCode-CPP is a browser-facing programming-practice judge: users browse problems, submit code, and poll asynchronous judging results. Admins manage problems and imports; additional product areas cover accounts, discussions, solutions, check-ins, notifications, statistics, and operational metrics. The sampled source confirms the HTTP bootstrap, authentication, problem administration, submission enqueueing, and Docker client roles. Several other capabilities are evident from the repository tree, but their internal wiring was not sampled, so those links are omitted.

Main entry points: [`src/server.h`](https://github.com/code-of-zhang/litecode-cpp/blob/main/src/server.h) (HTTP server), [`src/db/connection_pool.h`](https://github.com/code-of-zhang/litecode-cpp/blob/main/src/db/connection_pool.h) (Database connection pool), [`src/judge/judge_scheduler.h`](https://github.com/code-of-zhang/litecode-cpp/blob/main/src/judge/judge_scheduler.h) (Judge scheduler), [`src/routes/submission_routes.h`](https://github.com/code-of-zhang/litecode-cpp/blob/main/src/routes/submission_routes.h) (Submission routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web client"]
  node_browser["Browser UI<br/>[app.js]"]
  node_api_client["API client<br/>[api.js]"]
end

subgraph group_http["HTTP and identity"]
  node_bootstrap["Application bootstrap<br/>[main.cpp]"]
  node_http_server["HTTP server<br/>[server.h]"]
  node_auth_routes["Account routes<br/>[auth_routes.h]"]
  node_auth_middleware["JWT middleware<br/>[auth_middleware.h]"]
  node_db_pool["Database connection pool<br/>[connection_pool.h]"]
end

subgraph group_problems["Problem management"]
  node_problem_routes["Problem routes<br/>[problem_routes.h]"]
  node_admin_problem_routes["Admin problem routes"]
  node_bulk_import["Bulk problem import"]
end

subgraph group_judge["Submission judging"]
  node_submission_routes["Submission routes"]
  node_scheduler["Judge scheduler<br/>[judge_scheduler.h]"]
  node_docker_client["Docker client<br/>[docker_client.h]"]
  node_sample_runner["Sample runner<br/>[sample_runner.h]"]
  node_warm_pool["Judge warm pool<br/>[warm_pool.h]"]
end

subgraph group_community["Community and insights"]
  node_discussion_routes["Discussions"]
  node_solution_routes["Solutions<br/>[solution_routes.h]"]
  node_checkin_routes["Daily check-ins<br/>[checkin_routes.h]"]
  node_notification_routes["Notifications"]
  node_stats_routes["User statistics<br/>[stats_routes.h]"]
  node_metrics_routes["Service metrics"]
end

node_learner(("Learner"))
node_admin(("Administrator"))
node_mysql[("MySQL database")]
node_docker_engine["Docker Engine"]

node_learner -->|"uses"| node_browser
node_admin -->|"uses"| node_browser
node_browser -->|"requests"| node_api_client
node_api_client -->|"calls API"| node_http_server
node_bootstrap -->|"starts"| node_http_server
node_http_server -->|"dispatches"| node_auth_routes
node_http_server -->|"dispatches"| node_problem_routes
node_http_server -->|"dispatches"| node_admin_problem_routes
node_http_server -->|"dispatches"| node_bulk_import
node_http_server -->|"dispatches"| node_submission_routes
node_auth_routes -->|"verifies access"| node_auth_middleware
node_submission_routes -->|"verifies access"| node_auth_middleware
node_bootstrap -->|"constructs"| node_scheduler
node_submission_routes -->|"enqueues"| node_scheduler
node_scheduler -->|"runs containers"| node_docker_client
node_docker_client -->|"controls"| node_docker_engine
node_scheduler -->|"runs samples"| node_sample_runner
node_scheduler -->|"uses"| node_warm_pool
node_bootstrap -->|"builds"| node_db_pool
node_auth_routes -->|"reads and writes"| node_db_pool
node_problem_routes -->|"reads"| node_db_pool
node_admin_problem_routes -->|"writes"| node_db_pool
node_bulk_import -->|"imports into"| node_db_pool
node_submission_routes -->|"stores submissions"| node_db_pool
node_db_pool -->|"queries"| node_mysql

click node_browser "https://github.com/code-of-zhang/litecode-cpp/blob/main/web/js/app.js"
click node_api_client "https://github.com/code-of-zhang/litecode-cpp/blob/main/web/js/api.js"
click node_bootstrap "https://github.com/code-of-zhang/litecode-cpp/blob/main/src/main.cpp"
click node_http_server "https://github.com/code-of-zhang/litecode-cpp/blob/main/src/server.h"
click node_auth_routes "https://github.com/code-of-zhang/litecode-cpp/blob/main/src/routes/auth_routes.h"
click node_auth_middleware "https://github.com/code-of-zhang/litecode-cpp/blob/main/src/middleware/auth_middleware.h"
click node_problem_routes "https://github.com/code-of-zhang/litecode-cpp/blob/main/src/routes/problem_routes.h"
click node_admin_problem_routes "https://github.com/code-of-zhang/litecode-cpp/blob/main/src/routes/admin_problem_routes.h"
click node_bulk_import "https://github.com/code-of-zhang/litecode-cpp/blob/main/src/routes/admin_bulk_import_routes.h"
click node_submission_routes "https://github.com/code-of-zhang/litecode-cpp/blob/main/src/routes/submission_routes.h"
click node_scheduler "https://github.com/code-of-zhang/litecode-cpp/blob/main/src/judge/judge_scheduler.h"
click node_docker_client "https://github.com/code-of-zhang/litecode-cpp/blob/main/src/judge/docker_client.h"
click node_sample_runner "https://github.com/code-of-zhang/litecode-cpp/blob/main/src/judge/sample_runner.h"
click node_warm_pool "https://github.com/code-of-zhang/litecode-cpp/blob/main/src/judge/warm_pool.h"
click node_discussion_routes "https://github.com/code-of-zhang/litecode-cpp/blob/main/src/routes/discussion_routes.h"
click node_solution_routes "https://github.com/code-of-zhang/litecode-cpp/blob/main/src/routes/solution_routes.h"
click node_checkin_routes "https://github.com/code-of-zhang/litecode-cpp/blob/main/src/routes/checkin_routes.h"
click node_notification_routes "https://github.com/code-of-zhang/litecode-cpp/blob/main/src/routes/notification_routes.h"
click node_stats_routes "https://github.com/code-of-zhang/litecode-cpp/blob/main/src/routes/stats_routes.h"
click node_db_pool "https://github.com/code-of-zhang/litecode-cpp/blob/main/src/db/connection_pool.h"

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_api_client toneBlue
class node_bootstrap,node_http_server,node_auth_routes,node_auth_middleware,node_db_pool,node_mysql toneAmber
class node_problem_routes,node_admin_problem_routes,node_bulk_import toneMint
class node_submission_routes,node_scheduler,node_docker_client,node_sample_runner,node_warm_pool toneRose
class node_discussion_routes,node_solution_routes,node_checkin_routes,node_notification_routes,node_stats_routes,node_metrics_routes,node_learner,node_admin,node_docker_engine toneIndigo
```

## Components

### Web client

- [Browser UI](https://github.com/code-of-zhang/litecode-cpp/blob/main/web/js/app.js): `web/js/app.js`
- [API client](https://github.com/code-of-zhang/litecode-cpp/blob/main/web/js/api.js): `web/js/api.js`

### HTTP and identity

- [Application bootstrap](https://github.com/code-of-zhang/litecode-cpp/blob/main/src/main.cpp): `src/main.cpp`
- [HTTP server](https://github.com/code-of-zhang/litecode-cpp/blob/main/src/server.h): `src/server.h`
- [Account routes](https://github.com/code-of-zhang/litecode-cpp/blob/main/src/routes/auth_routes.h): `src/routes/auth_routes.h`
- [JWT middleware](https://github.com/code-of-zhang/litecode-cpp/blob/main/src/middleware/auth_middleware.h): `src/middleware/auth_middleware.h`
- [Database connection pool](https://github.com/code-of-zhang/litecode-cpp/blob/main/src/db/connection_pool.h): `src/db/connection_pool.h`

### Problem management

- [Problem routes](https://github.com/code-of-zhang/litecode-cpp/blob/main/src/routes/problem_routes.h): `src/routes/problem_routes.h`
- [Admin problem routes](https://github.com/code-of-zhang/litecode-cpp/blob/main/src/routes/admin_problem_routes.h): `src/routes/admin_problem_routes.h`
- [Bulk problem import](https://github.com/code-of-zhang/litecode-cpp/blob/main/src/routes/admin_bulk_import_routes.h): `src/routes/admin_bulk_import_routes.h`

### Submission judging

- [Submission routes](https://github.com/code-of-zhang/litecode-cpp/blob/main/src/routes/submission_routes.h): `src/routes/submission_routes.h`
- [Judge scheduler](https://github.com/code-of-zhang/litecode-cpp/blob/main/src/judge/judge_scheduler.h): `src/judge/judge_scheduler.h`
- [Docker client](https://github.com/code-of-zhang/litecode-cpp/blob/main/src/judge/docker_client.h): `src/judge/docker_client.h`
- [Sample runner](https://github.com/code-of-zhang/litecode-cpp/blob/main/src/judge/sample_runner.h): `src/judge/sample_runner.h`
- [Judge warm pool](https://github.com/code-of-zhang/litecode-cpp/blob/main/src/judge/warm_pool.h): `src/judge/warm_pool.h`

### Community and insights

- [Discussions](https://github.com/code-of-zhang/litecode-cpp/blob/main/src/routes/discussion_routes.h): `src/routes/discussion_routes.h`
- [Solutions](https://github.com/code-of-zhang/litecode-cpp/blob/main/src/routes/solution_routes.h): `src/routes/solution_routes.h`
- [Daily check-ins](https://github.com/code-of-zhang/litecode-cpp/blob/main/src/routes/checkin_routes.h): `src/routes/checkin_routes.h`
- [Notifications](https://github.com/code-of-zhang/litecode-cpp/blob/main/src/routes/notification_routes.h): `src/routes/notification_routes.h`
- [User statistics](https://github.com/code-of-zhang/litecode-cpp/blob/main/src/routes/stats_routes.h): `src/routes/stats_routes.h`
- **Service metrics**

### Other components

- **Learner**
- **Administrator**
- **MySQL database**
- **Docker Engine**

## Connections

- Learner → Browser UI: uses
- Administrator → Browser UI: uses
- Browser UI → API client: requests
- API client → HTTP server: calls API
- Application bootstrap → HTTP server: starts
- HTTP server → Account routes: dispatches
- HTTP server → Problem routes: dispatches
- HTTP server → Admin problem routes: dispatches
- HTTP server → Bulk problem import: dispatches
- HTTP server → Submission routes: dispatches
- Account routes → JWT middleware: verifies access
- Submission routes → JWT middleware: verifies access
- Application bootstrap → Judge scheduler: constructs
- Submission routes → Judge scheduler: enqueues
- Judge scheduler → Docker client: runs containers
- Docker client → Docker Engine: controls
- Judge scheduler → Sample runner: runs samples
- Judge scheduler → Judge warm pool: uses
- Application bootstrap → Database connection pool: builds
- Account routes → Database connection pool: reads and writes
- Problem routes → Database connection pool: reads
- Admin problem routes → Database connection pool: writes
- Bulk problem import → Database connection pool: imports into
- Submission routes → Database connection pool: stores submissions
- Database connection pool → MySQL database: queries
