# mansurrovv10/language-learning-platform architecture

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

- Interactive diagram: https://gitdiagram.com/mansurrovv10/language-learning-platform
- Repository: https://github.com/mansurrovv10/language-learning-platform
- Video tour (about a minute): https://gitdiagram.com/mansurrovv10/language-learning-platform/video

## Overview

This is a FastAPI modular-monolith backend for a language-learning platform with social chat features. Users authenticate, take placement tests to establish their level, access unlocked learning content, submit exercises, and accumulate progress and rewards. The graph highlights the documented product areas and sampled service behavior; several domain implementations were not sampled, so their internal wiring is represented only at the API/service boundary. PostgreSQL and Redis are documented, and sampled code confirms Redis rate limiting; database persistence is visible in the authentication repository.

Main entry points: [`main.py`](https://github.com/mansurrovv10/language-learning-platform/blob/main/main.py) (FastAPI application), [`backend/api/auth.py`](https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/auth.py) (Auth API), [`backend/services/auth_ser.py`](https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/services/auth_ser.py) (Authentication service), [`backend/api/chats.py`](https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/chats.py) (Chat API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Application runtime"]
  node_app["FastAPI application<br/>[main.py]"]
  node_auth["Auth API<br/>[auth.py]"]
  node_users["User API<br/>[users.py]"]
  node_auth_service["Authentication service<br/>[auth_ser.py]"]
end

subgraph group_learning["Learning journey"]
  node_languages["Languages API<br/>[languages.py]"]
  node_courses["Courses API<br/>[courses.py]"]
  node_lessons["Lessons API<br/>[lessons.py]"]
  node_exercises["Exercises API<br/>[exercises.py]"]
  node_leveltests["Level tests API<br/>[level_tests.py]"]
  node_learningpath["Learning path"]
  node_exercise_service["Exercise evaluation"]
  node_level_service["Placement and tests"]
end

subgraph group_rewards["Progress and rewards"]
  node_progress["Progress API<br/>[progress.py]"]
  node_gamification["Gamification API<br/>[gamification.py]"]
  node_achievements["Achievements API<br/>[achievement.py]"]
  node_challenges["Daily challenges<br/>[challange.py]"]
  node_leaderboard["Leaderboard API<br/>[leaderboard.py]"]
  node_achievement_service["Achievement awards"]
end

subgraph group_social["Social features"]
  node_friends["Friends API<br/>[friends.py]"]
  node_chats["Chat API<br/>[chats.py]"]
  node_websocket["Chat WebSocket<br/>[chat_ws.py]"]
  node_chat_service["Chat operations<br/>[chat_service.py]"]
end

subgraph group_platform["Platform services"]
  node_auth_repo["Auth repository<br/>[auth_repo.py]"]
  node_postgres[("PostgreSQL")]
  node_rate_limit["Rate limiting<br/>[middleware.py]"]
  node_redis[("Redis<br/>[redis.py]")]
end

node_client(("API clients"))

node_client -->|"sends requests"| node_app
node_app -->|"routes requests"| node_auth
node_app -->|"routes requests"| node_users
node_app -->|"routes requests"| node_languages
node_app -->|"routes requests"| node_courses
node_app -->|"routes requests"| node_lessons
node_app -->|"routes requests"| node_exercises
node_app -->|"routes requests"| node_leveltests
node_app -->|"routes requests"| node_progress
node_app -->|"routes requests"| node_gamification
node_app -->|"routes requests"| node_achievements
node_app -->|"routes requests"| node_challenges
node_app -->|"routes requests"| node_leaderboard
node_app -->|"routes requests"| node_friends
node_app -->|"routes requests"| node_chats
node_app -->|"routes connections"| node_websocket
node_auth -->|"invokes"| node_auth_service
node_auth_service -->|"uses"| node_auth_repo
node_auth_repo -->|"reads and writes"| node_postgres
node_rate_limit -->|"increments counters"| node_redis
node_app -->|"applies middleware"| node_rate_limit
node_level_service -->|"sets learner level"| node_learningpath
node_exercise_service -->|"checks awards"| node_achievement_service
node_chats -.->|"invokes"| node_chat_service
node_websocket -.->|"invokes"| node_chat_service

click node_app "https://github.com/mansurrovv10/language-learning-platform/blob/main/main.py"
click node_auth "https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/auth.py"
click node_users "https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/users.py"
click node_languages "https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/languages.py"
click node_courses "https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/courses.py"
click node_lessons "https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/lessons.py"
click node_exercises "https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/exercises.py"
click node_leveltests "https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/level_tests.py"
click node_learningpath "https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/services/learning_path_service.py"
click node_progress "https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/progress.py"
click node_gamification "https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/gamification.py"
click node_achievements "https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/achievement.py"
click node_challenges "https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/challange.py"
click node_leaderboard "https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/leaderboard.py"
click node_friends "https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/friends.py"
click node_chats "https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/chats.py"
click node_websocket "https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/chat_ws.py"
click node_exercise_service "https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/services/exercise_service.py"
click node_level_service "https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/services/level_test_service.py"
click node_achievement_service "https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/services/achievement_service.py"
click node_chat_service "https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/services/chat_service.py"
click node_auth_service "https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/services/auth_ser.py"
click node_auth_repo "https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/repositories/auth_repo.py"
click node_rate_limit "https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/middleware.py"
click node_redis "https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/database/redis.py"

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_auth,node_users,node_auth_service,node_client toneBlue
class node_languages,node_courses,node_lessons,node_exercises,node_leveltests,node_learningpath,node_exercise_service,node_level_service toneAmber
class node_progress,node_gamification,node_achievements,node_challenges,node_leaderboard,node_achievement_service toneMint
class node_friends,node_chats,node_websocket,node_chat_service toneRose
class node_auth_repo,node_postgres,node_rate_limit,node_redis toneIndigo
```

## Components

### Application runtime

- [FastAPI application](https://github.com/mansurrovv10/language-learning-platform/blob/main/main.py): `main.py`
- [Auth API](https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/auth.py): `backend/api/auth.py`
- [User API](https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/users.py): `backend/api/users.py`
- [Authentication service](https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/services/auth_ser.py): `backend/services/auth_ser.py`

### Learning journey

- [Languages API](https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/languages.py): `backend/api/languages.py`
- [Courses API](https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/courses.py): `backend/api/courses.py`
- [Lessons API](https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/lessons.py): `backend/api/lessons.py`
- [Exercises API](https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/exercises.py): `backend/api/exercises.py`
- [Level tests API](https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/level_tests.py): `backend/api/level_tests.py`
- [Learning path](https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/services/learning_path_service.py): `backend/services/learning_path_service.py`
- [Exercise evaluation](https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/services/exercise_service.py): `backend/services/exercise_service.py`
- [Placement and tests](https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/services/level_test_service.py): `backend/services/level_test_service.py`

### Progress and rewards

- [Progress API](https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/progress.py): `backend/api/progress.py`
- [Gamification API](https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/gamification.py): `backend/api/gamification.py`
- [Achievements API](https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/achievement.py): `backend/api/achievement.py`
- [Daily challenges](https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/challange.py): `backend/api/challange.py`
- [Leaderboard API](https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/leaderboard.py): `backend/api/leaderboard.py`
- [Achievement awards](https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/services/achievement_service.py): `backend/services/achievement_service.py`

### Social features

- [Friends API](https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/friends.py): `backend/api/friends.py`
- [Chat API](https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/chats.py): `backend/api/chats.py`
- [Chat WebSocket](https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/api/chat_ws.py): `backend/api/chat_ws.py`
- [Chat operations](https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/services/chat_service.py): `backend/services/chat_service.py`

### Platform services

- [Auth repository](https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/repositories/auth_repo.py): `backend/repositories/auth_repo.py`
- **PostgreSQL**
- [Rate limiting](https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/middleware.py): `backend/middleware.py`
- [Redis](https://github.com/mansurrovv10/language-learning-platform/blob/main/backend/database/redis.py): `backend/database/redis.py`

### Other components

- **API clients**

## Connections

- API clients → FastAPI application: sends requests
- FastAPI application → Auth API: routes requests
- FastAPI application → User API: routes requests
- FastAPI application → Languages API: routes requests
- FastAPI application → Courses API: routes requests
- FastAPI application → Lessons API: routes requests
- FastAPI application → Exercises API: routes requests
- FastAPI application → Level tests API: routes requests
- FastAPI application → Progress API: routes requests
- FastAPI application → Gamification API: routes requests
- FastAPI application → Achievements API: routes requests
- FastAPI application → Daily challenges: routes requests
- FastAPI application → Leaderboard API: routes requests
- FastAPI application → Friends API: routes requests
- FastAPI application → Chat API: routes requests
- FastAPI application → Chat WebSocket: routes connections
- Auth API → Authentication service: invokes
- Authentication service → Auth repository: uses
- Auth repository → PostgreSQL: reads and writes
- Rate limiting → Redis: increments counters
- FastAPI application → Rate limiting: applies middleware
- Placement and tests → Learning path: sets learner level
- Exercise evaluation → Achievement awards: checks awards
- Chat API → Chat operations: invokes
- Chat WebSocket → Chat operations: invokes
