# brojalloo/sen-recrutement architecture

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

- Interactive diagram: https://gitdiagram.com/brojalloo/sen-recrutement
- Repository: https://github.com/brojalloo/sen-recrutement

## Overview

Sen-Recrutement is a Laravel recruitment site. Recruiters create job listings, administrators approve or reject them, candidates browse approved jobs and apply, and recruiters review applications and notify candidates of decisions. Separate capabilities include account/profile management, role-based administration, and authenticated messaging. The graph follows documented routes and relationships visible in the excerpts or SOURCE INDEX; several controllers and views were not sampled, so uncertain connections are omitted.

Main entry points: [`routes/web.php`](https://github.com/brojalloo/sen-recrutement/blob/main/routes/web.php) (Web routes), [`app/Models/User.php`](https://github.com/brojalloo/sen-recrutement/blob/main/app/Models/User.php) (User accounts), [`app/Models/Job.php`](https://github.com/brojalloo/sen-recrutement/blob/main/app/Models/Job.php) (Job listings), [`app/Http/Controllers/ApplicationController.php`](https://github.com/brojalloo/sen-recrutement/blob/main/app/Http/Controllers/ApplicationController.php) (Submit application)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Accounts and access"]
  node_routes["Web routes<br/>[web.php]"]
  node_auth["Authentication<br/>[AuthController.php]"]
  node_users[("User accounts<br/>[User.php]")]
  node_candidate_profile["Candidate profile"]
  node_recruiter_profile["Recruiter profile"]
  node_role_guard["Role access guard<br/>[RoleMiddleware.php]"]
end

subgraph group_jobs["Job lifecycle"]
  node_job_browsing["Public job browsing<br/>[JobController.php]"]
  node_job_model[("Job listings<br/>[Job.php]")]
  node_recruiter_jobs["Recruiter job management<br/>[JobController.php]"]
  node_admin_jobs["Job approval"]
end

subgraph group_applications["Applications"]
  node_candidate_dashboard["Candidate dashboard"]
  node_apply["Submit application"]
  node_application_model[("Applications<br/>[Application.php]")]
  node_recruiter_dashboard["Recruiter dashboard"]
  node_status_notice["Application status email"]
  node_new_application_notice["New application notice"]
end

subgraph group_communication["Communication and oversight"]
  node_messages["Direct messaging"]
  node_message_model[("Messages<br/>[Message.php]")]
  node_admin["Administration"]
  node_admin_logs[("Admin audit logs<br/>[AdminLog.php]")]
end

node_visitor(("Site visitor"))

node_visitor -->|"requests pages"| node_routes
node_routes -->|"routes auth"| node_auth
node_auth -->|"creates accounts"| node_users
node_routes -->|"guards role routes"| node_role_guard
node_routes -->|"routes job pages"| node_job_browsing
node_job_browsing -->|"queries listings"| node_job_model
node_routes -->|"routes job management"| node_recruiter_jobs
node_recruiter_jobs -->|"creates and updates"| node_job_model
node_routes -->|"routes approvals"| node_admin_jobs
node_admin_jobs -->|"approves listings"| node_job_model
node_admin_jobs -->|"records actions"| node_admin_logs
node_routes -->|"routes dashboard"| node_candidate_dashboard
node_candidate_dashboard -->|"loads visible jobs"| node_job_model
node_routes -->|"routes applications"| node_apply
node_apply -->|"creates application"| node_application_model
node_apply -->|"checks job"| node_job_model
node_apply -->|"notifies recruiter"| node_users
node_apply -->|"sends notice"| node_new_application_notice
node_routes -->|"routes review"| node_recruiter_dashboard
node_recruiter_dashboard -->|"reviews applications"| node_application_model
node_recruiter_dashboard -->|"checks ownership"| node_job_model
node_recruiter_dashboard -->|"notifies decision"| node_status_notice
node_recruiter_dashboard -->|"notifies candidate"| node_users
node_routes -->|"routes candidate profile"| node_candidate_profile
node_candidate_profile -->|"updates profile"| node_users
node_routes -->|"routes recruiter profile"| node_recruiter_profile
node_recruiter_profile -->|"updates profile"| node_users
node_routes -->|"routes messaging"| node_messages
node_messages -->|"reads and writes"| node_message_model
node_messages -->|"finds recipients"| node_users
node_routes -->|"routes administration"| node_admin
node_admin -->|"manages accounts"| node_users
node_admin -->|"counts applications"| node_application_model

click node_routes "https://github.com/brojalloo/sen-recrutement/blob/main/routes/web.php"
click node_auth "https://github.com/brojalloo/sen-recrutement/blob/main/app/Http/Controllers/AuthController.php"
click node_users "https://github.com/brojalloo/sen-recrutement/blob/main/app/Models/User.php"
click node_candidate_profile "https://github.com/brojalloo/sen-recrutement/blob/main/app/Http/Controllers/Candidate/ProfileController.php"
click node_recruiter_profile "https://github.com/brojalloo/sen-recrutement/blob/main/app/Http/Controllers/Recruiter/ProfileController.php"
click node_role_guard "https://github.com/brojalloo/sen-recrutement/blob/main/app/Http/Middleware/RoleMiddleware.php"
click node_job_browsing "https://github.com/brojalloo/sen-recrutement/blob/main/app/Http/Controllers/JobController.php"
click node_job_model "https://github.com/brojalloo/sen-recrutement/blob/main/app/Models/Job.php"
click node_recruiter_jobs "https://github.com/brojalloo/sen-recrutement/blob/main/app/Http/Controllers/Recruiter/JobController.php"
click node_admin_jobs "https://github.com/brojalloo/sen-recrutement/blob/main/app/Http/Controllers/Admin/AdminController.php"
click node_candidate_dashboard "https://github.com/brojalloo/sen-recrutement/blob/main/app/Http/Controllers/Candidate/CandidateController.php"
click node_apply "https://github.com/brojalloo/sen-recrutement/blob/main/app/Http/Controllers/ApplicationController.php"
click node_application_model "https://github.com/brojalloo/sen-recrutement/blob/main/app/Models/Application.php"
click node_recruiter_dashboard "https://github.com/brojalloo/sen-recrutement/blob/main/app/Http/Controllers/Recruiter/RecruiterController.php"
click node_status_notice "https://github.com/brojalloo/sen-recrutement/blob/main/app/Notifications/ApplicationStatusChanged.php"
click node_messages "https://github.com/brojalloo/sen-recrutement/blob/main/app/Http/Controllers/MessagingController.php"
click node_message_model "https://github.com/brojalloo/sen-recrutement/blob/main/app/Models/Message.php"
click node_admin "https://github.com/brojalloo/sen-recrutement/blob/main/app/Http/Controllers/Admin/AdminController.php"
click node_admin_logs "https://github.com/brojalloo/sen-recrutement/blob/main/app/Models/AdminLog.php"
click node_new_application_notice "https://github.com/brojalloo/sen-recrutement/blob/main/app/Notifications/NewApplicationReceived.php"

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_routes,node_auth,node_users,node_candidate_profile,node_recruiter_profile,node_role_guard toneBlue
class node_job_browsing,node_job_model,node_recruiter_jobs,node_admin_jobs toneAmber
class node_candidate_dashboard,node_apply,node_application_model,node_recruiter_dashboard,node_status_notice,node_new_application_notice toneMint
class node_messages,node_message_model,node_admin,node_admin_logs toneRose
class node_visitor toneIndigo
```

## Components

### Accounts and access

- [Web routes](https://github.com/brojalloo/sen-recrutement/blob/main/routes/web.php): `routes/web.php`
- [Authentication](https://github.com/brojalloo/sen-recrutement/blob/main/app/Http/Controllers/AuthController.php): `app/Http/Controllers/AuthController.php`
- [User accounts](https://github.com/brojalloo/sen-recrutement/blob/main/app/Models/User.php): `app/Models/User.php`
- [Candidate profile](https://github.com/brojalloo/sen-recrutement/blob/main/app/Http/Controllers/Candidate/ProfileController.php): `app/Http/Controllers/Candidate/ProfileController.php`
- [Recruiter profile](https://github.com/brojalloo/sen-recrutement/blob/main/app/Http/Controllers/Recruiter/ProfileController.php): `app/Http/Controllers/Recruiter/ProfileController.php`
- [Role access guard](https://github.com/brojalloo/sen-recrutement/blob/main/app/Http/Middleware/RoleMiddleware.php): `app/Http/Middleware/RoleMiddleware.php`

### Job lifecycle

- [Public job browsing](https://github.com/brojalloo/sen-recrutement/blob/main/app/Http/Controllers/JobController.php): `app/Http/Controllers/JobController.php`
- [Job listings](https://github.com/brojalloo/sen-recrutement/blob/main/app/Models/Job.php): `app/Models/Job.php`
- [Recruiter job management](https://github.com/brojalloo/sen-recrutement/blob/main/app/Http/Controllers/Recruiter/JobController.php): `app/Http/Controllers/Recruiter/JobController.php`
- [Job approval](https://github.com/brojalloo/sen-recrutement/blob/main/app/Http/Controllers/Admin/AdminController.php): `app/Http/Controllers/Admin/AdminController.php`

### Applications

- [Candidate dashboard](https://github.com/brojalloo/sen-recrutement/blob/main/app/Http/Controllers/Candidate/CandidateController.php): `app/Http/Controllers/Candidate/CandidateController.php`
- [Submit application](https://github.com/brojalloo/sen-recrutement/blob/main/app/Http/Controllers/ApplicationController.php): `app/Http/Controllers/ApplicationController.php`
- [Applications](https://github.com/brojalloo/sen-recrutement/blob/main/app/Models/Application.php): `app/Models/Application.php`
- [Recruiter dashboard](https://github.com/brojalloo/sen-recrutement/blob/main/app/Http/Controllers/Recruiter/RecruiterController.php): `app/Http/Controllers/Recruiter/RecruiterController.php`
- [Application status email](https://github.com/brojalloo/sen-recrutement/blob/main/app/Notifications/ApplicationStatusChanged.php): `app/Notifications/ApplicationStatusChanged.php`
- [New application notice](https://github.com/brojalloo/sen-recrutement/blob/main/app/Notifications/NewApplicationReceived.php): `app/Notifications/NewApplicationReceived.php`

### Communication and oversight

- [Direct messaging](https://github.com/brojalloo/sen-recrutement/blob/main/app/Http/Controllers/MessagingController.php): `app/Http/Controllers/MessagingController.php`
- [Messages](https://github.com/brojalloo/sen-recrutement/blob/main/app/Models/Message.php): `app/Models/Message.php`
- [Administration](https://github.com/brojalloo/sen-recrutement/blob/main/app/Http/Controllers/Admin/AdminController.php): `app/Http/Controllers/Admin/AdminController.php`
- [Admin audit logs](https://github.com/brojalloo/sen-recrutement/blob/main/app/Models/AdminLog.php): `app/Models/AdminLog.php`

### Other components

- **Site visitor**

## Connections

- Site visitor → Web routes: requests pages (evidence: `routes/web.php`)
- Web routes → Authentication: routes auth (evidence: `routes/web.php`)
- Authentication → User accounts: creates accounts (evidence: `app/Http/Controllers/AuthController.php`)
- Web routes → Role access guard: guards role routes (evidence: `routes/web.php`)
- Web routes → Public job browsing: routes job pages (evidence: `routes/web.php`)
- Public job browsing → Job listings: queries listings (evidence: `app/Http/Controllers/JobController.php`)
- Web routes → Recruiter job management: routes job management (evidence: `routes/web.php`)
- Recruiter job management → Job listings: creates and updates (evidence: `app/Http/Controllers/Recruiter/JobController.php`)
- Web routes → Job approval: routes approvals (evidence: `routes/web.php`)
- Job approval → Job listings: approves listings (evidence: `app/Http/Controllers/Admin/AdminController.php`)
- Job approval → Admin audit logs: records actions (evidence: `app/Http/Controllers/Admin/AdminController.php`)
- Web routes → Candidate dashboard: routes dashboard (evidence: `routes/web.php`)
- Candidate dashboard → Job listings: loads visible jobs (evidence: `app/Http/Controllers/Candidate/CandidateController.php`)
- Web routes → Submit application: routes applications (evidence: `routes/web.php`)
- Submit application → Applications: creates application (evidence: `app/Http/Controllers/ApplicationController.php`)
- Submit application → Job listings: checks job (evidence: `app/Http/Controllers/ApplicationController.php`)
- Submit application → User accounts: notifies recruiter (evidence: `app/Http/Controllers/ApplicationController.php`)
- Submit application → New application notice: sends notice (evidence: `app/Http/Controllers/ApplicationController.php`)
- Web routes → Recruiter dashboard: routes review (evidence: `routes/web.php`)
- Recruiter dashboard → Applications: reviews applications (evidence: `app/Http/Controllers/Recruiter/RecruiterController.php`)
- Recruiter dashboard → Job listings: checks ownership (evidence: `app/Http/Controllers/Recruiter/RecruiterController.php`)
- Recruiter dashboard → Application status email: notifies decision (evidence: `app/Http/Controllers/Recruiter/RecruiterController.php`)
- Recruiter dashboard → User accounts: notifies candidate (evidence: `app/Http/Controllers/Recruiter/RecruiterController.php`)
- Web routes → Candidate profile: routes candidate profile (evidence: `routes/web.php`)
- Candidate profile → User accounts: updates profile (evidence: `app/Http/Controllers/Candidate/ProfileController.php`)
- Web routes → Recruiter profile: routes recruiter profile (evidence: `routes/web.php`)
- Recruiter profile → User accounts: updates profile (evidence: `app/Http/Controllers/Recruiter/ProfileController.php`)
- Web routes → Direct messaging: routes messaging (evidence: `routes/web.php`)
- Direct messaging → Messages: reads and writes (evidence: `app/Http/Controllers/MessagingController.php`)
- Direct messaging → User accounts: finds recipients (evidence: `app/Http/Controllers/MessagingController.php`)
- Web routes → Administration: routes administration (evidence: `routes/web.php`)
- Administration → User accounts: manages accounts (evidence: `app/Http/Controllers/Admin/AdminController.php`)
- Administration → Applications: counts applications (evidence: `app/Http/Controllers/Admin/AdminController.php`)
