# techneura2026/leadership architecture

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

## Overview

LeaderPrism is a multi-tenant leadership assessment platform: organisation staff configure and launch assessments, participants and raters submit responses, and HR users review analytics, reports, and succession-planning views. The tree and sampled controllers establish the main workflows and capabilities; service internals and most frontend-to-API wiring were not sampled, so those connections are shown only where supported.

Main entry points: [`web/src/lib/api.ts`](https://github.com/techneura2026/leadership/blob/master/web/src/lib/api.ts) (Web API client), [`api/src/core/database/database.module.ts`](https://github.com/techneura2026/leadership/blob/master/api/src/core/database/database.module.ts) (Relational database), [`api/src/reporting/reporting.controller.ts`](https://github.com/techneura2026/leadership/blob/master/api/src/reporting/reporting.controller.ts) (Report generation), [`web/src/app/(app)`](https://github.com/techneura2026/leadership/tree/master/web/src/app/(app)) (Assessment workspace)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_clients["Web experiences"]
  node_webapp["Assessment workspace"]
  node_raterui["Rater experience<br/>[page.tsx]"]
  node_api_client["Web API client<br/>[api.ts]"]
  node_assessment_ui["Assessment setup and results"]
  node_chat["Assessment design assistant"]
  node_chat_route["Chat API route<br/>[route.ts]"]
end

subgraph group_access["Access and organisation"]
  node_auth["Authentication<br/>[auth.service.ts]"]
  node_users["User management"]
  node_organisations["Organisation settings"]
end

subgraph group_lifecycle["Assessment lifecycle"]
  node_engine["Assessment lifecycle"]
  node_items["Assessment items"]
end

subgraph group_assessment["Assessment domains"]
  node_feedback["360 feedback"]
  node_competency["Competency ratings"]
  node_personality["Personality profiling"]
  node_readiness["Readiness assessment"]
end

subgraph group_insights["Insights and planning"]
  node_analytics["Assessment analytics"]
  node_reporting["Report generation"]
  node_report_worker["PDF processing"]
  node_pdf["PDF rendering<br/>[pdf.service.ts]"]
  node_succession["Succession planning"]
end

node_staff(("HR and admins"))
node_participants(("Participants and raters"))
node_database[("Relational database<br/>[database.module.ts]")]
node_openai["OpenAI API"]

node_staff -->|"uses"| node_webapp
node_participants -->|"uses"| node_webapp
node_participants -->|"submits feedback"| node_raterui
node_webapp -->|"requests data"| node_api_client
node_assessment_ui -->|"uses"| node_api_client
node_api_client -->|"authenticates"| node_auth
node_api_client -->|"manages users"| node_users
node_api_client -->|"manages organisation"| node_organisations
node_api_client -->|"manages assessments"| node_engine
node_api_client -->|"manages items"| node_items
node_api_client -->|"submits nominations"| node_feedback
node_raterui -->|"submits responses"| node_api_client
node_api_client -->|"submits ratings"| node_competency
node_api_client -->|"submits responses"| node_personality
node_api_client -->|"submits responses"| node_readiness
node_api_client -->|"requests insights"| node_analytics
node_api_client -->|"requests reports"| node_reporting
node_api_client -->|"requests planning"| node_succession
node_chat -->|"sends prompts"| node_chat_route
node_chat_route -.->|"requests completion"| node_openai
node_engine -->|"reads and writes"| node_database
node_items -->|"reads and writes"| node_database
node_feedback -->|"reads and writes"| node_database
node_competency -->|"reads and writes"| node_database
node_personality -->|"reads and writes"| node_database
node_readiness -->|"reads and writes"| node_database
node_analytics -->|"reads"| node_database
node_reporting -->|"reads and writes"| node_database
node_reporting -->|"queues report"| node_report_worker
node_report_worker -->|"renders PDF"| node_pdf
node_succession -->|"reads and writes"| node_database

click node_webapp "https://github.com/techneura2026/leadership/tree/master/web/src/app/(app)"
click node_raterui "https://github.com/techneura2026/leadership/blob/master/web/src/app/rater/%5Btoken%5D/page.tsx"
click node_api_client "https://github.com/techneura2026/leadership/blob/master/web/src/lib/api.ts"
click node_auth "https://github.com/techneura2026/leadership/blob/master/api/src/core/auth/auth.service.ts"
click node_users "https://github.com/techneura2026/leadership/blob/master/api/src/core/users/users.controller.ts"
click node_organisations "https://github.com/techneura2026/leadership/blob/master/api/src/core/organisations/organisations.controller.ts"
click node_assessment_ui "https://github.com/techneura2026/leadership/tree/master/web/src/app/(app)/assessments"
click node_engine "https://github.com/techneura2026/leadership/blob/master/api/src/assessment/engine/engine.controller.ts"
click node_items "https://github.com/techneura2026/leadership/blob/master/api/src/assessment/items/items.controller.ts"
click node_feedback "https://github.com/techneura2026/leadership/blob/master/api/src/assessment/uc1-feedback/uc1-feedback.controller.ts"
click node_competency "https://github.com/techneura2026/leadership/blob/master/api/src/assessment/uc2-competency/uc2-competency.controller.ts"
click node_personality "https://github.com/techneura2026/leadership/blob/master/api/src/assessment/uc3-personality/uc3-personality.controller.ts"
click node_readiness "https://github.com/techneura2026/leadership/blob/master/api/src/assessment/uc4-readiness/uc4-readiness.controller.ts"
click node_analytics "https://github.com/techneura2026/leadership/blob/master/api/src/analytics/analytics.controller.ts"
click node_reporting "https://github.com/techneura2026/leadership/blob/master/api/src/reporting/reporting.controller.ts"
click node_report_worker "https://github.com/techneura2026/leadership/blob/master/api/src/reporting/report.processor.ts"
click node_pdf "https://github.com/techneura2026/leadership/blob/master/api/src/reporting/pdf.service.ts"
click node_succession "https://github.com/techneura2026/leadership/blob/master/api/src/succession/succession.controller.ts"
click node_database "https://github.com/techneura2026/leadership/blob/master/api/src/core/database/database.module.ts"
click node_chat "https://github.com/techneura2026/leadership/blob/master/web/src/components/AssessmentChatbot.tsx"
click node_chat_route "https://github.com/techneura2026/leadership/blob/master/web/src/app/chat-api/route.ts"

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_webapp,node_raterui,node_api_client,node_assessment_ui,node_chat,node_chat_route toneBlue
class node_auth,node_users,node_organisations,node_database toneAmber
class node_engine,node_items,node_openai toneMint
class node_feedback,node_competency,node_personality,node_readiness toneRose
class node_analytics,node_reporting,node_report_worker,node_pdf,node_succession,node_staff,node_participants toneIndigo
```

## Components

### Web experiences

- [Assessment workspace](https://github.com/techneura2026/leadership/tree/master/web/src/app/(app)): `web/src/app/(app)`
- [Rater experience](https://github.com/techneura2026/leadership/blob/master/web/src/app/rater/%5Btoken%5D/page.tsx): `web/src/app/rater/[token]/page.tsx`
- [Web API client](https://github.com/techneura2026/leadership/blob/master/web/src/lib/api.ts): `web/src/lib/api.ts`
- [Assessment setup and results](https://github.com/techneura2026/leadership/tree/master/web/src/app/(app)/assessments): `web/src/app/(app)/assessments`
- [Assessment design assistant](https://github.com/techneura2026/leadership/blob/master/web/src/components/AssessmentChatbot.tsx): `web/src/components/AssessmentChatbot.tsx`
- [Chat API route](https://github.com/techneura2026/leadership/blob/master/web/src/app/chat-api/route.ts): `web/src/app/chat-api/route.ts`

### Access and organisation

- [Authentication](https://github.com/techneura2026/leadership/blob/master/api/src/core/auth/auth.service.ts): `api/src/core/auth/auth.service.ts`
- [User management](https://github.com/techneura2026/leadership/blob/master/api/src/core/users/users.controller.ts): `api/src/core/users/users.controller.ts`
- [Organisation settings](https://github.com/techneura2026/leadership/blob/master/api/src/core/organisations/organisations.controller.ts): `api/src/core/organisations/organisations.controller.ts`

### Assessment lifecycle

- [Assessment lifecycle](https://github.com/techneura2026/leadership/blob/master/api/src/assessment/engine/engine.controller.ts): `api/src/assessment/engine/engine.controller.ts`
- [Assessment items](https://github.com/techneura2026/leadership/blob/master/api/src/assessment/items/items.controller.ts): `api/src/assessment/items/items.controller.ts`

### Assessment domains

- [360 feedback](https://github.com/techneura2026/leadership/blob/master/api/src/assessment/uc1-feedback/uc1-feedback.controller.ts): `api/src/assessment/uc1-feedback/uc1-feedback.controller.ts`
- [Competency ratings](https://github.com/techneura2026/leadership/blob/master/api/src/assessment/uc2-competency/uc2-competency.controller.ts): `api/src/assessment/uc2-competency/uc2-competency.controller.ts`
- [Personality profiling](https://github.com/techneura2026/leadership/blob/master/api/src/assessment/uc3-personality/uc3-personality.controller.ts): `api/src/assessment/uc3-personality/uc3-personality.controller.ts`
- [Readiness assessment](https://github.com/techneura2026/leadership/blob/master/api/src/assessment/uc4-readiness/uc4-readiness.controller.ts): `api/src/assessment/uc4-readiness/uc4-readiness.controller.ts`

### Insights and planning

- [Assessment analytics](https://github.com/techneura2026/leadership/blob/master/api/src/analytics/analytics.controller.ts): `api/src/analytics/analytics.controller.ts`
- [Report generation](https://github.com/techneura2026/leadership/blob/master/api/src/reporting/reporting.controller.ts): `api/src/reporting/reporting.controller.ts`
- [PDF processing](https://github.com/techneura2026/leadership/blob/master/api/src/reporting/report.processor.ts): `api/src/reporting/report.processor.ts`
- [PDF rendering](https://github.com/techneura2026/leadership/blob/master/api/src/reporting/pdf.service.ts): `api/src/reporting/pdf.service.ts`
- [Succession planning](https://github.com/techneura2026/leadership/blob/master/api/src/succession/succession.controller.ts): `api/src/succession/succession.controller.ts`

### Other components

- **HR and admins**
- **Participants and raters**
- [Relational database](https://github.com/techneura2026/leadership/blob/master/api/src/core/database/database.module.ts): `api/src/core/database/database.module.ts`
- **OpenAI API**

## Connections

- HR and admins → Assessment workspace: uses
- Participants and raters → Assessment workspace: uses
- Participants and raters → Rater experience: submits feedback
- Assessment workspace → Web API client: requests data
- Assessment setup and results → Web API client: uses
- Web API client → Authentication: authenticates
- Web API client → User management: manages users
- Web API client → Organisation settings: manages organisation
- Web API client → Assessment lifecycle: manages assessments
- Web API client → Assessment items: manages items
- Web API client → 360 feedback: submits nominations
- Rater experience → Web API client: submits responses
- Web API client → Competency ratings: submits ratings
- Web API client → Personality profiling: submits responses
- Web API client → Readiness assessment: submits responses
- Web API client → Assessment analytics: requests insights
- Web API client → Report generation: requests reports
- Web API client → Succession planning: requests planning
- Assessment design assistant → Chat API route: sends prompts
- Chat API route → OpenAI API: requests completion
- Assessment lifecycle → Relational database: reads and writes
- Assessment items → Relational database: reads and writes
- 360 feedback → Relational database: reads and writes
- Competency ratings → Relational database: reads and writes
- Personality profiling → Relational database: reads and writes
- Readiness assessment → Relational database: reads and writes
- Assessment analytics → Relational database: reads
- Report generation → Relational database: reads and writes
- Report generation → PDF processing: queues report
- PDF processing → PDF rendering: renders PDF
- Succession planning → Relational database: reads and writes
