# brizuu/jobforge architecture

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

## Overview

JobForge is a REST API for discovering and managing employment, internships, training, and courses, with account authentication and applicant profiles. A typical user browses an opportunity, applies, and manages applications; employers publish offers and review applicants. Course creators publish section-based courses, while learners track progress. The sampled code confirms controller-to-service calls for jobs, courses, and CVs, and service persistence through Entity Framework. Other major product areas are represented from the README and file tree; their internal wiring is not inferred where source excerpts are absent.

Main entry points: [`JobForge/Program.cs`](https://github.com/brizuu/jobforge/blob/master/JobForge/Program.cs) (REST API), [`JobForge/Data/AppDbContext.cs`](https://github.com/brizuu/jobforge/blob/master/JobForge/Data/AppDbContext.cs) (EF Core context), [`JobForge/Controllers/AuthController.cs`](https://github.com/brizuu/jobforge/blob/master/JobForge/Controllers/AuthController.cs) (Authentication), [`JobForge/Controllers/JobOffersController.cs`](https://github.com/brizuu/jobforge/blob/master/JobForge/Controllers/JobOffersController.cs) (Job offers API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Identity and access"]
  node_auth["Authentication<br/>[AuthController.cs]"]
  node_email["Email delivery<br/>[AuthService.cs]"]
end

subgraph group_opportunities["Opportunities and applications"]
  node_jobctl["Job offers API"]
  node_jobservice["Job offer logic<br/>[JobOfferService.cs]"]
  node_internship["Internships"]
  node_contract["Employment contracts"]
  node_contractservice["Contract logic<br/>[ContractService.cs]"]
  node_chat["Realtime chat<br/>[ChatHub.cs]"]
  node_chatservice["Chat logic<br/>[ChatService.cs]"]
  node_facility["Public facilities"]
end

subgraph group_learning["Learning and grants"]
  node_grant["Grants<br/>[GrantController.cs]"]
  node_grantservice["Grant logic<br/>[GrantService.cs]"]
  node_coursectl["Courses API"]
  node_courseservice["Course logic<br/>[CourseService.cs]"]
end

subgraph group_profile["Applicant profile"]
  node_cvctl["CV API<br/>[CvController.cs]"]
  node_cvservice["CV and profile logic<br/>[CvService.cs]"]
end

subgraph group_platform["API and persistence"]
  node_api["REST API<br/>[Program.cs]"]
  node_storecontext["EF Core context<br/>[AppDbContext.cs]"]
  node_postgres[("PostgreSQL")]
end

node_user(("User"))

node_user -->|"sends requests"| node_api
node_api -->|"routes auth"| node_auth
node_api -->|"routes jobs"| node_jobctl
node_api -->|"routes internships"| node_internship
node_api -->|"routes grants"| node_grant
node_api -->|"routes contracts"| node_contract
node_api -->|"routes courses"| node_coursectl
node_api -->|"routes CV"| node_cvctl
node_api -->|"maps hub"| node_chat
node_api -->|"configures persistence"| node_storecontext
node_jobctl -->|"calls"| node_jobservice
node_jobservice -->|"reads and writes"| node_storecontext
node_coursectl -->|"calls"| node_courseservice
node_courseservice -->|"reads and writes"| node_storecontext
node_cvctl -->|"calls"| node_cvservice
node_cvservice -->|"reads and writes"| node_storecontext
node_auth -->|"sends verification"| node_email
node_storecontext -->|"uses EF Core"| node_postgres

click node_api "https://github.com/brizuu/jobforge/blob/master/JobForge/Program.cs"
click node_auth "https://github.com/brizuu/jobforge/blob/master/JobForge/Controllers/AuthController.cs"
click node_email "https://github.com/brizuu/jobforge/blob/master/JobForge/Services/AuthService.cs"
click node_jobctl "https://github.com/brizuu/jobforge/blob/master/JobForge/Controllers/JobOffersController.cs"
click node_jobservice "https://github.com/brizuu/jobforge/blob/master/JobForge/Services/JobOfferService.cs"
click node_internship "https://github.com/brizuu/jobforge/blob/master/JobForge/Controllers/InternshipController.cs"
click node_grant "https://github.com/brizuu/jobforge/blob/master/JobForge/Controllers/GrantController.cs"
click node_grantservice "https://github.com/brizuu/jobforge/blob/master/JobForge/Services/GrantService.cs"
click node_contract "https://github.com/brizuu/jobforge/blob/master/JobForge/Controllers/ContractController.cs"
click node_contractservice "https://github.com/brizuu/jobforge/blob/master/JobForge/Services/ContractService.cs"
click node_coursectl "https://github.com/brizuu/jobforge/blob/master/JobForge/Controllers/CoursesController.cs"
click node_courseservice "https://github.com/brizuu/jobforge/blob/master/JobForge/Services/CourseService.cs"
click node_cvctl "https://github.com/brizuu/jobforge/blob/master/JobForge/Controllers/CvController.cs"
click node_cvservice "https://github.com/brizuu/jobforge/blob/master/JobForge/Services/CvService.cs"
click node_chat "https://github.com/brizuu/jobforge/blob/master/JobForge/Hubs/ChatHub.cs"
click node_chatservice "https://github.com/brizuu/jobforge/blob/master/JobForge/Services/ChatService.cs"
click node_facility "https://github.com/brizuu/jobforge/blob/master/JobForge/Controllers/PublicFacilityController.cs"
click node_storecontext "https://github.com/brizuu/jobforge/blob/master/JobForge/Data/AppDbContext.cs"

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_auth,node_email,node_user toneBlue
class node_jobctl,node_jobservice,node_internship,node_contract,node_contractservice,node_chat,node_chatservice,node_facility toneAmber
class node_grant,node_grantservice,node_coursectl,node_courseservice toneMint
class node_cvctl,node_cvservice toneRose
class node_api,node_storecontext,node_postgres toneIndigo
```

## Components

### Identity and access

- [Authentication](https://github.com/brizuu/jobforge/blob/master/JobForge/Controllers/AuthController.cs): `JobForge/Controllers/AuthController.cs`
- [Email delivery](https://github.com/brizuu/jobforge/blob/master/JobForge/Services/AuthService.cs): `JobForge/Services/AuthService.cs`

### Opportunities and applications

- [Job offers API](https://github.com/brizuu/jobforge/blob/master/JobForge/Controllers/JobOffersController.cs): `JobForge/Controllers/JobOffersController.cs`
- [Job offer logic](https://github.com/brizuu/jobforge/blob/master/JobForge/Services/JobOfferService.cs): `JobForge/Services/JobOfferService.cs`
- [Internships](https://github.com/brizuu/jobforge/blob/master/JobForge/Controllers/InternshipController.cs): `JobForge/Controllers/InternshipController.cs`
- [Employment contracts](https://github.com/brizuu/jobforge/blob/master/JobForge/Controllers/ContractController.cs): `JobForge/Controllers/ContractController.cs`
- [Contract logic](https://github.com/brizuu/jobforge/blob/master/JobForge/Services/ContractService.cs): `JobForge/Services/ContractService.cs`
- [Realtime chat](https://github.com/brizuu/jobforge/blob/master/JobForge/Hubs/ChatHub.cs): `JobForge/Hubs/ChatHub.cs`
- [Chat logic](https://github.com/brizuu/jobforge/blob/master/JobForge/Services/ChatService.cs): `JobForge/Services/ChatService.cs`
- [Public facilities](https://github.com/brizuu/jobforge/blob/master/JobForge/Controllers/PublicFacilityController.cs): `JobForge/Controllers/PublicFacilityController.cs`

### Learning and grants

- [Grants](https://github.com/brizuu/jobforge/blob/master/JobForge/Controllers/GrantController.cs): `JobForge/Controllers/GrantController.cs`
- [Grant logic](https://github.com/brizuu/jobforge/blob/master/JobForge/Services/GrantService.cs): `JobForge/Services/GrantService.cs`
- [Courses API](https://github.com/brizuu/jobforge/blob/master/JobForge/Controllers/CoursesController.cs): `JobForge/Controllers/CoursesController.cs`
- [Course logic](https://github.com/brizuu/jobforge/blob/master/JobForge/Services/CourseService.cs): `JobForge/Services/CourseService.cs`

### Applicant profile

- [CV API](https://github.com/brizuu/jobforge/blob/master/JobForge/Controllers/CvController.cs): `JobForge/Controllers/CvController.cs`
- [CV and profile logic](https://github.com/brizuu/jobforge/blob/master/JobForge/Services/CvService.cs): `JobForge/Services/CvService.cs`

### API and persistence

- [REST API](https://github.com/brizuu/jobforge/blob/master/JobForge/Program.cs): `JobForge/Program.cs`
- [EF Core context](https://github.com/brizuu/jobforge/blob/master/JobForge/Data/AppDbContext.cs): `JobForge/Data/AppDbContext.cs`
- **PostgreSQL**

### Other components

- **User**

## Connections

- User → REST API: sends requests
- REST API → Authentication: routes auth
- REST API → Job offers API: routes jobs
- REST API → Internships: routes internships
- REST API → Grants: routes grants
- REST API → Employment contracts: routes contracts
- REST API → Courses API: routes courses
- REST API → CV API: routes CV
- REST API → Realtime chat: maps hub
- REST API → EF Core context: configures persistence
- Job offers API → Job offer logic: calls
- Job offer logic → EF Core context: reads and writes
- Courses API → Course logic: calls
- Course logic → EF Core context: reads and writes
- CV API → CV and profile logic: calls
- CV and profile logic → EF Core context: reads and writes
- Authentication → Email delivery: sends verification
- EF Core context → PostgreSQL: uses EF Core
