# clayton-ramalho-silva/painelasppe architecture

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

- Interactive diagram: https://gitdiagram.com/clayton-ramalho-silva/painelasppe
- Repository: https://github.com/clayton-ramalho-silva/painelasppe

## Overview

This is a Laravel recruitment-management application: recruiters and administrators manage companies and vacancies, candidate résumés, interviews, and selection outcomes, with dashboards, imports, reports, and exports. The central domain stages are résumé intake, interview assessment, vacancy association, and candidate selection. The source excerpts show controller use of validation, services, and Eloquent models, but do not expose the web route mappings, so the initiating-user-to-controller dispatch is left unasserted. Several secondary branches are represented by their exact source directories because their implementations were not sampled.

Main entry points: [`app/Models/Resume.php`](https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Models/Resume.php) (Résumé records), [`app/Models/Job.php`](https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Models/Job.php) (Vacancy records), [`app/Http/Controllers/ResumeController.php`](https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Http/Controllers/ResumeController.php) (Résumé management), [`app/Http/Controllers/InterviewController.php`](https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Http/Controllers/InterviewController.php) (Interview workflow)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Application entry"]
  node_httpentry["HTTP entry<br/>[index.php]"]
  node_httpkernel["HTTP kernel<br/>[Kernel.php]"]
  node_routing["Route registration"]
end

subgraph group_talent["Candidate pipeline"]
  node_resumeui["Résumé management"]
  node_resumevalidation["Résumé validation"]
  node_resumeupdatevalidation["Résumé update validation"]
  node_resumeimports["Résumé imports"]
  node_resumeservice["Résumé service<br/>[ResumeService.php]"]
  node_interviews["Interview workflow"]
  node_interviewvalidation["Interview validation"]
  node_selections["Candidate selections"]
end

subgraph group_opportunities["Jobs and companies"]
  node_jobcontroller["Vacancy management<br/>[JobController.php]"]
  node_companycontroller["Company management"]
end

subgraph group_operations["Insights and data exchange"]
  node_dashboard["Dashboard"]
  node_reports["Reports"]
  node_exports["Export handling"]
  node_exportjob["Export generation"]
  node_imports["Other imports"]
end

subgraph group_domain["Domain and support"]
  node_resumemodel["Résumé records<br/>[Resume.php]"]
  node_interviewmodel["Interview records<br/>[Interview.php]"]
  node_selectionmodel["Selection records<br/>[Selection.php]"]
  node_jobmodel["Vacancy records<br/>[Job.php]"]
  node_companymodel["Company records<br/>[Company.php]"]
  node_contactresume["Candidate contact<br/>[ContactResume.php]"]
  node_cidade["City lookup<br/>[CidadeService.php]"]
  node_logs["Activity logging<br/>[LogsActivity.php]"]
  node_users["User accounts<br/>[User.php]"]
end

node_recruiter(("Recruiter / admin"))

node_httpentry -->|"hands request"| node_httpkernel
node_httpkernel -.->|"uses routes"| node_routing
node_routing -.->|"serves web routes"| node_recruiter
node_resumeui -->|"validates create"| node_resumevalidation
node_resumeui -->|"validates update"| node_resumeupdatevalidation
node_resumeui -->|"uses service"| node_resumeservice
node_resumeui -->|"gets cities"| node_cidade
node_resumeui -->|"queries records"| node_resumemodel
node_resumeui -->|"uses contact"| node_contactresume
node_resumeimports -->|"imports records"| node_resumemodel
node_interviews -->|"validates create"| node_interviewvalidation
node_interviews -->|"queries records"| node_interviewmodel
node_interviews -->|"loads vacancies"| node_jobmodel
node_interviews -->|"loads candidates"| node_resumemodel
node_interviews -->|"prepares view data"| node_resumeservice
node_selections -->|"uses vacancy"| node_jobmodel
node_selections -->|"uses candidate"| node_resumemodel
node_selections -->|"uses selection"| node_selectionmodel
node_resumeservice -->|"updates details"| node_resumemodel
node_resumeservice -->|"associates vacancy"| node_jobmodel
node_resumemodel -->|"has contact"| node_contactresume
node_resumemodel -->|"has interview"| node_interviewmodel
node_resumemodel -->|"has selections"| node_selectionmodel
node_resumemodel -->|"associates vacancies"| node_jobmodel
node_interviewmodel -->|"belongs to candidate"| node_resumemodel
node_interviewmodel -->|"belongs to vacancy"| node_jobmodel
node_selectionmodel -->|"belongs to vacancy"| node_jobmodel
node_selectionmodel -->|"belongs to candidate"| node_resumemodel
node_jobmodel -->|"belongs to company"| node_companymodel
node_companymodel -->|"relates vacancies"| node_jobmodel
node_cidade -->|"reads contacts"| node_contactresume
node_jobcontroller -.->|"manages vacancies"| node_jobmodel
node_companycontroller -.->|"manages companies"| node_companymodel
node_dashboard -->|"queries metrics"| node_jobmodel
node_dashboard -->|"queries metrics"| node_resumemodel
node_dashboard -->|"queries metrics"| node_interviewmodel
node_dashboard -->|"queries metrics"| node_companymodel
node_dashboard -->|"queries metrics"| node_users
node_logs -.->|"records actions"| node_recruiter
node_exports -.->|"dispatches generation"| node_exportjob

