# pltechchandra/nextgenlive architecture

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

- Interactive diagram: https://gitdiagram.com/pltechchandra/nextgenlive
- Repository: https://github.com/pltechchandra/nextgenlive

## Overview

Perfex is a web-based CRM and business-management application. Staff and customers enter through separate administrative and client-facing interfaces; users manage CRM records and operational work such as projects, tasks, estimates, and proposals, with related capabilities for billing, payments, support, and subscriptions. The graph also shows the shared Kanban and framework layers, plus documented integrations and extensions. Evidence is limited to the supplied excerpts and source index; major subsystems visible in the tree but not sampled are included without speculative call relationships.

Main entry points: [`application/controllers/Clients.php`](https://github.com/pltechchandra/nextgenlive/blob/main/application/controllers/Clients.php) (Client records), [`application/controllers/admin`](https://github.com/pltechchandra/nextgenlive/tree/main/application/controllers/admin) (Admin controllers), [`application/core/ClientsController.php`](https://github.com/pltechchandra/nextgenlive/blob/main/application/core/ClientsController.php) (Client controller base), [`modules/fixed_equipment/controllers/Fixed_equipment_client.php`](https://github.com/pltechchandra/nextgenlive/blob/main/modules/fixed_equipment/controllers/Fixed_equipment_client.php) (Equipment client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interfaces["User interfaces"]
  node_admin["Admin controllers"]
  node_clientarea["Client area<br/>[Clients.php]"]
  node_clientbase["Client controller base"]
  node_vuefilters["Filter interface<br/>[AppFilters.vue]"]
end

subgraph group_crm["CRM operations"]
  node_clients["Client records<br/>[Clients.php]"]
  node_projects["Projects<br/>[Projects.php]"]
  node_tasks["Tasks<br/>[Tasks_model.php]"]
  node_kanban["Kanban services<br/>[AbstractKanban.php]"]
  node_leads["Lead management<br/>[Leads.php]"]
  node_tickets["Support tickets<br/>[Tickets.php]"]
end

subgraph group_business["Business workflows"]
  node_estimates["Estimates"]
  node_proposals["Proposals"]
  node_invoices["Invoices and payments<br/>[Invoices.php]"]
  node_contracts["Contracts<br/>[Contracts.php]"]
  node_subscriptions["Subscriptions<br/>[Subscriptions.php]"]
  node_gateway["Payment gateways"]
end

subgraph group_platform["Application platform"]
  node_framework["CodeIgniter runtime<br/>[CodeIgniter.php]"]
  node_output["HTTP output<br/>[Output.php]"]
  node_database[("Database query builder")]
  node_session[("Database sessions")]
  node_auth["Authentication<br/>[Authentication.php]"]
end

subgraph group_extensions["Extensions"]
  node_timesheets["Timesheets API"]
  node_equipment["Equipment client"]
  node_einvoice["E-invoicing"]
  node_warehouse["Warehouse client"]
  node_imap["IMAP service<br/>[Server.php]"]
end

node_staff(("Staff user"))
node_customer(("Customer"))

node_staff -.->|"uses"| node_admin
node_customer -.->|"uses"| node_clientarea
node_clientarea -->|"inherits"| node_clientbase
node_clients -->|"loads project data"| node_projects
node_clients -->|"loads project tasks"| node_tasks
node_clients -->|"adds ticket replies"| node_tickets
node_tasks -->|"uses"| node_kanban
node_proposals -->|"extends"| node_kanban
node_admin -->|"renders pipeline"| node_estimates
node_admin -->|"renders pipeline"| node_proposals
node_staff -.->|"filters records"| node_vuefilters
node_session -->|"reads and writes"| node_database
node_timesheets -->|"uses"| node_framework
node_equipment -->|"extends"| node_clientbase
node_equipment -->|"references"| node_projects
node_warehouse -->|"extends"| node_clientbase
node_vuefilters -.->|"mounts in app"| node_framework

click node_admin "https://github.com/pltechchandra/nextgenlive/tree/main/application/controllers/admin"
click node_clientarea "https://github.com/pltechchandra/nextgenlive/blob/main/application/controllers/Clients.php"
click node_clientbase "https://github.com/pltechchandra/nextgenlive/blob/main/application/core/ClientsController.php"
click node_vuefilters "https://github.com/pltechchandra/nextgenlive/blob/main/resources/js/components/filters/AppFilters.vue"
click node_clients "https://github.com/pltechchandra/nextgenlive/blob/main/application/controllers/Clients.php"
click node_projects "https://github.com/pltechchandra/nextgenlive/blob/main/application/controllers/admin/Projects.php"
click node_tasks "https://github.com/pltechchandra/nextgenlive/blob/main/application/models/Tasks_model.php"
click node_kanban "https://github.com/pltechchandra/nextgenlive/blob/main/application/services/AbstractKanban.php"
click node_leads "https://github.com/pltechchandra/nextgenlive/blob/main/application/controllers/admin/Leads.php"
click node_tickets "https://github.com/pltechchandra/nextgenlive/blob/main/application/controllers/admin/Tickets.php"
click node_estimates "https://github.com/pltechchandra/nextgenlive/blob/main/application/services/estimates/EstimatesPipeline.php"
click node_proposals "https://github.com/pltechchandra/nextgenlive/blob/main/application/services/proposals/ProposalsPipeline.php"
click node_invoices "https://github.com/pltechchandra/nextgenlive/blob/main/application/controllers/admin/Invoices.php"
click node_contracts "https://github.com/pltechchandra/nextgenlive/blob/main/application/controllers/admin/Contracts.php"
click node_subscriptions "https://github.com/pltechchandra/nextgenlive/blob/main/application/controllers/admin/Subscriptions.php"
click node_gateway "https://github.com/pltechchandra/nextgenlive/tree/main/application/libraries/gateways"
click node_framework "https://github.com/pltechchandra/nextgenlive/blob/main/system/core/CodeIgniter.php"
click node_output "https://github.com/pltechchandra/nextgenlive/blob/main/system/core/Output.php"
click node_database "https://github.com/pltechchandra/nextgenlive/blob/main/system/database/DB_query_builder.php"
click node_session "https://github.com/pltechchandra/nextgenlive/blob/main/system/libraries/Session/drivers/Session_database_driver.php"
click node_auth "https://github.com/pltechchandra/nextgenlive/blob/main/application/controllers/Authentication.php"
click node_timesheets "https://github.com/pltechchandra/nextgenlive/blob/main/modules/timesheets/controllers/API_timesheets_Controller.php"
click node_equipment "https://github.com/pltechchandra/nextgenlive/blob/main/modules/fixed_equipment/controllers/Fixed_equipment_client.php"
click node_einvoice "https://github.com/pltechchandra/nextgenlive/blob/main/modules/einvoice/src/EinvoiceHandler.php"
click node_warehouse "https://github.com/pltechchandra/nextgenlive/blob/main/modules/warehouse/controllers/Warehouse_client.php"
click node_imap "https://github.com/pltechchandra/nextgenlive/blob/main/application/services/imap/Server.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_admin,node_clientarea,node_clientbase,node_vuefilters,node_staff toneBlue
class node_clients,node_projects,node_tasks,node_kanban,node_leads,node_tickets toneAmber
class node_estimates,node_proposals,node_invoices,node_contracts,node_subscriptions,node_gateway toneMint
class node_framework,node_output,node_database,node_session,node_auth toneRose
class node_timesheets,node_equipment,node_einvoice,node_warehouse,node_imap,node_customer toneIndigo
```

## Components

### User interfaces

- [Admin controllers](https://github.com/pltechchandra/nextgenlive/tree/main/application/controllers/admin): `application/controllers/admin`
- [Client area](https://github.com/pltechchandra/nextgenlive/blob/main/application/controllers/Clients.php): `application/controllers/Clients.php`
- [Client controller base](https://github.com/pltechchandra/nextgenlive/blob/main/application/core/ClientsController.php): `application/core/ClientsController.php`
- [Filter interface](https://github.com/pltechchandra/nextgenlive/blob/main/resources/js/components/filters/AppFilters.vue): `resources/js/components/filters/AppFilters.vue`

### CRM operations

- [Client records](https://github.com/pltechchandra/nextgenlive/blob/main/application/controllers/Clients.php): `application/controllers/Clients.php`
- [Projects](https://github.com/pltechchandra/nextgenlive/blob/main/application/controllers/admin/Projects.php): `application/controllers/admin/Projects.php`
- [Tasks](https://github.com/pltechchandra/nextgenlive/blob/main/application/models/Tasks_model.php): `application/models/Tasks_model.php`
- [Kanban services](https://github.com/pltechchandra/nextgenlive/blob/main/application/services/AbstractKanban.php): `application/services/AbstractKanban.php`
- [Lead management](https://github.com/pltechchandra/nextgenlive/blob/main/application/controllers/admin/Leads.php): `application/controllers/admin/Leads.php`
- [Support tickets](https://github.com/pltechchandra/nextgenlive/blob/main/application/controllers/admin/Tickets.php): `application/controllers/admin/Tickets.php`

### Business workflows

- [Estimates](https://github.com/pltechchandra/nextgenlive/blob/main/application/services/estimates/EstimatesPipeline.php): `application/services/estimates/EstimatesPipeline.php`
- [Proposals](https://github.com/pltechchandra/nextgenlive/blob/main/application/services/proposals/ProposalsPipeline.php): `application/services/proposals/ProposalsPipeline.php`
- [Invoices and payments](https://github.com/pltechchandra/nextgenlive/blob/main/application/controllers/admin/Invoices.php): `application/controllers/admin/Invoices.php`
- [Contracts](https://github.com/pltechchandra/nextgenlive/blob/main/application/controllers/admin/Contracts.php): `application/controllers/admin/Contracts.php`
- [Subscriptions](https://github.com/pltechchandra/nextgenlive/blob/main/application/controllers/admin/Subscriptions.php): `application/controllers/admin/Subscriptions.php`
- [Payment gateways](https://github.com/pltechchandra/nextgenlive/tree/main/application/libraries/gateways): `application/libraries/gateways`

### Application platform

- [CodeIgniter runtime](https://github.com/pltechchandra/nextgenlive/blob/main/system/core/CodeIgniter.php): `system/core/CodeIgniter.php`
- [HTTP output](https://github.com/pltechchandra/nextgenlive/blob/main/system/core/Output.php): `system/core/Output.php`
- [Database query builder](https://github.com/pltechchandra/nextgenlive/blob/main/system/database/DB_query_builder.php): `system/database/DB_query_builder.php`
- [Database sessions](https://github.com/pltechchandra/nextgenlive/blob/main/system/libraries/Session/drivers/Session_database_driver.php): `system/libraries/Session/drivers/Session_database_driver.php`
- [Authentication](https://github.com/pltechchandra/nextgenlive/blob/main/application/controllers/Authentication.php): `application/controllers/Authentication.php`

### Extensions

- [Timesheets API](https://github.com/pltechchandra/nextgenlive/blob/main/modules/timesheets/controllers/API_timesheets_Controller.php): `modules/timesheets/controllers/API_timesheets_Controller.php`
- [Equipment client](https://github.com/pltechchandra/nextgenlive/blob/main/modules/fixed_equipment/controllers/Fixed_equipment_client.php): `modules/fixed_equipment/controllers/Fixed_equipment_client.php`
- [E-invoicing](https://github.com/pltechchandra/nextgenlive/blob/main/modules/einvoice/src/EinvoiceHandler.php): `modules/einvoice/src/EinvoiceHandler.php`
- [Warehouse client](https://github.com/pltechchandra/nextgenlive/blob/main/modules/warehouse/controllers/Warehouse_client.php): `modules/warehouse/controllers/Warehouse_client.php`
- [IMAP service](https://github.com/pltechchandra/nextgenlive/blob/main/application/services/imap/Server.php): `application/services/imap/Server.php`

### Other components

- **Staff user**
- **Customer**

## Connections

- Staff user → Admin controllers: uses
- Customer → Client area: uses
- Client area → Client controller base: inherits (evidence: `application/controllers/Clients.php`)
- Client records → Projects: loads project data (evidence: `application/controllers/Clients.php`)
- Client records → Tasks: loads project tasks (evidence: `application/controllers/Clients.php`)
- Client records → Support tickets: adds ticket replies (evidence: `application/controllers/Clients.php`)
- Tasks → Kanban services: uses (evidence: `application/models/Tasks_model.php`)
- Proposals → Kanban services: extends (evidence: `application/services/proposals/ProposalsPipeline.php`)
- Admin controllers → Estimates: renders pipeline
- Admin controllers → Proposals: renders pipeline
- Staff user → Filter interface: filters records
- Database sessions → Database query builder: reads and writes
- Timesheets API → CodeIgniter runtime: uses (evidence: `modules/timesheets/controllers/API_timesheets_Controller.php`)
- Equipment client → Client controller base: extends (evidence: `modules/fixed_equipment/controllers/Fixed_equipment_client.php`)
- Equipment client → Projects: references (evidence: `modules/fixed_equipment/controllers/Fixed_equipment_client.php`)
- Warehouse client → Client controller base: extends (evidence: `modules/warehouse/controllers/Warehouse_client.php`)
- Filter interface → CodeIgniter runtime: mounts in app
