# yohannesdd78/webappproject architecture

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

- Interactive diagram: https://gitdiagram.com/yohannesdd78/webappproject
- Repository: https://github.com/yohannesdd78/webappproject

## Overview

Zeno is a learning web application with a Java/Spring API and JavaScript learning screens. Learners can study Python lessons, complete assignments, and use community, profile, milestones, and leaderboard features; the API has domain areas for accounts, assignments, progress, incentives, and leaderboard data. The backend follows controller, service, and repository layers, with entity/front models for persistence and API-facing data. Source excerpts establish several backend relationships; the empty README and unsampled UI/API wiring limit evidence for how the browser connects to the API.

Main entry points: [`API/src/main/java/com/zenoAppAPI/ZenoWebApp/Mappers`](https://github.com/yohannesdd78/webappproject/tree/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/Mappers) (Model mappers), [`API/src/main/java/com/zenoAppAPI/ZenoWebApp/domain/Entities`](https://github.com/yohannesdd78/webappproject/tree/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/domain/Entities) (Domain entities), [`API/src/main/java/com/zenoAppAPI/ZenoWebApp/repositories`](https://github.com/yohannesdd78/webappproject/tree/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/repositories) (Repositories), [`API/src/main/java/com/zenoAppAPI/ZenoWebApp/services/ServiceImplementations/AssignmentServiceImpl.java`](https://github.com/yohannesdd78/webappproject/blob/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/services/ServiceImplementations/AssignmentServiceImpl.java) (Assignment logic)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_learning["Learning experience"]
  node_lesson_content["Lesson content<br/>[data.js]"]
  node_study["Study lessons<br/>[study.js]"]
  node_assignments_ui["Assignment screen<br/>[tasks.js]"]
  node_home["Home dashboard<br/>[home.js]"]
end

subgraph group_social["Community and ranking"]
  node_community["Community<br/>[community.js]"]
  node_milestones["Milestones<br/>[milestones.js]"]
  node_profile["Profile<br/>[profile.js]"]
  node_leaderboard_ui["Leaderboard screen<br/>[leaderboard.js]"]
end

subgraph group_api["API endpoints"]
  node_assignment_api["Assignment API"]
  node_incentive_api["Incentive API"]
  node_progress_api["Progress API"]
  node_leaderboard_api["Leaderboard API"]
  node_account_api["Account API"]
end

subgraph group_logic["Business services"]
  node_assignment_logic["Assignment logic"]
  node_incentive_logic["Incentive logic"]
  node_progress_logic["Progress logic"]
  node_leaderboard_logic["Leaderboard logic"]
  node_account_logic["Account logic"]
end

subgraph group_data["Persistence and models"]
  node_repositories[("Repositories")]
  node_entities["Domain entities"]
  node_front_models["Front models"]
  node_mappers["Model mappers"]
end

node_learner(("Learner"))

node_learner -->|"studies"| node_study
node_learner -->|"completes"| node_assignments_ui
node_learner -->|"visits"| node_community
node_learner -->|"views"| node_profile
node_learner -->|"checks rank"| node_leaderboard_ui
node_study -->|"reads lessons"| node_lesson_content
node_assignments_ui -->|"reads content"| node_lesson_content
node_home -->|"reads content"| node_lesson_content
node_assignment_api -->|"delegates to"| node_assignment_logic
node_incentive_api -->|"delegates to"| node_incentive_logic
node_progress_api -->|"delegates to"| node_progress_logic
node_leaderboard_api -->|"delegates to"| node_leaderboard_logic
node_account_api -->|"delegates to"| node_account_logic
node_assignment_logic -->|"uses repositories"| node_repositories
node_incentive_logic -->|"uses repositories"| node_repositories
node_progress_logic -->|"uses repositories"| node_repositories
node_leaderboard_logic -->|"uses repositories"| node_repositories
node_assignment_logic -->|"uses entities"| node_entities
node_incentive_logic -->|"uses entities"| node_entities
node_progress_logic -->|"uses entities"| node_entities
node_leaderboard_logic -->|"uses entities"| node_entities
node_account_logic -->|"uses entities"| node_entities
node_assignment_api -->|"maps models"| node_mappers
node_incentive_api -->|"maps models"| node_mappers
node_progress_api -->|"maps models"| node_mappers
node_leaderboard_api -->|"maps models"| node_mappers
node_account_api -->|"maps models"| node_mappers
node_mappers -->|"converts"| node_entities
node_mappers -->|"converts"| node_front_models

click node_lesson_content "https://github.com/yohannesdd78/webappproject/blob/master/js/data.js"
click node_study "https://github.com/yohannesdd78/webappproject/blob/master/js/study.js"
click node_assignments_ui "https://github.com/yohannesdd78/webappproject/blob/master/js/tasks.js"
click node_home "https://github.com/yohannesdd78/webappproject/blob/master/js/home.js"
click node_community "https://github.com/yohannesdd78/webappproject/blob/master/js/community.js"
click node_milestones "https://github.com/yohannesdd78/webappproject/blob/master/js/milestones.js"
click node_profile "https://github.com/yohannesdd78/webappproject/blob/master/js/profile.js"
click node_leaderboard_ui "https://github.com/yohannesdd78/webappproject/blob/master/js/leaderboard.js"
click node_assignment_api "https://github.com/yohannesdd78/webappproject/blob/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/controllers/AssignmentController.java"
click node_incentive_api "https://github.com/yohannesdd78/webappproject/blob/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/controllers/IncentiveControllers.java"
click node_progress_api "https://github.com/yohannesdd78/webappproject/blob/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/controllers/ProgressController.java"
click node_leaderboard_api "https://github.com/yohannesdd78/webappproject/blob/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/controllers/LeaderboardController.java"
click node_account_api "https://github.com/yohannesdd78/webappproject/blob/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/controllers/UserAccountInfoController.java"
click node_assignment_logic "https://github.com/yohannesdd78/webappproject/blob/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/services/ServiceImplementations/AssignmentServiceImpl.java"
click node_incentive_logic "https://github.com/yohannesdd78/webappproject/blob/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/services/ServiceImplementations/IncentiveServiceImpl.java"
click node_progress_logic "https://github.com/yohannesdd78/webappproject/blob/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/services/ServiceImplementations/ProgressServiceImpl.java"
click node_leaderboard_logic "https://github.com/yohannesdd78/webappproject/blob/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/services/ServiceImplementations/LeaderboardServiceImpl.java"
click node_account_logic "https://github.com/yohannesdd78/webappproject/blob/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/services/ServiceImplementations/UserAccountInfoServiceImpl.java"
click node_repositories "https://github.com/yohannesdd78/webappproject/tree/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/repositories"
click node_entities "https://github.com/yohannesdd78/webappproject/tree/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/domain/Entities"
click node_front_models "https://github.com/yohannesdd78/webappproject/tree/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/domain/Fronts"
click node_mappers "https://github.com/yohannesdd78/webappproject/tree/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/Mappers"

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_lesson_content,node_study,node_assignments_ui,node_home toneBlue
class node_community,node_milestones,node_profile,node_leaderboard_ui toneAmber
class node_assignment_api,node_incentive_api,node_progress_api,node_leaderboard_api,node_account_api toneMint
class node_assignment_logic,node_incentive_logic,node_progress_logic,node_leaderboard_logic,node_account_logic toneRose
class node_repositories,node_entities,node_front_models,node_mappers,node_learner toneIndigo
```

## Components

### Learning experience

- [Lesson content](https://github.com/yohannesdd78/webappproject/blob/master/js/data.js): `js/data.js`
- [Study lessons](https://github.com/yohannesdd78/webappproject/blob/master/js/study.js): `js/study.js`
- [Assignment screen](https://github.com/yohannesdd78/webappproject/blob/master/js/tasks.js): `js/tasks.js`
- [Home dashboard](https://github.com/yohannesdd78/webappproject/blob/master/js/home.js): `js/home.js`

### Community and ranking

- [Community](https://github.com/yohannesdd78/webappproject/blob/master/js/community.js): `js/community.js`
- [Milestones](https://github.com/yohannesdd78/webappproject/blob/master/js/milestones.js): `js/milestones.js`
- [Profile](https://github.com/yohannesdd78/webappproject/blob/master/js/profile.js): `js/profile.js`
- [Leaderboard screen](https://github.com/yohannesdd78/webappproject/blob/master/js/leaderboard.js): `js/leaderboard.js`

### API endpoints

- [Assignment API](https://github.com/yohannesdd78/webappproject/blob/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/controllers/AssignmentController.java): `API/src/main/java/com/zenoAppAPI/ZenoWebApp/controllers/AssignmentController.java`
- [Incentive API](https://github.com/yohannesdd78/webappproject/blob/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/controllers/IncentiveControllers.java): `API/src/main/java/com/zenoAppAPI/ZenoWebApp/controllers/IncentiveControllers.java`
- [Progress API](https://github.com/yohannesdd78/webappproject/blob/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/controllers/ProgressController.java): `API/src/main/java/com/zenoAppAPI/ZenoWebApp/controllers/ProgressController.java`
- [Leaderboard API](https://github.com/yohannesdd78/webappproject/blob/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/controllers/LeaderboardController.java): `API/src/main/java/com/zenoAppAPI/ZenoWebApp/controllers/LeaderboardController.java`
- [Account API](https://github.com/yohannesdd78/webappproject/blob/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/controllers/UserAccountInfoController.java): `API/src/main/java/com/zenoAppAPI/ZenoWebApp/controllers/UserAccountInfoController.java`

### Business services

- [Assignment logic](https://github.com/yohannesdd78/webappproject/blob/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/services/ServiceImplementations/AssignmentServiceImpl.java): `API/src/main/java/com/zenoAppAPI/ZenoWebApp/services/ServiceImplementations/AssignmentServiceImpl.java`
- [Incentive logic](https://github.com/yohannesdd78/webappproject/blob/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/services/ServiceImplementations/IncentiveServiceImpl.java): `API/src/main/java/com/zenoAppAPI/ZenoWebApp/services/ServiceImplementations/IncentiveServiceImpl.java`
- [Progress logic](https://github.com/yohannesdd78/webappproject/blob/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/services/ServiceImplementations/ProgressServiceImpl.java): `API/src/main/java/com/zenoAppAPI/ZenoWebApp/services/ServiceImplementations/ProgressServiceImpl.java`
- [Leaderboard logic](https://github.com/yohannesdd78/webappproject/blob/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/services/ServiceImplementations/LeaderboardServiceImpl.java): `API/src/main/java/com/zenoAppAPI/ZenoWebApp/services/ServiceImplementations/LeaderboardServiceImpl.java`
- [Account logic](https://github.com/yohannesdd78/webappproject/blob/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/services/ServiceImplementations/UserAccountInfoServiceImpl.java): `API/src/main/java/com/zenoAppAPI/ZenoWebApp/services/ServiceImplementations/UserAccountInfoServiceImpl.java`

### Persistence and models

- [Repositories](https://github.com/yohannesdd78/webappproject/tree/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/repositories): `API/src/main/java/com/zenoAppAPI/ZenoWebApp/repositories`
- [Domain entities](https://github.com/yohannesdd78/webappproject/tree/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/domain/Entities): `API/src/main/java/com/zenoAppAPI/ZenoWebApp/domain/Entities`
- [Front models](https://github.com/yohannesdd78/webappproject/tree/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/domain/Fronts): `API/src/main/java/com/zenoAppAPI/ZenoWebApp/domain/Fronts`
- [Model mappers](https://github.com/yohannesdd78/webappproject/tree/master/API/src/main/java/com/zenoAppAPI/ZenoWebApp/Mappers): `API/src/main/java/com/zenoAppAPI/ZenoWebApp/Mappers`

### Other components

- **Learner**

## Connections

- Learner → Study lessons: studies
- Learner → Assignment screen: completes
- Learner → Community: visits
- Learner → Profile: views
- Learner → Leaderboard screen: checks rank
- Study lessons → Lesson content: reads lessons (evidence: `js/study.js`)
- Assignment screen → Lesson content: reads content (evidence: `js/tasks.js`)
- Home dashboard → Lesson content: reads content (evidence: `js/home.js`)
- Assignment API → Assignment logic: delegates to (evidence: `API/src/main/java/com/zenoAppAPI/ZenoWebApp/controllers/AssignmentController.java`)
- Incentive API → Incentive logic: delegates to (evidence: `API/src/main/java/com/zenoAppAPI/ZenoWebApp/controllers/IncentiveControllers.java`)
- Progress API → Progress logic: delegates to (evidence: `API/src/main/java/com/zenoAppAPI/ZenoWebApp/controllers/ProgressController.java`)
- Leaderboard API → Leaderboard logic: delegates to (evidence: `API/src/main/java/com/zenoAppAPI/ZenoWebApp/controllers/LeaderboardController.java`)
- Account API → Account logic: delegates to (evidence: `API/src/main/java/com/zenoAppAPI/ZenoWebApp/controllers/UserAccountInfoController.java`)
- Assignment logic → Repositories: uses repositories (evidence: `API/src/main/java/com/zenoAppAPI/ZenoWebApp/services/ServiceImplementations/AssignmentServiceImpl.java`)
- Incentive logic → Repositories: uses repositories (evidence: `API/src/main/java/com/zenoAppAPI/ZenoWebApp/services/ServiceImplementations/IncentiveServiceImpl.java`)
- Progress logic → Repositories: uses repositories (evidence: `API/src/main/java/com/zenoAppAPI/ZenoWebApp/services/ServiceImplementations/ProgressServiceImpl.java`)
- Leaderboard logic → Repositories: uses repositories (evidence: `API/src/main/java/com/zenoAppAPI/ZenoWebApp/services/ServiceImplementations/LeaderboardServiceImpl.java`)
- Assignment logic → Domain entities: uses entities (evidence: `API/src/main/java/com/zenoAppAPI/ZenoWebApp/services/ServiceImplementations/AssignmentServiceImpl.java`)
- Incentive logic → Domain entities: uses entities (evidence: `API/src/main/java/com/zenoAppAPI/ZenoWebApp/services/ServiceImplementations/IncentiveServiceImpl.java`)
- Progress logic → Domain entities: uses entities (evidence: `API/src/main/java/com/zenoAppAPI/ZenoWebApp/services/ServiceImplementations/ProgressServiceImpl.java`)
- Leaderboard logic → Domain entities: uses entities (evidence: `API/src/main/java/com/zenoAppAPI/ZenoWebApp/services/ServiceImplementations/LeaderboardServiceImpl.java`)
- Account logic → Domain entities: uses entities
- Assignment API → Model mappers: maps models (evidence: `API/src/main/java/com/zenoAppAPI/ZenoWebApp/controllers/AssignmentController.java`)
- Incentive API → Model mappers: maps models (evidence: `API/src/main/java/com/zenoAppAPI/ZenoWebApp/controllers/IncentiveControllers.java`)
- Progress API → Model mappers: maps models (evidence: `API/src/main/java/com/zenoAppAPI/ZenoWebApp/controllers/ProgressController.java`)
- Leaderboard API → Model mappers: maps models (evidence: `API/src/main/java/com/zenoAppAPI/ZenoWebApp/controllers/LeaderboardController.java`)
- Account API → Model mappers: maps models (evidence: `API/src/main/java/com/zenoAppAPI/ZenoWebApp/controllers/UserAccountInfoController.java`)
- Model mappers → Domain entities: converts (evidence: `API/src/main/java/com/zenoAppAPI/ZenoWebApp/controllers/AssignmentController.java`)
- Model mappers → Front models: converts (evidence: `API/src/main/java/com/zenoAppAPI/ZenoWebApp/controllers/AssignmentController.java`)
