# subh-ui/worknest architecture

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

- Interactive diagram: https://gitdiagram.com/subh-ui/worknest
- Repository: https://github.com/subh-ui/worknest

## Overview

WorkNest is a PHP/MySQL recruitment portal. Job seekers register and sign in, browse vacancies, submit applications, and track their progress; HR users register and sign in, post roles, review applicants, and respond. The graph preserves these separate account and hiring stages, plus the shared database setup layer. Links for unsampled pages are limited to relationships documented in the README or listed in the SOURCE INDEX; their page behavior was not inspected.

Main entry points: [`config/database.php`](https://github.com/subh-ui/worknest/blob/main/config/database.php) (Database setup), [`pages/admin-panel.php`](https://github.com/subh-ui/worknest/blob/main/pages/admin-panel.php) (HR dashboard), [`pages/job-listing.php`](https://github.com/subh-ui/worknest/blob/main/pages/job-listing.php) (Job listings), [`pages/applicants.php`](https://github.com/subh-ui/worknest/blob/main/pages/applicants.php) (Applicant review)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Portal entry"]
  node_entrypoint["App entry<br/>[index.php]"]
  node_landing["Portal pages<br/>[index.html]"]
end

subgraph group_candidate["Candidate workflow"]
  node_user_register["Candidate registration<br/>[register.php]"]
  node_user_login["Candidate sign-in<br/>[login.php]"]
  node_user_panel["Candidate dashboard<br/>[user-panel.php]"]
  node_job_board["Job listings<br/>[job-listing.php]"]
  node_apply["Application submission<br/>[apply.php]"]
  node_applied["Application tracking<br/>[applied-jobs.php]"]
  node_user_profile["Candidate profile<br/>[profile.php]"]
  node_user_history["Candidate history"]
end

subgraph group_hr["HR workflow"]
  node_admin_register["HR registration<br/>[admin-register.php]"]
  node_admin_login["HR sign-in<br/>[admin-login.php]"]
  node_admin_panel["HR dashboard<br/>[admin-panel.php]"]
  node_applicants["Applicant review<br/>[applicants.php]"]
  node_admin_history["Processed applications"]
  node_admin_profile["HR profile<br/>[admin-profile.php]"]
end

subgraph group_shared["Shared services"]
  node_database_setup["Database setup<br/>[database.php]"]
  node_worknest_db[("WorkNest data")]
  node_phone_normalizer["Phone normalization<br/>[phone.php]"]
end

node_visitor(("Portal visitor"))

node_visitor -->|"opens"| node_entrypoint
node_entrypoint -->|"initializes"| node_database_setup
node_entrypoint -->|"redirects"| node_landing
node_visitor -->|"browses"| node_landing
node_visitor -->|"registers"| node_user_register
node_visitor -->|"signs in"| node_user_login
node_user_register -->|"connects"| node_database_setup
node_user_register -->|"normalizes"| node_phone_normalizer
node_user_login -->|"connects"| node_database_setup
node_user_login -.->|"continues to"| node_user_panel
node_user_panel -->|"links to"| node_job_board
node_user_panel -->|"links to"| node_applied
node_visitor -->|"browses"| node_job_board
node_job_board -->|"connects"| node_database_setup
node_job_board -->|"applies for role"| node_apply
node_apply -->|"connects"| node_database_setup
node_apply -->|"tracks in"| node_applied
node_applied -->|"connects"| node_database_setup
node_user_profile -->|"connects"| node_database_setup
node_visitor -->|"registers as HR"| node_admin_register
node_visitor -->|"signs in as HR"| node_admin_login
node_admin_register -->|"connects"| node_database_setup
node_admin_register -->|"uses"| node_phone_normalizer
node_admin_login -->|"connects"| node_database_setup
node_admin_login -.->|"continues to"| node_admin_panel
node_admin_panel -->|"connects"| node_database_setup
node_admin_panel -->|"links to"| node_applicants
node_visitor -->|"manages roles"| node_admin_panel
node_admin_panel -->|"publishes roles to"| node_job_board
node_applicants -->|"connects"| node_database_setup
node_applicants -->|"links to"| node_admin_history
node_visitor -->|"reviews and responds"| node_applicants
node_admin_history -->|"connects"| node_database_setup
node_admin_profile -->|"connects"| node_database_setup
node_database_setup -->|"connects and initializes"| node_worknest_db

click node_entrypoint "https://github.com/subh-ui/worknest/blob/main/index.php"
click node_landing "https://github.com/subh-ui/worknest/blob/main/pages/index.html"
click node_user_register "https://github.com/subh-ui/worknest/blob/main/pages/register.php"
click node_user_login "https://github.com/subh-ui/worknest/blob/main/pages/login.php"
click node_user_panel "https://github.com/subh-ui/worknest/blob/main/pages/user-panel.php"
click node_job_board "https://github.com/subh-ui/worknest/blob/main/pages/job-listing.php"
click node_apply "https://github.com/subh-ui/worknest/blob/main/pages/apply.php"
click node_applied "https://github.com/subh-ui/worknest/blob/main/pages/applied-jobs.php"
click node_user_profile "https://github.com/subh-ui/worknest/blob/main/pages/profile.php"
click node_user_history "https://github.com/subh-ui/worknest/blob/main/pages/applicant-history.php"
click node_admin_register "https://github.com/subh-ui/worknest/blob/main/pages/admin-register.php"
click node_admin_login "https://github.com/subh-ui/worknest/blob/main/pages/admin-login.php"
click node_admin_panel "https://github.com/subh-ui/worknest/blob/main/pages/admin-panel.php"
click node_applicants "https://github.com/subh-ui/worknest/blob/main/pages/applicants.php"
click node_admin_history "https://github.com/subh-ui/worknest/blob/main/pages/applicant-history.php"
click node_admin_profile "https://github.com/subh-ui/worknest/blob/main/pages/admin-profile.php"
click node_database_setup "https://github.com/subh-ui/worknest/blob/main/config/database.php"
click node_phone_normalizer "https://github.com/subh-ui/worknest/blob/main/config/phone.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_entrypoint,node_landing toneBlue
class node_user_register,node_user_login,node_user_panel,node_job_board,node_apply,node_applied,node_user_profile,node_user_history toneAmber
class node_admin_register,node_admin_login,node_admin_panel,node_applicants,node_admin_history,node_admin_profile toneMint
class node_database_setup,node_worknest_db,node_phone_normalizer toneRose
class node_visitor toneIndigo
```

## Components

### Portal entry

- [App entry](https://github.com/subh-ui/worknest/blob/main/index.php): `index.php`
- [Portal pages](https://github.com/subh-ui/worknest/blob/main/pages/index.html): `pages/index.html`

### Candidate workflow

- [Candidate registration](https://github.com/subh-ui/worknest/blob/main/pages/register.php): `pages/register.php`
- [Candidate sign-in](https://github.com/subh-ui/worknest/blob/main/pages/login.php): `pages/login.php`
- [Candidate dashboard](https://github.com/subh-ui/worknest/blob/main/pages/user-panel.php): `pages/user-panel.php`
- [Job listings](https://github.com/subh-ui/worknest/blob/main/pages/job-listing.php): `pages/job-listing.php`
- [Application submission](https://github.com/subh-ui/worknest/blob/main/pages/apply.php): `pages/apply.php`
- [Application tracking](https://github.com/subh-ui/worknest/blob/main/pages/applied-jobs.php): `pages/applied-jobs.php`
- [Candidate profile](https://github.com/subh-ui/worknest/blob/main/pages/profile.php): `pages/profile.php`
- [Candidate history](https://github.com/subh-ui/worknest/blob/main/pages/applicant-history.php): `pages/applicant-history.php`

### HR workflow

- [HR registration](https://github.com/subh-ui/worknest/blob/main/pages/admin-register.php): `pages/admin-register.php`
- [HR sign-in](https://github.com/subh-ui/worknest/blob/main/pages/admin-login.php): `pages/admin-login.php`
- [HR dashboard](https://github.com/subh-ui/worknest/blob/main/pages/admin-panel.php): `pages/admin-panel.php`
- [Applicant review](https://github.com/subh-ui/worknest/blob/main/pages/applicants.php): `pages/applicants.php`
- [Processed applications](https://github.com/subh-ui/worknest/blob/main/pages/applicant-history.php): `pages/applicant-history.php`
- [HR profile](https://github.com/subh-ui/worknest/blob/main/pages/admin-profile.php): `pages/admin-profile.php`

### Shared services

- [Database setup](https://github.com/subh-ui/worknest/blob/main/config/database.php): `config/database.php`
- **WorkNest data**
- [Phone normalization](https://github.com/subh-ui/worknest/blob/main/config/phone.php): `config/phone.php`

### Other components

- **Portal visitor**

## Connections

- Portal visitor → App entry: opens (evidence: `README.md`)
- App entry → Database setup: initializes (evidence: `index.php`)
- App entry → Portal pages: redirects (evidence: `index.php`)
- Portal visitor → Portal pages: browses (evidence: `README.md`)
- Portal visitor → Candidate registration: registers (evidence: `README.md`)
- Portal visitor → Candidate sign-in: signs in (evidence: `README.md`)
- Candidate registration → Database setup: connects (evidence: `pages/register.php`)
- Candidate registration → Phone normalization: normalizes (evidence: `pages/register.php`)
- Candidate sign-in → Database setup: connects (evidence: `pages/login.php`)
- Candidate sign-in → Candidate dashboard: continues to (evidence: `README.md`)
- Candidate dashboard → Job listings: links to (evidence: `pages/user-panel.php`)
- Candidate dashboard → Application tracking: links to (evidence: `pages/user-panel.php`)
- Portal visitor → Job listings: browses (evidence: `README.md`)
- Job listings → Database setup: connects (evidence: `pages/job-listing.php`)
- Job listings → Application submission: applies for role (evidence: `README.md`)
- Application submission → Database setup: connects (evidence: `pages/apply.php`)
- Application submission → Application tracking: tracks in (evidence: `README.md`)
- Application tracking → Database setup: connects (evidence: `pages/applied-jobs.php`)
- Candidate profile → Database setup: connects (evidence: `pages/profile.php`)
- Portal visitor → HR registration: registers as HR (evidence: `README.md`)
- Portal visitor → HR sign-in: signs in as HR (evidence: `README.md`)
- HR registration → Database setup: connects (evidence: `pages/admin-register.php`)
- HR registration → Phone normalization: uses (evidence: `pages/admin-register.php`)
- HR sign-in → Database setup: connects (evidence: `pages/admin-login.php`)
- HR sign-in → HR dashboard: continues to (evidence: `README.md`)
- HR dashboard → Database setup: connects (evidence: `pages/admin-panel.php`)
- HR dashboard → Applicant review: links to (evidence: `pages/admin-panel.php`)
- Portal visitor → HR dashboard: manages roles (evidence: `README.md`)
- HR dashboard → Job listings: publishes roles to (evidence: `pages/admin-panel.php`)
- Applicant review → Database setup: connects (evidence: `pages/applicants.php`)
- Applicant review → Processed applications: links to (evidence: `pages/applicants.php`)
- Portal visitor → Applicant review: reviews and responds (evidence: `README.md`)
- Processed applications → Database setup: connects (evidence: `pages/applicant-history.php`)
- HR profile → Database setup: connects (evidence: `pages/admin-profile.php`)
- Database setup → WorkNest data: connects and initializes (evidence: `config/database.php`)