click node_httpentry "https://github.com/clayton-ramalho-silva/painelasppe/blob/main/public/index.php"
click node_httpkernel "https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Http/Kernel.php"
click node_routing "https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Providers/RouteServiceProvider.php"
click node_resumeui "https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Http/Controllers/ResumeController.php"
click node_resumevalidation "https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Http/Requests/Resume/StoreResumeRequest.php"
click node_resumeupdatevalidation "https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Http/Requests/Resume/UpdateResumeRequest.php"
click node_resumeimports "https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Http/Controllers/ResumeImportController.php"
click node_resumeservice "https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Services/ResumeService.php"
click node_interviews "https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Http/Controllers/InterviewController.php"
click node_interviewvalidation "https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Http/Requests/Interview/StoreInterviewRequest.php"
click node_selections "https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Http/Controllers/SelectionController.php"
click node_resumemodel "https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Models/Resume.php"
click node_interviewmodel "https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Models/Interview.php"
click node_selectionmodel "https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Models/Selection.php"
click node_jobmodel "https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Models/Job.php"
click node_companymodel "https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Models/Company.php"
click node_contactresume "https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Models/ContactResume.php"
click node_cidade "https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Services/CidadeService.php"
click node_jobcontroller "https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Http/Controllers/JobController.php"
click node_companycontroller "https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Http/Controllers/CompanyController.php"
click node_dashboard "https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Services/DashboardService.php"
click node_reports "https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Http/Controllers/ReportController.php"
click node_exports "https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Http/Controllers/ExportController.php"
click node_exportjob "https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Jobs/GenerateExportJob.php"
click node_imports "https://github.com/clayton-ramalho-silva/painelasppe/tree/main/app/Imports"
click node_logs "https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Traits/LogsActivity.php"
click node_users "https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Models/User.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_httpentry,node_httpkernel,node_routing toneBlue
class node_resumeui,node_resumevalidation,node_resumeupdatevalidation,node_resumeimports,node_resumeservice,node_interviews,node_interviewvalidation,node_selections toneAmber
class node_jobcontroller,node_companycontroller toneMint
class node_dashboard,node_reports,node_exports,node_exportjob,node_imports toneRose
class node_resumemodel,node_interviewmodel,node_selectionmodel,node_jobmodel,node_companymodel,node_contactresume,node_cidade,node_logs,node_users,node_recruiter toneIndigo
```

## Components

### Application entry

- [HTTP entry](https://github.com/clayton-ramalho-silva/painelasppe/blob/main/public/index.php): `public/index.php`
- [HTTP kernel](https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Http/Kernel.php): `app/Http/Kernel.php`
- [Route registration](https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Providers/RouteServiceProvider.php): `app/Providers/RouteServiceProvider.php`

### Candidate pipeline

- [Résumé management](https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Http/Controllers/ResumeController.php): `app/Http/Controllers/ResumeController.php`
- [Résumé validation](https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Http/Requests/Resume/StoreResumeRequest.php): `app/Http/Requests/Resume/StoreResumeRequest.php`
- [Résumé update validation](https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Http/Requests/Resume/UpdateResumeRequest.php): `app/Http/Requests/Resume/UpdateResumeRequest.php`
- [Résumé imports](https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Http/Controllers/ResumeImportController.php): `app/Http/Controllers/ResumeImportController.php`
- [Résumé service](https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Services/ResumeService.php): `app/Services/ResumeService.php`
- [Interview workflow](https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Http/Controllers/InterviewController.php): `app/Http/Controllers/InterviewController.php`
- [Interview validation](https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Http/Requests/Interview/StoreInterviewRequest.php): `app/Http/Requests/Interview/StoreInterviewRequest.php`
- [Candidate selections](https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Http/Controllers/SelectionController.php): `app/Http/Controllers/SelectionController.php`

### Jobs and companies

- [Vacancy management](https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Http/Controllers/JobController.php): `app/Http/Controllers/JobController.php`
- [Company management](https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Http/Controllers/CompanyController.php): `app/Http/Controllers/CompanyController.php`

### Insights and data exchange

- [Dashboard](https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Services/DashboardService.php): `app/Services/DashboardService.php`
- [Reports](https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Http/Controllers/ReportController.php): `app/Http/Controllers/ReportController.php`
- [Export handling](https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Http/Controllers/ExportController.php): `app/Http/Controllers/ExportController.php`
- [Export generation](https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Jobs/GenerateExportJob.php): `app/Jobs/GenerateExportJob.php`
- [Other imports](https://github.com/clayton-ramalho-silva/painelasppe/tree/main/app/Imports): `app/Imports`

### Domain and support

- [Résumé records](https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Models/Resume.php): `app/Models/Resume.php`
- [Interview records](https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Models/Interview.php): `app/Models/Interview.php`
- [Selection records](https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Models/Selection.php): `app/Models/Selection.php`
- [Vacancy records](https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Models/Job.php): `app/Models/Job.php`
- [Company records](https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Models/Company.php): `app/Models/Company.php`
- [Candidate contact](https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Models/ContactResume.php): `app/Models/ContactResume.php`
- [City lookup](https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Services/CidadeService.php): `app/Services/CidadeService.php`
- [Activity logging](https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Traits/LogsActivity.php): `app/Traits/LogsActivity.php`
- [User accounts](https://github.com/clayton-ramalho-silva/painelasppe/blob/main/app/Models/User.php): `app/Models/User.php`

### Other components

- **Recruiter / admin**

## Connections

- HTTP entry → HTTP kernel: hands request (evidence: `public/index.php`)
- HTTP kernel → Route registration: uses routes
- Route registration → Recruiter / admin: serves web routes
- Résumé management → Résumé validation: validates create (evidence: `app/Http/Controllers/ResumeController.php`)
- Résumé management → Résumé update validation: validates update (evidence: `app/Http/Controllers/ResumeController.php`)
- Résumé management → Résumé service: uses service (evidence: `app/Http/Controllers/ResumeController.php`)
- Résumé management → City lookup: gets cities (evidence: `app/Http/Controllers/ResumeController.php`)
- Résumé management → Résumé records: queries records (evidence: `app/Http/Controllers/ResumeController.php`)
- Résumé management → Candidate contact: uses contact (evidence: `app/Http/Controllers/ResumeController.php`)
- Résumé imports → Résumé records: imports records (evidence: `app/Http/Controllers/ResumeImportController.php`)
- Interview workflow → Interview validation: validates create (evidence: `app/Http/Controllers/InterviewController.php`)
- Interview workflow → Interview records: queries records (evidence: `app/Http/Controllers/InterviewController.php`)
- Interview workflow → Vacancy records: loads vacancies (evidence: `app/Http/Controllers/InterviewController.php`)
- Interview workflow → Résumé records: loads candidates (evidence: `app/Http/Controllers/InterviewController.php`)
- Interview workflow → Résumé service: prepares view data (evidence: `app/Http/Controllers/InterviewController.php`)
- Candidate selections → Vacancy records: uses vacancy (evidence: `app/Http/Controllers/SelectionController.php`)
- Candidate selections → Résumé records: uses candidate (evidence: `app/Http/Controllers/SelectionController.php`)
- Candidate selections → Selection records: uses selection (evidence: `app/Http/Controllers/SelectionController.php`)
- Résumé service → Résumé records: updates details (evidence: `app/Services/ResumeService.php`)
- Résumé service → Vacancy records: associates vacancy (evidence: `app/Services/ResumeService.php`)
- Résumé records → Candidate contact: has contact (evidence: `app/Models/Resume.php`)
- Résumé records → Interview records: has interview (evidence: `app/Models/Resume.php`)
- Résumé records → Selection records: has selections (evidence: `app/Models/Resume.php`)
- Résumé records → Vacancy records: associates vacancies (evidence: `app/Models/Resume.php`)
- Interview records → Résumé records: belongs to candidate (evidence: `app/Models/Interview.php`)
- Interview records → Vacancy records: belongs to vacancy (evidence: `app/Models/Interview.php`)
- Selection records → Vacancy records: belongs to vacancy (evidence: `app/Models/Selection.php`)
- Selection records → Résumé records: belongs to candidate (evidence: `app/Models/Selection.php`)
- Vacancy records → Company records: belongs to company (evidence: `app/Models/Job.php`)
- Company records → Vacancy records: relates vacancies (evidence: `app/Models/Company.php`)
- City lookup → Candidate contact: reads contacts (evidence: `app/Services/CidadeService.php`)
- Vacancy management → Vacancy records: manages vacancies
- Company management → Company records: manages companies
- Dashboard → Vacancy records: queries metrics (evidence: `app/Services/DashboardService.php`)
- Dashboard → Résumé records: queries metrics (evidence: `app/Services/DashboardService.php`)
- Dashboard → Interview records: queries metrics (evidence: `app/Services/DashboardService.php`)
- Dashboard → Company records: queries metrics (evidence: `app/Services/DashboardService.php`)
- Dashboard → User accounts: queries metrics (evidence: `app/Services/DashboardService.php`)
- Activity logging → Recruiter / admin: records actions
- Export handling → Export generation: dispatches generation
