# sampriti-gopisetti/roleready architecture

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

## Overview

RoleReady turns organizational knowledge into assigned, interactive employee training. Managers create projects and connect GitHub, Jira, Confluence, or documents; ingestion and embedding support retrieval, and background generation produces learning assets. Employees use role-specific dashboards and training experiences, while progress, engagement, and gamification support measurement. The README documents this overall flow; sampled source confirms API registration, ingestion dispatch, pipeline stages, and selected learning behavior, but not every endpoint-to-service connection.

Main entry points: [`backend/app/core/supabase.py`](https://github.com/sampriti-gopisetti/roleready/blob/main/backend/app/core/supabase.py) (Supabase data), [`backend/app/services/content_generation`](https://github.com/sampriti-gopisetti/roleready/tree/main/backend/app/services/content_generation) (AI content generation), [`backend/app/services/data_ingestion`](https://github.com/sampriti-gopisetti/roleready/tree/main/backend/app/services/data_ingestion) (Knowledge sources), [`backend/app/services/engagement/commands.py`](https://github.com/sampriti-gopisetti/roleready/blob/main/backend/app/services/engagement/commands.py) (Learning engagement)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["RoleReady web app"]
  node_webapp["Angular application<br/>[app.routes.ts]"]
  node_projectui["Project workflows"]
  node_learnui["Learner experience<br/>[video-player.ts]"]
  node_ingestionui["Ingestion client"]
  node_sessionui["Learning sessions"]
end

subgraph group_api["Backend API"]
  node_api["FastAPI application<br/>[main.py]"]
  node_projectapi["Project endpoints<br/>[project.py]"]
  node_ingestionapi["Ingestion endpoints<br/>[ingestion.py]"]
  node_jobs["Job dispatch<br/>[job_dispatch.py]"]
  node_pipeline["Project pipeline"]
  node_steps["Pipeline steps<br/>[pipeline_steps.py]"]
end

subgraph group_knowledge["Knowledge and generation"]
  node_sources["Knowledge sources"]
  node_embeddings["Embedding repository"]
  node_retrieval["Semantic retrieval<br/>[retrieval.py]"]
  node_content["AI content generation"]
end

subgraph group_learning["Training and learning"]
  node_training["Training management<br/>[commands.py]"]
  node_progress["Progress tracking<br/>[commands.py]"]
  node_engagement["Learning engagement<br/>[commands.py]"]
  node_gamification["XP and streaks<br/>[xp_engine.py]"]
end

node_manager(("Manager"))
node_employee(("Employee"))
node_store[("Supabase data<br/>[supabase.py]")]
node_assets["Asset storage"]
node_externaldata["Company data systems"]
node_gemini["Google Gemini"]
node_embeddingprovider["Embedding providers"]

node_manager -->|"uses"| node_webapp
node_employee -->|"uses"| node_webapp
node_webapp -->|"routes to"| node_projectui
node_webapp -->|"routes to"| node_learnui
node_projectui -->|"starts ingestion"| node_ingestionui
node_ingestionui -->|"HTTP requests"| node_api
node_sessionui -->|"records sessions"| node_api
node_api -->|"dispatches"| node_projectapi
node_api -->|"dispatches"| node_ingestionapi
node_projectapi -->|"starts project pipeline"| node_pipeline
node_ingestionapi -->|"starts tracked jobs"| node_jobs
node_jobs -->|"runs ingestion"| node_steps
node_pipeline -->|"runs stages"| node_steps
node_steps -->|"processes sources"| node_sources
node_sources -->|"reads company data"| node_externaldata
node_sources -->|"creates embeddings"| node_embeddingprovider
node_sources -->|"persists vectors"| node_embeddings
node_embeddings -->|"writes embeddings"| node_store
node_pipeline -->|"generates assets"| node_content
node_steps -->|"invokes generators"| node_content
node_content -->|"retrieves context"| node_retrieval
node_retrieval -->|"reads vectors"| node_store
node_content -->|"generates content"| node_gemini
node_content -->|"uploads media"| node_assets
node_content -->|"saves generated assets"| node_store
node_manager -->|"creates training"| node_training
node_training -->|"persists training"| node_store
node_employee -->|"completes training"| node_learnui
node_learnui -->|"records activity"| node_sessionui
node_sessionui -->|"submits events"| node_engagement
node_engagement -->|"persists events"| node_store
node_engagement -->|"supports tracking"| node_progress
node_progress -->|"persists progress"| node_store
node_engagement -->|"awards XP"| node_gamification
node_gamification -->|"records XP"| node_store

click node_webapp "https://github.com/sampriti-gopisetti/roleready/blob/main/frontend/src/app/app.routes.ts"
click node_projectui "https://github.com/sampriti-gopisetti/roleready/blob/main/frontend/src/app/projects/project-generate-page/project-generate-page.ts"
click node_learnui "https://github.com/sampriti-gopisetti/roleready/blob/main/frontend/src/app/video-player/video-player.ts"
click node_ingestionui "https://github.com/sampriti-gopisetti/roleready/blob/main/frontend/src/app/services/ingestion.service.ts"
click node_sessionui "https://github.com/sampriti-gopisetti/roleready/blob/main/frontend/src/app/shared/learning/learning-session.service.ts"
click node_api "https://github.com/sampriti-gopisetti/roleready/blob/main/backend/app/main.py"
click node_projectapi "https://github.com/sampriti-gopisetti/roleready/blob/main/backend/app/api/v1/endpoints/project.py"
click node_ingestionapi "https://github.com/sampriti-gopisetti/roleready/blob/main/backend/app/api/v1/endpoints/ingestion.py"
click node_jobs "https://github.com/sampriti-gopisetti/roleready/blob/main/backend/app/services/job_dispatch.py"
click node_pipeline "https://github.com/sampriti-gopisetti/roleready/blob/main/backend/app/services/pipeline_service.py"
click node_steps "https://github.com/sampriti-gopisetti/roleready/blob/main/backend/app/services/pipeline_steps.py"
click node_sources "https://github.com/sampriti-gopisetti/roleready/tree/main/backend/app/services/data_ingestion"
click node_embeddings "https://github.com/sampriti-gopisetti/roleready/blob/main/backend/app/repositories/ingestion_repository.py"
click node_retrieval "https://github.com/sampriti-gopisetti/roleready/blob/main/backend/app/services/content_generation/retrieval.py"
click node_content "https://github.com/sampriti-gopisetti/roleready/tree/main/backend/app/services/content_generation"
click node_training "https://github.com/sampriti-gopisetti/roleready/blob/main/backend/app/services/training/commands.py"
click node_progress "https://github.com/sampriti-gopisetti/roleready/blob/main/backend/app/services/progress/commands.py"
click node_engagement "https://github.com/sampriti-gopisetti/roleready/blob/main/backend/app/services/engagement/commands.py"
click node_gamification "https://github.com/sampriti-gopisetti/roleready/blob/main/backend/app/services/gamification/xp_engine.py"
click node_store "https://github.com/sampriti-gopisetti/roleready/blob/main/backend/app/core/supabase.py"
click node_assets "https://github.com/sampriti-gopisetti/roleready/blob/main/backend/app/repositories/storage_repository.py"

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_projectui,node_learnui,node_ingestionui,node_sessionui toneBlue
class node_api,node_projectapi,node_ingestionapi,node_jobs,node_pipeline,node_steps,node_store,node_assets toneAmber
class node_sources,node_embeddings,node_retrieval,node_content toneMint
class node_training,node_progress,node_engagement,node_gamification toneRose
class node_manager,node_employee,node_externaldata,node_gemini,node_embeddingprovider toneIndigo
```

## Components

### RoleReady web app

- [Angular application](https://github.com/sampriti-gopisetti/roleready/blob/main/frontend/src/app/app.routes.ts): `frontend/src/app/app.routes.ts`
- [Project workflows](https://github.com/sampriti-gopisetti/roleready/blob/main/frontend/src/app/projects/project-generate-page/project-generate-page.ts): `frontend/src/app/projects/project-generate-page/project-generate-page.ts`
- [Learner experience](https://github.com/sampriti-gopisetti/roleready/blob/main/frontend/src/app/video-player/video-player.ts): `frontend/src/app/video-player/video-player.ts`
- [Ingestion client](https://github.com/sampriti-gopisetti/roleready/blob/main/frontend/src/app/services/ingestion.service.ts): `frontend/src/app/services/ingestion.service.ts`
- [Learning sessions](https://github.com/sampriti-gopisetti/roleready/blob/main/frontend/src/app/shared/learning/learning-session.service.ts): `frontend/src/app/shared/learning/learning-session.service.ts`

### Backend API

- [FastAPI application](https://github.com/sampriti-gopisetti/roleready/blob/main/backend/app/main.py): `backend/app/main.py`
- [Project endpoints](https://github.com/sampriti-gopisetti/roleready/blob/main/backend/app/api/v1/endpoints/project.py): `backend/app/api/v1/endpoints/project.py`
- [Ingestion endpoints](https://github.com/sampriti-gopisetti/roleready/blob/main/backend/app/api/v1/endpoints/ingestion.py): `backend/app/api/v1/endpoints/ingestion.py`
- [Job dispatch](https://github.com/sampriti-gopisetti/roleready/blob/main/backend/app/services/job_dispatch.py): `backend/app/services/job_dispatch.py`
- [Project pipeline](https://github.com/sampriti-gopisetti/roleready/blob/main/backend/app/services/pipeline_service.py): `backend/app/services/pipeline_service.py`
- [Pipeline steps](https://github.com/sampriti-gopisetti/roleready/blob/main/backend/app/services/pipeline_steps.py): `backend/app/services/pipeline_steps.py`

### Knowledge and generation

- [Knowledge sources](https://github.com/sampriti-gopisetti/roleready/tree/main/backend/app/services/data_ingestion): `backend/app/services/data_ingestion`
- [Embedding repository](https://github.com/sampriti-gopisetti/roleready/blob/main/backend/app/repositories/ingestion_repository.py): `backend/app/repositories/ingestion_repository.py`
- [Semantic retrieval](https://github.com/sampriti-gopisetti/roleready/blob/main/backend/app/services/content_generation/retrieval.py): `backend/app/services/content_generation/retrieval.py`
- [AI content generation](https://github.com/sampriti-gopisetti/roleready/tree/main/backend/app/services/content_generation): `backend/app/services/content_generation`

### Training and learning

- [Training management](https://github.com/sampriti-gopisetti/roleready/blob/main/backend/app/services/training/commands.py): `backend/app/services/training/commands.py`
- [Progress tracking](https://github.com/sampriti-gopisetti/roleready/blob/main/backend/app/services/progress/commands.py): `backend/app/services/progress/commands.py`
- [Learning engagement](https://github.com/sampriti-gopisetti/roleready/blob/main/backend/app/services/engagement/commands.py): `backend/app/services/engagement/commands.py`
- [XP and streaks](https://github.com/sampriti-gopisetti/roleready/blob/main/backend/app/services/gamification/xp_engine.py): `backend/app/services/gamification/xp_engine.py`

### Other components

- **Manager**
- **Employee**
- [Supabase data](https://github.com/sampriti-gopisetti/roleready/blob/main/backend/app/core/supabase.py): `backend/app/core/supabase.py`
- [Asset storage](https://github.com/sampriti-gopisetti/roleready/blob/main/backend/app/repositories/storage_repository.py): `backend/app/repositories/storage_repository.py`
- **Company data systems**
- **Google Gemini**
- **Embedding providers**

## Connections

- Manager → Angular application: uses
- Employee → Angular application: uses
- Angular application → Project workflows: routes to
- Angular application → Learner experience: routes to
- Project workflows → Ingestion client: starts ingestion
- Ingestion client → FastAPI application: HTTP requests
- Learning sessions → FastAPI application: records sessions
- FastAPI application → Project endpoints: dispatches
- FastAPI application → Ingestion endpoints: dispatches
- Project endpoints → Project pipeline: starts project pipeline
- Ingestion endpoints → Job dispatch: starts tracked jobs
- Job dispatch → Pipeline steps: runs ingestion
- Project pipeline → Pipeline steps: runs stages
- Pipeline steps → Knowledge sources: processes sources
- Knowledge sources → Company data systems: reads company data
- Knowledge sources → Embedding providers: creates embeddings
- Knowledge sources → Embedding repository: persists vectors
- Embedding repository → Supabase data: writes embeddings
- Project pipeline → AI content generation: generates assets
- Pipeline steps → AI content generation: invokes generators
- AI content generation → Semantic retrieval: retrieves context
- Semantic retrieval → Supabase data: reads vectors
- AI content generation → Google Gemini: generates content
- AI content generation → Asset storage: uploads media
- AI content generation → Supabase data: saves generated assets
- Manager → Training management: creates training
- Training management → Supabase data: persists training
- Employee → Learner experience: completes training
- Learner experience → Learning sessions: records activity
- Learning sessions → Learning engagement: submits events
- Learning engagement → Supabase data: persists events
- Learning engagement → Progress tracking: supports tracking
- Progress tracking → Supabase data: persists progress
- Learning engagement → XP and streaks: awards XP
- XP and streaks → Supabase data: records XP
