# retrac18/emp-management architecture

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

- Interactive diagram: https://gitdiagram.com/retrac18/emp-management
- Repository: https://github.com/retrac18/emp-management

## Overview

This is a browser-based employee-management app with an AngularJS frontend and an Express/MongoDB backend. The main workflow is to browse employee records, then create, view, update, or delete a record; the app also routes to About, Contact, and DTR views. The server handles employee API requests and reads or changes MongoDB records. The route configuration documents the DTR view, but its controller implementation was not sampled, so no DTR data flow is inferred.

Main entry points: [`public/js/app.js`](https://github.com/retrac18/emp-management/blob/master/public/js/app.js) (App routing), [`server.js`](https://github.com/retrac18/emp-management/blob/master/server.js) (Express API), [`public/js/controllers/empController.js`](https://github.com/retrac18/emp-management/blob/master/public/js/controllers/empController.js) (Employee listing), [`public/js/controllers/addEmpController.js`](https://github.com/retrac18/emp-management/blob/master/public/js/controllers/addEmpController.js) (Add employee)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["AngularJS client"]
  node_app["App routing<br/>[app.js]"]
  node_employee_list["Employee listing<br/>[empController.js]"]
  node_employee_add["Add employee"]
  node_employee_profile["Employee profile"]
  node_employee_update["Update employee"]
  node_dtr["DTR view"]
  node_employee_templates["Employee views<br/>[employee.tpl.html]"]
  node_add_template["Add form<br/>[empAdd.tpl.html]"]
  node_profile_template["Profile view"]
  node_update_template["Update form<br/>[empUpdate.tpl.html]"]
  node_dtr_template["DTR template<br/>[dtrView.tpl.html]"]
end

subgraph group_server["Employee API"]
  node_api["Express API<br/>[server.js]"]
end

subgraph group_storage["MongoDB storage"]
  node_employees_db[("Employees collection")]
  node_users_db[("Users collection")]
end

subgraph group_info["Informational views"]
  node_about["About view<br/>[aboutController.js]"]
  node_contact["Contact view"]
  node_about_template["About template<br/>[about.tpl.html]"]
  node_contact_template["Contact template<br/>[contact.tpl.html]"]
end

node_browser(("Browser user"))

node_browser -->|"uses"| node_app
node_app -->|"routes to"| node_employee_list
node_app -->|"routes to"| node_employee_add
node_app -->|"routes to"| node_employee_profile
node_app -->|"routes to"| node_employee_update
node_app -->|"routes to"| node_dtr
node_app -->|"routes to"| node_about
node_app -->|"routes to"| node_contact
node_app -->|"loads view"| node_employee_templates
node_app -->|"loads view"| node_add_template
node_app -->|"loads view"| node_profile_template
node_app -->|"loads view"| node_update_template
node_app -->|"loads view"| node_dtr_template
node_app -->|"loads view"| node_about_template
node_app -->|"loads view"| node_contact_template
node_employee_list -->|"requests list, delete"| node_api
node_employee_add -->|"posts record"| node_api
node_employee_profile -->|"requests record"| node_api
node_employee_update -->|"gets, updates"| node_api
node_api -->|"reads, writes"| node_employees_db
node_api -->|"reads"| node_users_db
node_api -->|"serves public files"| node_browser

click node_app "https://github.com/retrac18/emp-management/blob/master/public/js/app.js"
click node_employee_list "https://github.com/retrac18/emp-management/blob/master/public/js/controllers/empController.js"
click node_employee_add "https://github.com/retrac18/emp-management/blob/master/public/js/controllers/addEmpController.js"
click node_employee_profile "https://github.com/retrac18/emp-management/blob/master/public/js/controllers/empProfileController.js"
click node_employee_update "https://github.com/retrac18/emp-management/blob/master/public/js/controllers/empUpdateController.js"
click node_dtr "https://github.com/retrac18/emp-management/blob/master/public/js/controllers/empDTRController.js"
click node_employee_templates "https://github.com/retrac18/emp-management/blob/master/public/partials/tpl/employee.tpl.html"
click node_add_template "https://github.com/retrac18/emp-management/blob/master/public/partials/tpl/empAdd.tpl.html"
click node_profile_template "https://github.com/retrac18/emp-management/blob/master/public/partials/tpl/empDetails.tpl.html"
click node_update_template "https://github.com/retrac18/emp-management/blob/master/public/partials/tpl/empUpdate.tpl.html"
click node_dtr_template "https://github.com/retrac18/emp-management/blob/master/public/partials/tpl/dtrView.tpl.html"
click node_about "https://github.com/retrac18/emp-management/blob/master/public/js/controllers/aboutController.js"
click node_contact "https://github.com/retrac18/emp-management/blob/master/public/js/controllers/contactController.js"
click node_about_template "https://github.com/retrac18/emp-management/blob/master/public/partials/tpl/about.tpl.html"
click node_contact_template "https://github.com/retrac18/emp-management/blob/master/public/partials/tpl/contact.tpl.html"
click node_api "https://github.com/retrac18/emp-management/blob/master/server.js"

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_app,node_employee_list,node_employee_add,node_employee_profile,node_employee_update,node_dtr,node_employee_templates,node_add_template,node_profile_template,node_update_template,node_dtr_template,node_browser toneBlue
class node_api toneAmber
class node_employees_db,node_users_db toneMint
class node_about,node_contact,node_about_template,node_contact_template toneRose
```

## Components

### AngularJS client

- [App routing](https://github.com/retrac18/emp-management/blob/master/public/js/app.js): `public/js/app.js`
- [Employee listing](https://github.com/retrac18/emp-management/blob/master/public/js/controllers/empController.js): `public/js/controllers/empController.js`
- [Add employee](https://github.com/retrac18/emp-management/blob/master/public/js/controllers/addEmpController.js): `public/js/controllers/addEmpController.js`
- [Employee profile](https://github.com/retrac18/emp-management/blob/master/public/js/controllers/empProfileController.js): `public/js/controllers/empProfileController.js`
- [Update employee](https://github.com/retrac18/emp-management/blob/master/public/js/controllers/empUpdateController.js): `public/js/controllers/empUpdateController.js`
- [DTR view](https://github.com/retrac18/emp-management/blob/master/public/js/controllers/empDTRController.js): `public/js/controllers/empDTRController.js`
- [Employee views](https://github.com/retrac18/emp-management/blob/master/public/partials/tpl/employee.tpl.html): `public/partials/tpl/employee.tpl.html`
- [Add form](https://github.com/retrac18/emp-management/blob/master/public/partials/tpl/empAdd.tpl.html): `public/partials/tpl/empAdd.tpl.html`
- [Profile view](https://github.com/retrac18/emp-management/blob/master/public/partials/tpl/empDetails.tpl.html): `public/partials/tpl/empDetails.tpl.html`
- [Update form](https://github.com/retrac18/emp-management/blob/master/public/partials/tpl/empUpdate.tpl.html): `public/partials/tpl/empUpdate.tpl.html`
- [DTR template](https://github.com/retrac18/emp-management/blob/master/public/partials/tpl/dtrView.tpl.html): `public/partials/tpl/dtrView.tpl.html`

### Employee API

- [Express API](https://github.com/retrac18/emp-management/blob/master/server.js): `server.js`

### MongoDB storage

- **Employees collection**
- **Users collection**

### Informational views

- [About view](https://github.com/retrac18/emp-management/blob/master/public/js/controllers/aboutController.js): `public/js/controllers/aboutController.js`
- [Contact view](https://github.com/retrac18/emp-management/blob/master/public/js/controllers/contactController.js): `public/js/controllers/contactController.js`
- [About template](https://github.com/retrac18/emp-management/blob/master/public/partials/tpl/about.tpl.html): `public/partials/tpl/about.tpl.html`
- [Contact template](https://github.com/retrac18/emp-management/blob/master/public/partials/tpl/contact.tpl.html): `public/partials/tpl/contact.tpl.html`

### Other components

- **Browser user**

## Connections

- Browser user → App routing: uses
- App routing → Employee listing: routes to
- App routing → Add employee: routes to
- App routing → Employee profile: routes to
- App routing → Update employee: routes to
- App routing → DTR view: routes to
- App routing → About view: routes to
- App routing → Contact view: routes to
- App routing → Employee views: loads view
- App routing → Add form: loads view
- App routing → Profile view: loads view
- App routing → Update form: loads view
- App routing → DTR template: loads view
- App routing → About template: loads view
- App routing → Contact template: loads view
- Employee listing → Express API: requests list, delete
- Add employee → Express API: posts record
- Employee profile → Express API: requests record
- Update employee → Express API: gets, updates
- Express API → Employees collection: reads, writes
- Express API → Users collection: reads
- Express API → Browser user: serves public files
