# emadalaa2003/dvdl_system_first architecture

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

## Overview

This is a Windows Forms driving-licence administration application, with a separate console presentation project. The primary desktop entry point opens the login screen; the tree shows workflows for people and users, local licence applications and tests, licence operations, and international licences. The sampled business/data code confirms the person-record persistence boundary. Most form and business-layer implementations were not sampled, so their internal calls and transitions are not drawn.

Main entry points: [`DVLDDataAccessLayer/PersonData.cs`](https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVLDDataAccessLayer/PersonData.cs) (Person data access), [`DVDLWinForm-PresentationLayer/Login/frmLoginScrean.cs`](https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVDLWinForm-PresentationLayer/Login/frmLoginScrean.cs) (Login screen), [`DVDLWinForm-PresentationLayer/Program.cs`](https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVDLWinForm-PresentationLayer/Program.cs) (Desktop entry), [`DVLDBusinessLayer/Person.cs`](https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVLDBusinessLayer/Person.cs) (Person business model)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Desktop interface"]
  node_program["Desktop entry<br/>[Program.cs]"]
  node_login["Login screen<br/>[frmLoginScrean.cs]"]
  node_main["Main form<br/>[MinForm.cs]"]
end

subgraph group_licensing["Licensing workflows"]
  node_localapps["Local applications"]
  node_tests["Vision tests<br/>[frmVisionTest.cs]"]
  node_schedule["Test scheduling<br/>[FrmScheduleTest.cs]"]
  node_licenses["License operations"]
  node_renew["Renew or replace"]
  node_detain["Detain or release"]
  node_international["International licences"]
end

subgraph group_admin["Records and administration"]
  node_people["People records<br/>[frmPeopleList.cs]"]
  node_personedit["Person editor"]
  node_users["User management<br/>[frmUsersList.cs]"]
end

subgraph group_core["Business and persistence"]
  node_personmodel["Person business model<br/>[Person.cs]"]
  node_persondata["Person data access<br/>[PersonData.cs]"]
  node_database[("SQL database")]
end

node_operator(("Staff user"))

node_program -->|"runs"| node_login
node_operator -->|"enters credentials"| node_login
node_operator -->|"uses"| node_main
node_operator -->|"manages people"| node_people
node_operator -->|"edits records"| node_personedit
node_operator -->|"manages users"| node_users
node_operator -->|"manages applications"| node_localapps
node_operator -->|"records tests"| node_tests
node_operator -->|"schedules tests"| node_schedule
node_operator -->|"issues licences"| node_licenses
node_operator -->|"renews or replaces"| node_renew
node_operator -->|"manages detention"| node_detain
node_operator -->|"manages international"| node_international
node_personmodel -->|"reads and writes"| node_persondata
node_persondata -->|"queries"| node_database

