# venturacarlos1007/sistemamanejodecv architecture

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

- Interactive diagram: https://gitdiagram.com/venturacarlos1007/sistemamanejodecv
- Repository: https://github.com/venturacarlos1007/sistemamanejodecv

## Overview

#### Purpose and solution shape
This is a .NET/WinForms employee/candidate management solution (`EmployeeManagementSystem.sln`) with two desktop UI projects, a shared domain-model project, repositories, and a SQL service layer. The newer/structured application appears centered on candidate records and related HR data.

#### Executable entry points
Two WinForms executables have independent startup paths:
- `EmployeeManagementSystem/Program.cs` starts the `EmployeeManagementSystem` UI, with forms including `Dashboard`, `MainForm`, employee creation, login, and registration.
- `EmployeeManagementSystemAPP/Program.cs` starts a separate candidate-oriented UI, likely using `frmLogin`, `frmRegistercs`, and `frmCandidatos`.
- Shared non-UI projects are `Models/Models.csproj`, `Repository/Repository.csproj`, and `Services/Services.csproj`.

#### Desktop presentation layer
The UI is event-driven WinForms, with each screen split between behavior code and designer-generated layout/resources:
- Employee-oriented screens: `EmployeeManagementSystem/Dashboard.cs`, `EmployeeManagementSystem/AddEmployee.cs`, `EmployeeManagementSystem/MainForm.cs`.
- Candidate-oriented screens: `EmployeeManagementSystemAPP/frmLogin.cs`, `EmployeeManagementSystemAPP/frmRegistercs.cs`, `EmployeeManagementSystemAPP/frmCandidatos.cs`.
- Assets are embedded/local rather than served remotely: `EmployeeManagementSystem/Assets`, `EmployeeManagementSystemAPP/IMG`, `EmployeeManagementSystemAPP/images`.

#### Domain model boundary
`Models` defines the HR/candidate data contract used across UI, repositories, and persistence:
- Primary entity: `Models/Candidato.cs`.
- Organizational and capability entities: `Models/Departamentos.cs`, `Models/Competencias.cs`, `Models/Habilidades.cs`.
- Candidate-profile history/details: `Models/ExperienciaProfesional.cs`, `Models/FormacionAcademica.cs`, `Models/Referencias.cs`.
- Classification/supporting entities include `Models/Dominios.cs`.

#### Repository persistence boundary
Repositories isolate entity-specific data operations from forms and domain objects:
- Shared repository abstraction/base: `Repository/GeneralRepository.cs`.
- Candidate persistence: `Repository/CandidatoRepository.cs`.
- Related-record persistence: `Repository/CompetenciaRepository.cs`, `Repository/ExperienciaRepository.cs`, `Repository/FormacionAcademicaRepository.cs`.
- Reference/lookup persistence: `Repository/DepartamentoRepository.cs`, `Repository/DominioRepository.cs`, `Repository/HabilidadesRepository.cs`, `Repository/ReferenciaRepository.cs`.

The expected control flow is WinForms events → model construction/validation → entity repository operations → SQL service; repositories return model objects or operation results to the forms.

#### SQL infrastructure
`Services/SqlService.cs` is the central database-access boundary. It is the material integration point for SQL connectivity and commands, while `Repository` translates application-level entity operations into that service’s persistence calls. Connection configuration is likely application-local through `EmployeeManagementSystem/App.config`; no cloud, HTTP API, or message-bus integration is represented in the tree.

#### Architectural considerations
The solution contains overlapping UI applications: `EmployeeManagementSystem` uses employee-named forms and an `EmployeeData.cs` type, while `EmployeeManagementSystemAPP` aligns with the shared candidate/repository/service layers. Treat these as separate presentation hosts until project references and form implementations establish otherwise. Preserve the Models → Repository → Services dependency direction; forms should not become a second SQL-access path.

