# nani517/job-protial architecture

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

- Interactive diagram: https://gitdiagram.com/nani517/job-protial
- Repository: https://github.com/nani517/job-protial

## Overview

JobPortal is a Spring Boot job-portal backend. The visible company workflow registers and manages companies, creates job postings, and lets companies inactivate or repost jobs; candidate endpoints support registration, lookup, and deletion. Services own persistence calls through Spring Data repositories. The entity model includes applications and candidate profile details, but no application-submission workflow is evidenced in the sampled source. The README is empty, and controller/service wiring beyond the sampled files is not inferred.

Main entry points: [`JobPortal/src/main/java/com/alpha/JobPortal/service/CompanyService.java`](https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/service/CompanyService.java) (Company and jobs), [`JobPortal/src/main/java/com/alpha/JobPortal/Controllor/CandiateContorller.java`](https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/Controllor/CandiateContorller.java) (Candidate endpoints), [`JobPortal/src/main/java/com/alpha/JobPortal/Controllor/CompanyContorllor.java`](https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/Controllor/CompanyContorllor.java) (Company endpoints), [`JobPortal/src/main/java/com/alpha/JobPortal/service/CandiateService.java`](https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/service/CandiateService.java) (Candidate service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["REST API"]
  node_candidate_api["Candidate endpoints"]
  node_company_api["Company endpoints"]
  node_error_handler["Error responses"]
end

subgraph group_services["Business Services"]
  node_candidate_service["Candidate service"]
  node_company_service["Company and jobs"]
end

subgraph group_domain["Portal Domain"]
  node_candidate_model["Candidate profile<br/>[Candiate.java]"]
  node_company_model["Company<br/>[Company.java]"]
  node_job_model["Job posting<br/>[Job.java]"]
  node_application_model["Job application<br/>[Application.java]"]
end

subgraph group_persistence["Persistence"]
  node_candidate_repo["Candidate repository<br/>[Candiaterepo.java]"]
  node_company_repo["Company repository<br/>[Companyrepo.java]"]
  node_job_repo["Job repository<br/>[Jobrepo.java]"]
  node_skill_repo["Skill repository<br/>[Skillrepo.java]"]
  node_application_repo["Application repository"]
end

node_candidate(("Candidate"))
node_company_actor(("Company"))
node_database[("Relational database")]

node_candidate -->|"sends requests"| node_candidate_api
node_company_actor -->|"sends requests"| node_company_api
node_candidate_api -->|"calls"| node_candidate_service
node_company_api -->|"calls"| node_company_service
node_candidate_service -->|"reads and writes"| node_candidate_repo
node_company_service -->|"reads and writes"| node_company_repo
node_company_service -->|"reads and writes"| node_job_repo
node_company_service -->|"saves skills"| node_skill_repo
node_candidate_repo -->|"persists profiles"| node_database
node_company_repo -->|"persists companies"| node_database
node_job_repo -->|"persists jobs"| node_database
node_skill_repo -->|"persists skills"| node_database
node_application_repo -->|"persists applications"| node_database

click node_candidate_api "https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/Controllor/CandiateContorller.java"
click node_company_api "https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/Controllor/CompanyContorllor.java"
click node_error_handler "https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/Controllor/GlobalExectionHandler.java"
click node_candidate_service "https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/service/CandiateService.java"
click node_company_service "https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/service/CompanyService.java"
click node_candidate_model "https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/Entity/Candiate.java"
click node_company_model "https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/Entity/Company.java"
click node_job_model "https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/Entity/Job.java"
click node_application_model "https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/Entity/Application.java"
click node_candidate_repo "https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/Repository/Candiaterepo.java"
click node_company_repo "https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/Repository/Companyrepo.java"
click node_job_repo "https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/Repository/Jobrepo.java"
click node_skill_repo "https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/Repository/Skillrepo.java"
click node_application_repo "https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/Repository/Applicationrepo.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_candidate_api,node_company_api,node_error_handler toneBlue
class node_candidate_service,node_company_service,node_database toneAmber
class node_candidate_model,node_company_model,node_job_model,node_application_model toneMint
class node_candidate_repo,node_company_repo,node_job_repo,node_skill_repo,node_application_repo toneRose
class node_candidate,node_company_actor toneIndigo
```

## Components

### REST API

- [Candidate endpoints](https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/Controllor/CandiateContorller.java): `JobPortal/src/main/java/com/alpha/JobPortal/Controllor/CandiateContorller.java`
- [Company endpoints](https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/Controllor/CompanyContorllor.java): `JobPortal/src/main/java/com/alpha/JobPortal/Controllor/CompanyContorllor.java`
- [Error responses](https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/Controllor/GlobalExectionHandler.java): `JobPortal/src/main/java/com/alpha/JobPortal/Controllor/GlobalExectionHandler.java`

### Business Services

- [Candidate service](https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/service/CandiateService.java): `JobPortal/src/main/java/com/alpha/JobPortal/service/CandiateService.java`
- [Company and jobs](https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/service/CompanyService.java): `JobPortal/src/main/java/com/alpha/JobPortal/service/CompanyService.java`

### Portal Domain

- [Candidate profile](https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/Entity/Candiate.java): `JobPortal/src/main/java/com/alpha/JobPortal/Entity/Candiate.java`
- [Company](https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/Entity/Company.java): `JobPortal/src/main/java/com/alpha/JobPortal/Entity/Company.java`
- [Job posting](https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/Entity/Job.java): `JobPortal/src/main/java/com/alpha/JobPortal/Entity/Job.java`
- [Job application](https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/Entity/Application.java): `JobPortal/src/main/java/com/alpha/JobPortal/Entity/Application.java`

### Persistence

- [Candidate repository](https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/Repository/Candiaterepo.java): `JobPortal/src/main/java/com/alpha/JobPortal/Repository/Candiaterepo.java`
- [Company repository](https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/Repository/Companyrepo.java): `JobPortal/src/main/java/com/alpha/JobPortal/Repository/Companyrepo.java`
- [Job repository](https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/Repository/Jobrepo.java): `JobPortal/src/main/java/com/alpha/JobPortal/Repository/Jobrepo.java`
- [Skill repository](https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/Repository/Skillrepo.java): `JobPortal/src/main/java/com/alpha/JobPortal/Repository/Skillrepo.java`
- [Application repository](https://github.com/nani517/job-protial/blob/main/JobPortal/src/main/java/com/alpha/JobPortal/Repository/Applicationrepo.java): `JobPortal/src/main/java/com/alpha/JobPortal/Repository/Applicationrepo.java`

### Other components

- **Candidate**
- **Company**
- **Relational database**

## Connections

- Candidate → Candidate endpoints: sends requests
- Company → Company endpoints: sends requests
- Candidate endpoints → Candidate service: calls
- Company endpoints → Company and jobs: calls
- Candidate service → Candidate repository: reads and writes
- Company and jobs → Company repository: reads and writes
- Company and jobs → Job repository: reads and writes
- Company and jobs → Skill repository: saves skills
- Candidate repository → Relational database: persists profiles
- Company repository → Relational database: persists companies
- Job repository → Relational database: persists jobs
- Skill repository → Relational database: persists skills
- Application repository → Relational database: persists applications