click node_program "https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVDLWinForm-PresentationLayer/Program.cs"
click node_login "https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVDLWinForm-PresentationLayer/Login/frmLoginScrean.cs"
click node_main "https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVDLWinForm-PresentationLayer/MinForm.cs"
click node_people "https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVDLWinForm-PresentationLayer/People/frmPeopleList.cs"
click node_personedit "https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVDLWinForm-PresentationLayer/People/ctrlAdd-UpdatePerson.cs"
click node_users "https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVDLWinForm-PresentationLayer/User/frmUsersList.cs"
click node_localapps "https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVDLWinForm-PresentationLayer/localDrivingLicenseApplication/frmListLocalDrivingLicenseApplactions.cs"
click node_tests "https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVDLWinForm-PresentationLayer/Take%20Test/VisionTest/frmVisionTest.cs"
click node_schedule "https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVDLWinForm-PresentationLayer/Take%20Test/VisionTest/FrmScheduleTest.cs"
click node_licenses "https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVDLWinForm-PresentationLayer/licence/frmIssueDrivierLicenceForTheFirstTime.cs"
click node_renew "https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVDLWinForm-PresentationLayer/licence/frmRenewLocalDrivingLicense.cs"
click node_detain "https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVDLWinForm-PresentationLayer/licence/DetainReleaseLicenses/frmMangeDetainLicense.cs"
click node_international "https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVDLWinForm-PresentationLayer/InternationalLicenses/frmInterntionalLicesesApplictions.cs"
click node_personmodel "https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVLDBusinessLayer/Person.cs"
click node_persondata "https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVLDDataAccessLayer/PersonData.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_program,node_login,node_main,node_operator toneBlue
class node_localapps,node_tests,node_schedule,node_licenses,node_renew,node_detain,node_international toneAmber
class node_people,node_personedit,node_users toneMint
class node_personmodel,node_persondata,node_database toneRose
```

## Components

### Desktop interface

- [Desktop entry](https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVDLWinForm-PresentationLayer/Program.cs): `DVDLWinForm-PresentationLayer/Program.cs`
- [Login screen](https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVDLWinForm-PresentationLayer/Login/frmLoginScrean.cs): `DVDLWinForm-PresentationLayer/Login/frmLoginScrean.cs`
- [Main form](https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVDLWinForm-PresentationLayer/MinForm.cs): `DVDLWinForm-PresentationLayer/MinForm.cs`

### Licensing workflows

- [Local applications](https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVDLWinForm-PresentationLayer/localDrivingLicenseApplication/frmListLocalDrivingLicenseApplactions.cs): `DVDLWinForm-PresentationLayer/localDrivingLicenseApplication/frmListLocalDrivingLicenseApplactions.cs`
- [Vision tests](https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVDLWinForm-PresentationLayer/Take%20Test/VisionTest/frmVisionTest.cs): `DVDLWinForm-PresentationLayer/Take Test/VisionTest/frmVisionTest.cs`
- [Test scheduling](https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVDLWinForm-PresentationLayer/Take%20Test/VisionTest/FrmScheduleTest.cs): `DVDLWinForm-PresentationLayer/Take Test/VisionTest/FrmScheduleTest.cs`
- [License operations](https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVDLWinForm-PresentationLayer/licence/frmIssueDrivierLicenceForTheFirstTime.cs): `DVDLWinForm-PresentationLayer/licence/frmIssueDrivierLicenceForTheFirstTime.cs`
- [Renew or replace](https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVDLWinForm-PresentationLayer/licence/frmRenewLocalDrivingLicense.cs): `DVDLWinForm-PresentationLayer/licence/frmRenewLocalDrivingLicense.cs`
- [Detain or release](https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVDLWinForm-PresentationLayer/licence/DetainReleaseLicenses/frmMangeDetainLicense.cs): `DVDLWinForm-PresentationLayer/licence/DetainReleaseLicenses/frmMangeDetainLicense.cs`
- [International licences](https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVDLWinForm-PresentationLayer/InternationalLicenses/frmInterntionalLicesesApplictions.cs): `DVDLWinForm-PresentationLayer/InternationalLicenses/frmInterntionalLicesesApplictions.cs`

### Records and administration

- [People records](https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVDLWinForm-PresentationLayer/People/frmPeopleList.cs): `DVDLWinForm-PresentationLayer/People/frmPeopleList.cs`
- [Person editor](https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVDLWinForm-PresentationLayer/People/ctrlAdd-UpdatePerson.cs): `DVDLWinForm-PresentationLayer/People/ctrlAdd-UpdatePerson.cs`
- [User management](https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVDLWinForm-PresentationLayer/User/frmUsersList.cs): `DVDLWinForm-PresentationLayer/User/frmUsersList.cs`

### Business and persistence

- [Person business model](https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVLDBusinessLayer/Person.cs): `DVLDBusinessLayer/Person.cs`
- [Person data access](https://github.com/emadalaa2003/dvdl_system_first/blob/main/DVLDDataAccessLayer/PersonData.cs): `DVLDDataAccessLayer/PersonData.cs`
- **SQL database**

### Other components

- **Staff user**

## Connections

- Desktop entry → Login screen: runs
- Staff user → Login screen: enters credentials
- Staff user → Main form: uses
- Staff user → People records: manages people
- Staff user → Person editor: edits records
- Staff user → User management: manages users
- Staff user → Local applications: manages applications
- Staff user → Vision tests: records tests
- Staff user → Test scheduling: schedules tests
- Staff user → License operations: issues licences
- Staff user → Renew or replace: renews or replaces
- Staff user → Detain or release: manages detention
- Staff user → International licences: manages international
- Person business model → Person data access: reads and writes
- Person data access → SQL database: queries
