# schiopuvictor/jobspot architecture

> Architecture diagram of the GitHub repository schiopuvictor/jobspot, 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/schiopuvictor/jobspot
- Repository: https://github.com/schiopuvictor/jobspot

## Overview

JobSpot is a Spring application for managing internships and the student recruitment process. Users interact with REST controllers, which delegate domain operations to services; those services coordinate DTO mapping and repository-backed persistence. A principal workflow spans internship listings, student applications with CVs, interviews, and evaluations. The tree also shows user, company, student, notification, and technology-related management. The README is empty, and only some source was excerpted, so unsampled controller and service links are limited to relationships listed in the SOURCE INDEX.

Main entry points: [`src/main/java/com/jobspot/service`](https://github.com/schiopuvictor/jobspot/tree/main/src/main/java/com/jobspot/service) (Profile services), [`src/main/java/com/jobspot/service/ApplicationService.java`](https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/service/ApplicationService.java) (Application service), [`src/main/java/com/jobspot/controller/ApplicationController.java`](https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/controller/ApplicationController.java) (Application API), [`src/main/java/com/jobspot/repository/ApplicationRepository.java`](https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/repository/ApplicationRepository.java) (Application repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_accounts["Accounts and profiles"]
  node_user_api["User API"]
  node_student_api["Student API"]
  node_company_api["Company API"]
  node_cv_api["CV API<br/>[CvController.java]"]
  node_profile_services["Profile services"]
end

subgraph group_opportunities["Internships and applications"]
  node_internship_api["Internship API"]
  node_internship_service["Internship service"]
  node_internship_store[("Internship repository")]
  node_application_api["Application API"]
  node_application_service["Application service"]
  node_application_store[("Application repository")]
  node_application_record["Application record<br/>[Application.java]"]
end

subgraph group_hiring["Hiring outcomes"]
  node_interview_api["Interview API"]
  node_interview_service["Interview service"]
  node_evaluation_api["Evaluation API"]
  node_evaluation_service["Evaluation service"]
  node_notification_api["Notification API"]
  node_notification_service["Notification service"]
end

subgraph group_platform["API and persistence"]
  node_domain_records[("Domain records")]
  node_application_entry["Application startup"]
end

node_actor(("API clients"))

node_actor -.->|"calls"| node_application_api
node_actor -.->|"calls"| node_internship_api
node_actor -.->|"calls"| node_user_api
node_actor -.->|"calls"| node_student_api
node_actor -.->|"calls"| node_company_api
node_actor -.->|"calls"| node_cv_api
node_actor -.->|"calls"| node_interview_api
node_actor -.->|"calls"| node_evaluation_api
node_actor -.->|"calls"| node_notification_api
node_application_api -->|"delegates to"| node_application_service
node_internship_api -->|"delegates to"| node_internship_service
node_company_api -->|"delegates to"| node_profile_services
node_user_api -.->|"delegates to"| node_profile_services
node_student_api -.->|"delegates to"| node_profile_services
node_cv_api -.->|"delegates to"| node_profile_services
node_interview_api -.->|"delegates to"| node_interview_service
node_evaluation_api -.->|"delegates to"| node_evaluation_service
node_notification_api -.->|"delegates to"| node_notification_service
node_application_service -->|"reads and saves"| node_application_store
node_application_service -->|"loads"| node_internship_store
node_internship_service -->|"reads and saves"| node_internship_store
node_application_store -->|"stores"| node_application_record
node_interview_service -->|"loads application"| node_application_store
node_evaluation_service -->|"loads internship"| node_internship_store
node_application_entry -.->|"starts application"| node_application_api

click node_user_api "https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/controller/UserController.java"
click node_student_api "https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/controller/StudentController.java"
click node_company_api "https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/controller/CompanyController.java"
click node_cv_api "https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/controller/CvController.java"
click node_profile_services "https://github.com/schiopuvictor/jobspot/tree/main/src/main/java/com/jobspot/service"
click node_internship_api "https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/controller/InternshipController.java"
click node_internship_service "https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/service/InternshipService.java"
click node_internship_store "https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/repository/InternshipRepository.java"
click node_application_api "https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/controller/ApplicationController.java"
click node_application_service "https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/service/ApplicationService.java"
click node_application_store "https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/repository/ApplicationRepository.java"
click node_application_record "https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/entity/Application.java"
click node_interview_api "https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/controller/InterviewController.java"
click node_interview_service "https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/service/InterviewService.java"
click node_evaluation_api "https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/controller/EvaluationController.java"
click node_evaluation_service "https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/service/EvaluationService.java"
click node_notification_api "https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/controller/NotificationController.java"
click node_notification_service "https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/service/NotificationService.java"
click node_domain_records "https://github.com/schiopuvictor/jobspot/tree/main/src/main/java/com/jobspot/entity"
click node_application_entry "https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/JobSpotApplication.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_api,node_student_api,node_company_api,node_cv_api,node_profile_services,node_actor toneBlue
class node_internship_api,node_internship_service,node_internship_store,node_application_api,node_application_service,node_application_store,node_application_record toneAmber
class node_interview_api,node_interview_service,node_evaluation_api,node_evaluation_service,node_notification_api,node_notification_service toneMint
class node_domain_records,node_application_entry toneRose
```

## Components

### Accounts and profiles

- [User API](https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/controller/UserController.java): `src/main/java/com/jobspot/controller/UserController.java`
- [Student API](https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/controller/StudentController.java): `src/main/java/com/jobspot/controller/StudentController.java`
- [Company API](https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/controller/CompanyController.java): `src/main/java/com/jobspot/controller/CompanyController.java`
- [CV API](https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/controller/CvController.java): `src/main/java/com/jobspot/controller/CvController.java`
- [Profile services](https://github.com/schiopuvictor/jobspot/tree/main/src/main/java/com/jobspot/service): `src/main/java/com/jobspot/service`

### Internships and applications

- [Internship API](https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/controller/InternshipController.java): `src/main/java/com/jobspot/controller/InternshipController.java`
- [Internship service](https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/service/InternshipService.java): `src/main/java/com/jobspot/service/InternshipService.java`
- [Internship repository](https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/repository/InternshipRepository.java): `src/main/java/com/jobspot/repository/InternshipRepository.java`
- [Application API](https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/controller/ApplicationController.java): `src/main/java/com/jobspot/controller/ApplicationController.java`
- [Application service](https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/service/ApplicationService.java): `src/main/java/com/jobspot/service/ApplicationService.java`
- [Application repository](https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/repository/ApplicationRepository.java): `src/main/java/com/jobspot/repository/ApplicationRepository.java`
- [Application record](https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/entity/Application.java): `src/main/java/com/jobspot/entity/Application.java`

### Hiring outcomes

- [Interview API](https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/controller/InterviewController.java): `src/main/java/com/jobspot/controller/InterviewController.java`
- [Interview service](https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/service/InterviewService.java): `src/main/java/com/jobspot/service/InterviewService.java`
- [Evaluation API](https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/controller/EvaluationController.java): `src/main/java/com/jobspot/controller/EvaluationController.java`
- [Evaluation service](https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/service/EvaluationService.java): `src/main/java/com/jobspot/service/EvaluationService.java`
- [Notification API](https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/controller/NotificationController.java): `src/main/java/com/jobspot/controller/NotificationController.java`
- [Notification service](https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/service/NotificationService.java): `src/main/java/com/jobspot/service/NotificationService.java`

### API and persistence

- [Domain records](https://github.com/schiopuvictor/jobspot/tree/main/src/main/java/com/jobspot/entity): `src/main/java/com/jobspot/entity`
- [Application startup](https://github.com/schiopuvictor/jobspot/blob/main/src/main/java/com/jobspot/JobSpotApplication.java): `src/main/java/com/jobspot/JobSpotApplication.java`

### Other components

- **API clients**

## Connections

- API clients → Application API: calls
- API clients → Internship API: calls
- API clients → User API: calls
- API clients → Student API: calls
- API clients → Company API: calls
- API clients → CV API: calls
- API clients → Interview API: calls
- API clients → Evaluation API: calls
- API clients → Notification API: calls
- Application API → Application service: delegates to (evidence: `src/main/java/com/jobspot/controller/ApplicationController.java`)
- Internship API → Internship service: delegates to (evidence: `src/main/java/com/jobspot/controller/InternshipController.java`)
- Company API → Profile services: delegates to (evidence: `src/main/java/com/jobspot/controller/CompanyController.java`)
- User API → Profile services: delegates to
- Student API → Profile services: delegates to
- CV API → Profile services: delegates to
- Interview API → Interview service: delegates to (evidence: `src/main/java/com/jobspot/controller/InterviewController.java`)
- Evaluation API → Evaluation service: delegates to (evidence: `src/main/java/com/jobspot/controller/EvaluationController.java`)
- Notification API → Notification service: delegates to (evidence: `src/main/java/com/jobspot/controller/NotificationController.java`)
- Application service → Application repository: reads and saves (evidence: `src/main/java/com/jobspot/service/ApplicationService.java`)
- Application service → Internship repository: loads (evidence: `src/main/java/com/jobspot/service/ApplicationService.java`)
- Internship service → Internship repository: reads and saves (evidence: `src/main/java/com/jobspot/service/InternshipService.java`)
- Application repository → Application record: stores (evidence: `src/main/java/com/jobspot/repository/ApplicationRepository.java`)
- Interview service → Application repository: loads application (evidence: `src/main/java/com/jobspot/service/InterviewService.java`)
- Evaluation service → Internship repository: loads internship (evidence: `src/main/java/com/jobspot/service/EvaluationService.java`)
- Application startup → Application API: starts application
