# dstepanets/you-passed architecture

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

- Interactive diagram: https://gitdiagram.com/dstepanets/you-passed
- Repository: https://github.com/dstepanets/you-passed

## Overview

YouPassed is a university admissions web application for student applicants and administrators. Students register and maintain profiles, apply to majors, register for required exams, and view applicant rankings and admission outcomes. Administrators manage users, majors, and exams, enter marks, and admit ranked applicants individually or in batches. Controllers coordinate these workflows through services, which map domain objects to persisted entities. The README documents English and Ukrainian localizations. The graph reflects sampled controller/service calls and documented capabilities; unsampled subsystem wiring is not inferred.

Main entry points: [`src/main/java/com/youpassed/service/impl/UserServiceImpl.java`](https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/service/impl/UserServiceImpl.java) (User service), [`src/main/java/com/youpassed/controller/AdminController.java`](https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/controller/AdminController.java) (Admin controller), [`src/main/java/com/youpassed/controller/StudentController.java`](https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/controller/StudentController.java) (Student controller), [`src/main/java/com/youpassed/service/impl/MajorServiceImpl.java`](https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/service/impl/MajorServiceImpl.java) (Major service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web and access"]
  node_user_controller["User controller"]
  node_student_controller["Student controller"]
  node_admin_controller["Admin controller"]
  node_security["Security config"]
  node_student_views["Student pages"]
  node_admin_views["Admin pages"]
  node_account_views["Account pages"]
  node_localization["Localized messages"]
end

subgraph group_admissions["Admission workflows"]
  node_user_domain["User domain<br/>[User.java]"]
  node_major_domain["Major domain<br/>[Major.java]"]
  node_exam_domain["Exam domain<br/>[Exam.java]"]
end

subgraph group_services["Application services"]
  node_user_service["User service"]
  node_major_service["Major service"]
  node_exam_service["Exam service"]
end

subgraph group_persistence["Persistence"]
  node_user_mapper["User mapper<br/>[UserMapper.java]"]
  node_major_mapper["Major mapper<br/>[MajorMapper.java]"]
  node_exam_mapper["Exam mapper<br/>[ExamMapper.java]"]
  node_user_repo["User repository"]
  node_major_repo["Major repository"]
  node_exam_repo["Exam repository"]
  node_database[("SQL database")]
end

node_students(("Students"))
node_admins(("Administrators"))

node_students -->|"register or update"| node_user_controller
node_students -->|"apply and register"| node_student_controller
node_admins -->|"manage admissions"| node_admin_controller
node_user_controller -->|"calls"| node_user_service
node_student_controller -->|"loads student"| node_user_service
node_student_controller -->|"applies and ranks"| node_major_service
node_student_controller -->|"registers exams"| node_exam_service
node_admin_controller -->|"manages users"| node_user_service
node_admin_controller -->|"manages admission"| node_major_service
node_admin_controller -->|"manages exams"| node_exam_service
node_user_controller -->|"renders"| node_account_views
node_student_controller -->|"renders"| node_student_views
node_admin_controller -->|"renders"| node_admin_views
node_admin_controller -->|"reads messages"| node_localization
node_security -->|"loads login user"| node_user_service
node_user_service -->|"queries and saves"| node_user_repo
node_user_service -->|"maps users"| node_user_mapper
node_major_service -->|"queries and saves"| node_major_repo
node_major_service -->|"maps majors"| node_major_mapper
node_major_service -->|"persists applicant lists"| node_user_service
node_exam_service -->|"queries and saves"| node_exam_repo
node_exam_service -->|"maps exams"| node_exam_mapper
node_exam_service -->|"persists registrations"| node_user_service
node_user_mapper -->|"maps linked majors"| node_major_mapper
node_user_mapper -->|"maps linked exams"| node_exam_mapper
node_user_repo -->|"reads and writes"| node_database
node_major_repo -->|"reads and writes"| node_database
node_exam_repo -->|"reads and writes"| node_database

click node_user_controller "https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/controller/UserController.java"
click node_student_controller "https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/controller/StudentController.java"
click node_admin_controller "https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/controller/AdminController.java"
click node_security "https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/config/SecurityConfig.java"
click node_student_views "https://github.com/dstepanets/you-passed/tree/master/src/main/resources/templates/student"
click node_admin_views "https://github.com/dstepanets/you-passed/tree/master/src/main/resources/templates/admin"
click node_account_views "https://github.com/dstepanets/you-passed/tree/master/src/main/resources/templates"
click node_localization "https://github.com/dstepanets/you-passed/blob/master/src/main/resources/messages.properties"
click node_user_service "https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/service/impl/UserServiceImpl.java"
click node_major_service "https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/service/impl/MajorServiceImpl.java"
click node_exam_service "https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/service/impl/ExamServiceImpl.java"
click node_user_domain "https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/domain/User.java"
click node_major_domain "https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/domain/Major.java"
click node_exam_domain "https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/domain/Exam.java"
click node_user_mapper "https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/mapper/UserMapper.java"
click node_major_mapper "https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/mapper/MajorMapper.java"
click node_exam_mapper "https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/mapper/ExamMapper.java"
click node_user_repo "https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/repository/UserRepository.java"
click node_major_repo "https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/repository/MajorRepository.java"
click node_exam_repo "https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/repository/ExamRepository.java"

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_user_controller,node_student_controller,node_admin_controller,node_security,node_student_views,node_admin_views,node_account_views,node_localization toneBlue
class node_user_domain,node_major_domain,node_exam_domain toneAmber
class node_user_service,node_major_service,node_exam_service toneMint
class node_user_mapper,node_major_mapper,node_exam_mapper,node_user_repo,node_major_repo,node_exam_repo,node_database toneRose
class node_students,node_admins toneIndigo
```

## Components

### Web and access

- [User controller](https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/controller/UserController.java): `src/main/java/com/youpassed/controller/UserController.java`
- [Student controller](https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/controller/StudentController.java): `src/main/java/com/youpassed/controller/StudentController.java`
- [Admin controller](https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/controller/AdminController.java): `src/main/java/com/youpassed/controller/AdminController.java`
- [Security config](https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/config/SecurityConfig.java): `src/main/java/com/youpassed/config/SecurityConfig.java`
- [Student pages](https://github.com/dstepanets/you-passed/tree/master/src/main/resources/templates/student): `src/main/resources/templates/student`
- [Admin pages](https://github.com/dstepanets/you-passed/tree/master/src/main/resources/templates/admin): `src/main/resources/templates/admin`
- [Account pages](https://github.com/dstepanets/you-passed/tree/master/src/main/resources/templates): `src/main/resources/templates`
- [Localized messages](https://github.com/dstepanets/you-passed/blob/master/src/main/resources/messages.properties): `src/main/resources/messages.properties`

### Admission workflows

- [User domain](https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/domain/User.java): `src/main/java/com/youpassed/domain/User.java`
- [Major domain](https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/domain/Major.java): `src/main/java/com/youpassed/domain/Major.java`
- [Exam domain](https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/domain/Exam.java): `src/main/java/com/youpassed/domain/Exam.java`

### Application services

- [User service](https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/service/impl/UserServiceImpl.java): `src/main/java/com/youpassed/service/impl/UserServiceImpl.java`
- [Major service](https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/service/impl/MajorServiceImpl.java): `src/main/java/com/youpassed/service/impl/MajorServiceImpl.java`
- [Exam service](https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/service/impl/ExamServiceImpl.java): `src/main/java/com/youpassed/service/impl/ExamServiceImpl.java`

### Persistence

- [User mapper](https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/mapper/UserMapper.java): `src/main/java/com/youpassed/mapper/UserMapper.java`
- [Major mapper](https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/mapper/MajorMapper.java): `src/main/java/com/youpassed/mapper/MajorMapper.java`
- [Exam mapper](https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/mapper/ExamMapper.java): `src/main/java/com/youpassed/mapper/ExamMapper.java`
- [User repository](https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/repository/UserRepository.java): `src/main/java/com/youpassed/repository/UserRepository.java`
- [Major repository](https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/repository/MajorRepository.java): `src/main/java/com/youpassed/repository/MajorRepository.java`
- [Exam repository](https://github.com/dstepanets/you-passed/blob/master/src/main/java/com/youpassed/repository/ExamRepository.java): `src/main/java/com/youpassed/repository/ExamRepository.java`
- **SQL database**

### Other components

- **Students**
- **Administrators**

## Connections

- Students → User controller: register or update
- Students → Student controller: apply and register
- Administrators → Admin controller: manage admissions
- User controller → User service: calls
- Student controller → User service: loads student
- Student controller → Major service: applies and ranks
- Student controller → Exam service: registers exams
- Admin controller → User service: manages users
- Admin controller → Major service: manages admission
- Admin controller → Exam service: manages exams
- User controller → Account pages: renders
- Student controller → Student pages: renders
- Admin controller → Admin pages: renders
- Admin controller → Localized messages: reads messages
- Security config → User service: loads login user
- User service → User repository: queries and saves
- User service → User mapper: maps users
- Major service → Major repository: queries and saves
- Major service → Major mapper: maps majors
- Major service → User service: persists applicant lists
- Exam service → Exam repository: queries and saves
- Exam service → Exam mapper: maps exams
- Exam service → User service: persists registrations
- User mapper → Major mapper: maps linked majors
- User mapper → Exam mapper: maps linked exams
- User repository → SQL database: reads and writes
- Major repository → SQL database: reads and writes
- Exam repository → SQL database: reads and writes