Main entry points: [`EmployeeManagementSystemAPP/frmCandidatos.cs`](https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/EmployeeManagementSystemAPP/frmCandidatos.cs) (Candidate management), [`Services/SqlService.cs`](https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/Services/SqlService.cs) (SQL service), [`EmployeeManagementSystem/MainForm.cs`](https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/EmployeeManagementSystem/MainForm.cs) (Employee forms), [`Repository/CandidatoRepository.cs`](https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/Repository/CandidatoRepository.cs) (Candidate repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_employee_ui["Employee WinForms"]
  node_employee_app["Employee UI host<br/>WinForms executable<br/>[Program.cs]"]
  node_employee_forms["Employee forms<br/>WinForms screens<br/>[MainForm.cs]"]
  node_employee_dashboard["Dashboard and create employee<br/>WinForms screens<br/>[Dashboard.cs]"]
  node_employee_assets["Local assets<br/>embedded assets"]
end

subgraph group_candidate_ui["Candidate WinForms"]
  node_candidate_app["Candidate UI host<br/>WinForms executable<br/>[Program.cs]"]
  node_candidate_auth["Login and registration<br/>WinForms screens<br/>[frmLogin.cs]"]
  node_candidate_forms["Candidate management<br/>WinForms screen<br/>[frmCandidatos.cs]"]
  node_candidate_assets["Local images<br/>embedded assets"]
end

subgraph group_domain["Shared Domain"]
  node_candidate_model["Candidate<br/>domain entity<br/>[Candidato.cs]"]
  node_profile_models["Profile history<br/>domain entities"]
  node_organization_models["Organization and skills<br/>domain entities<br/>[Departamentos.cs]"]
end

subgraph group_persistence["Persistence"]
  node_repository_base["Repository base<br/>repository abstraction"]
  node_candidate_repository["Candidate repository<br/>entity repository"]
  node_profile_repositories["Profile repositories<br/>entity repositories"]
  node_lookup_repositories["Lookup repositories<br/>entity repositories"]
  node_sql_service[("SQL service<br/>database access service<br/>[SqlService.cs]")]
end

node_database[("SQL database<br/>relational database")]

node_employee_app -->|"starts"| node_employee_forms
node_employee_forms -->|"navigates"| node_employee_dashboard
node_employee_forms -.->|"uses"| node_employee_assets
node_candidate_app -->|"starts"| node_candidate_auth
node_candidate_auth -->|"authenticates then opens"| node_candidate_forms
node_candidate_forms -.->|"uses"| node_candidate_assets
node_candidate_forms -->|"constructs and validates"| node_candidate_model
node_candidate_forms -->|"edits"| node_profile_models
node_candidate_forms -->|"selects"| node_organization_models
node_candidate_forms -->|"persists candidates"| node_candidate_repository
node_candidate_forms -->|"persists profile records"| node_profile_repositories
node_candidate_forms -->|"loads lookups"| node_lookup_repositories
node_candidate_repository -->|"uses"| node_repository_base
node_profile_repositories -->|"uses"| node_repository_base
node_lookup_repositories -->|"uses"| node_repository_base
node_candidate_repository -->|"executes persistence"| node_sql_service
node_profile_repositories -->|"executes persistence"| node_sql_service
node_lookup_repositories -->|"executes queries"| node_sql_service
node_sql_service -->|"connects and commands"| node_database

click node_employee_app "https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/EmployeeManagementSystem/Program.cs"
click node_employee_forms "https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/EmployeeManagementSystem/MainForm.cs"
click node_employee_dashboard "https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/EmployeeManagementSystem/Dashboard.cs"
click node_employee_assets "https://github.com/venturacarlos1007/sistemamanejodecv/tree/master/EmployeeManagementSystem/Assets"
click node_candidate_app "https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/EmployeeManagementSystemAPP/Program.cs"
click node_candidate_auth "https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/EmployeeManagementSystemAPP/frmLogin.cs"
click node_candidate_forms "https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/EmployeeManagementSystemAPP/frmCandidatos.cs"
click node_candidate_assets "https://github.com/venturacarlos1007/sistemamanejodecv/tree/master/EmployeeManagementSystemAPP/IMG"
click node_candidate_model "https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/Models/Candidato.cs"
click node_profile_models "https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/Models/ExperienciaProfesional.cs"
click node_organization_models "https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/Models/Departamentos.cs"
click node_repository_base "https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/Repository/GeneralRepository.cs"
click node_candidate_repository "https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/Repository/CandidatoRepository.cs"
click node_profile_repositories "https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/Repository/ExperienciaRepository.cs"
click node_lookup_repositories "https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/Repository/DepartamentoRepository.cs"
click node_sql_service "https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/Services/SqlService.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_employee_app,node_employee_forms,node_employee_dashboard,node_employee_assets toneBlue
class node_candidate_app,node_candidate_auth,node_candidate_forms,node_candidate_assets toneAmber
class node_candidate_model,node_profile_models,node_organization_models toneMint
class node_repository_base,node_candidate_repository,node_profile_repositories,node_lookup_repositories,node_sql_service toneRose
class node_database toneNeutral
```

## Components

### Employee WinForms

- [Employee UI host](https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/EmployeeManagementSystem/Program.cs): WinForms executable · Independent employee-oriented desktop application. · `EmployeeManagementSystem/Program.cs`
- [Employee forms](https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/EmployeeManagementSystem/MainForm.cs): WinForms screens · `EmployeeManagementSystem/MainForm.cs`
- [Dashboard and create employee](https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/EmployeeManagementSystem/Dashboard.cs): WinForms screens · `EmployeeManagementSystem/Dashboard.cs`
- [Local assets](https://github.com/venturacarlos1007/sistemamanejodecv/tree/master/EmployeeManagementSystem/Assets): embedded assets · `EmployeeManagementSystem/Assets`

### Candidate WinForms

- [Candidate UI host](https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/EmployeeManagementSystemAPP/Program.cs): WinForms executable · Independent candidate-oriented desktop application. · `EmployeeManagementSystemAPP/Program.cs`
- [Login and registration](https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/EmployeeManagementSystemAPP/frmLogin.cs): WinForms screens · `EmployeeManagementSystemAPP/frmLogin.cs`
- [Candidate management](https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/EmployeeManagementSystemAPP/frmCandidatos.cs): WinForms screen · `EmployeeManagementSystemAPP/frmCandidatos.cs`
- [Local images](https://github.com/venturacarlos1007/sistemamanejodecv/tree/master/EmployeeManagementSystemAPP/IMG): embedded assets · `EmployeeManagementSystemAPP/IMG`

### Shared Domain

- [Candidate](https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/Models/Candidato.cs): domain entity · Primary HR candidate record. · `Models/Candidato.cs`
- [Profile history](https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/Models/ExperienciaProfesional.cs): domain entities · Experience, education, and references. · `Models/ExperienciaProfesional.cs`
- [Organization and skills](https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/Models/Departamentos.cs): domain entities · Departments, competencies, skills, and domains. · `Models/Departamentos.cs`

### Persistence

- [Repository base](https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/Repository/GeneralRepository.cs): repository abstraction · `Repository/GeneralRepository.cs`
- [Candidate repository](https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/Repository/CandidatoRepository.cs): entity repository · `Repository/CandidatoRepository.cs`
- [Profile repositories](https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/Repository/ExperienciaRepository.cs): entity repositories · Experience, education, and reference persistence. · `Repository/ExperienciaRepository.cs`
- [Lookup repositories](https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/Repository/DepartamentoRepository.cs): entity repositories · Department, domain, skills, and competency persistence. · `Repository/DepartamentoRepository.cs`
- [SQL service](https://github.com/venturacarlos1007/sistemamanejodecv/blob/master/Services/SqlService.cs): database access service · Central SQL command and connectivity boundary. · `Services/SqlService.cs`

### Other components

- **SQL database**: relational database

## Connections

- Employee UI host → Employee forms: starts
- Employee forms → Dashboard and create employee: navigates
- Employee forms → Local assets: uses
- Candidate UI host → Login and registration: starts
- Login and registration → Candidate management: authenticates then opens
- Candidate management → Local images: uses
- Candidate management → Candidate: constructs and validates
- Candidate management → Profile history: edits
- Candidate management → Organization and skills: selects
- Candidate management → Candidate repository: persists candidates
- Candidate management → Profile repositories: persists profile records
- Candidate management → Lookup repositories: loads lookups
- Candidate repository → Repository base: uses
- Profile repositories → Repository base: uses
- Lookup repositories → Repository base: uses
- Candidate repository → SQL service: executes persistence
- Profile repositories → SQL service: executes persistence
- Lookup repositories → SQL service: executes queries
- SQL service → SQL database: connects and commands
