# darshani8/reep- architecture

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

- Interactive diagram: https://gitdiagram.com/darshani8/reep-
- Repository: https://github.com/darshani8/reep-

## Overview

REEP is a college placement-readiness platform for students, faculty, alumni, and the placement office. Users sign in through the Angular app, which routes role- and capability-scoped screens to the FastAPI API; the API applies domain logic and persists platform data in PostgreSQL. Major capabilities include student records and resumes, administration and governance, mock interviews, and optional AI assistance. The README and excerpts establish the main boundaries; unsampled domain internals and some runtime wiring are represented only where documented.

Main entry points: [`apps/api-py/app/main.py`](https://github.com/darshani8/reep-/blob/main/apps/api-py/app/main.py) (FastAPI application), [`apps/web/src/app/app.ts`](https://github.com/darshani8/reep-/blob/main/apps/web/src/app/app.ts) (Web application), [`apps/api-py/app/routers/admin.py`](https://github.com/darshani8/reep-/blob/main/apps/api-py/app/routers/admin.py) (Placement administration), [`apps/api-py/app/ai/orchestrator.py`](https://github.com/darshani8/reep-/blob/main/apps/api-py/app/ai/orchestrator.py) (AI assistant)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Angular user experience"]
  node_webapp["Web application<br/>[app.ts]"]
  node_routes["Role-based screens<br/>[app.routes.ts]"]
  node_authui["Session client<br/>[auth.service.ts]"]
  node_resume["Resume builder"]
end

subgraph group_api["API and domain"]
  node_api["FastAPI application<br/>[main.py]"]
  node_auth["Authentication<br/>[auth.py]"]
  node_student["Student services<br/>[student.py]"]
  node_admin["Placement administration<br/>[admin.py]"]
  node_governance["Staff governance<br/>[governance.py]"]
  node_identity["Identity and access<br/>[identity.py]"]
end

subgraph group_interviews["Interview and AI"]
  node_interviewui["Interview experience"]
  node_interviewapi["Interview services<br/>[interview_core.py]"]
  node_assistant["AI assistant<br/>[orchestrator.py]"]
  node_llm["LLM adapter<br/>[llm.py]"]
  node_voice["Voice platform<br/>[nova.py]"]
end

subgraph group_state["Persistence and operations"]
  node_db[("PostgreSQL<br/>[db.py]")]
  node_models["Domain models"]
  node_observability["Observability<br/>[observability.py]"]
end

node_people(("Platform users"))

node_people -->|"use"| node_webapp
node_webapp -->|"routes through"| node_routes
node_routes -->|"guards access"| node_authui
node_authui -->|"calls auth endpoints"| node_auth
node_webapp -->|"calls over HTTP"| node_api
node_api -->|"mounts router"| node_auth
node_api -->|"mounts router"| node_student
node_api -->|"mounts router"| node_admin
node_api -->|"mounts router"| node_governance
node_admin -->|"uses governance"| node_governance
node_auth -->|"uses identity"| node_identity
node_student -.->|"accesses data"| node_db
node_admin -->|"accesses data"| node_db
node_db -->|"maps records"| node_models
node_people -->|"builds resumes"| node_resume
node_people -->|"starts mock interview"| node_interviewui
node_interviewui -->|"uses API"| node_interviewapi
node_people -->|"chats"| node_assistant
node_assistant -->|"delegates completion"| node_llm
node_assistant -.->|"optional voice"| node_voice
node_api -->|"configures"| node_observability

click node_webapp "https://github.com/darshani8/reep-/blob/main/apps/web/src/app/app.ts"
click node_routes "https://github.com/darshani8/reep-/blob/main/apps/web/src/app/app.routes.ts"
click node_authui "https://github.com/darshani8/reep-/blob/main/apps/web/src/app/core/auth.service.ts"
click node_api "https://github.com/darshani8/reep-/blob/main/apps/api-py/app/main.py"
click node_auth "https://github.com/darshani8/reep-/blob/main/apps/api-py/app/routers/auth.py"
click node_student "https://github.com/darshani8/reep-/blob/main/apps/api-py/app/routers/student.py"
click node_admin "https://github.com/darshani8/reep-/blob/main/apps/api-py/app/routers/admin.py"
click node_governance "https://github.com/darshani8/reep-/blob/main/apps/api-py/app/routers/governance.py"
click node_identity "https://github.com/darshani8/reep-/blob/main/apps/api-py/app/identity.py"
click node_resume "https://github.com/darshani8/reep-/blob/main/apps/web/src/app/features/student/resume/resume-builder.service.ts"
click node_interviewui "https://github.com/darshani8/reep-/blob/main/apps/web/src/app/core/interview.service.ts"
click node_interviewapi "https://github.com/darshani8/reep-/blob/main/apps/api-py/app/interview_core.py"
click node_assistant "https://github.com/darshani8/reep-/blob/main/apps/api-py/app/ai/orchestrator.py"
click node_llm "https://github.com/darshani8/reep-/blob/main/apps/api-py/app/ai/llm.py"
click node_voice "https://github.com/darshani8/reep-/blob/main/apps/api-py/app/voice_platform/engine/nova.py"
click node_db "https://github.com/darshani8/reep-/blob/main/apps/api-py/app/db.py"
click node_models "https://github.com/darshani8/reep-/tree/main/apps/api-py/app/models"
click node_observability "https://github.com/darshani8/reep-/blob/main/apps/api-py/app/observability.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_routes,node_authui,node_resume,node_people toneBlue
class node_api,node_auth,node_student,node_admin,node_governance,node_identity toneAmber
class node_interviewui,node_interviewapi,node_assistant,node_llm,node_voice toneMint
class node_db,node_models,node_observability toneRose
```

## Components

### Angular user experience

- [Web application](https://github.com/darshani8/reep-/blob/main/apps/web/src/app/app.ts): `apps/web/src/app/app.ts`
- [Role-based screens](https://github.com/darshani8/reep-/blob/main/apps/web/src/app/app.routes.ts): `apps/web/src/app/app.routes.ts`
- [Session client](https://github.com/darshani8/reep-/blob/main/apps/web/src/app/core/auth.service.ts): `apps/web/src/app/core/auth.service.ts`
- [Resume builder](https://github.com/darshani8/reep-/blob/main/apps/web/src/app/features/student/resume/resume-builder.service.ts): `apps/web/src/app/features/student/resume/resume-builder.service.ts`

### API and domain

- [FastAPI application](https://github.com/darshani8/reep-/blob/main/apps/api-py/app/main.py): `apps/api-py/app/main.py`
- [Authentication](https://github.com/darshani8/reep-/blob/main/apps/api-py/app/routers/auth.py): `apps/api-py/app/routers/auth.py`
- [Student services](https://github.com/darshani8/reep-/blob/main/apps/api-py/app/routers/student.py): `apps/api-py/app/routers/student.py`
- [Placement administration](https://github.com/darshani8/reep-/blob/main/apps/api-py/app/routers/admin.py): `apps/api-py/app/routers/admin.py`
- [Staff governance](https://github.com/darshani8/reep-/blob/main/apps/api-py/app/routers/governance.py): `apps/api-py/app/routers/governance.py`
- [Identity and access](https://github.com/darshani8/reep-/blob/main/apps/api-py/app/identity.py): `apps/api-py/app/identity.py`

### Interview and AI

- [Interview experience](https://github.com/darshani8/reep-/blob/main/apps/web/src/app/core/interview.service.ts): `apps/web/src/app/core/interview.service.ts`
- [Interview services](https://github.com/darshani8/reep-/blob/main/apps/api-py/app/interview_core.py): `apps/api-py/app/interview_core.py`
- [AI assistant](https://github.com/darshani8/reep-/blob/main/apps/api-py/app/ai/orchestrator.py): `apps/api-py/app/ai/orchestrator.py`
- [LLM adapter](https://github.com/darshani8/reep-/blob/main/apps/api-py/app/ai/llm.py): `apps/api-py/app/ai/llm.py`
- [Voice platform](https://github.com/darshani8/reep-/blob/main/apps/api-py/app/voice_platform/engine/nova.py): `apps/api-py/app/voice_platform/engine/nova.py`

### Persistence and operations

- [PostgreSQL](https://github.com/darshani8/reep-/blob/main/apps/api-py/app/db.py): `apps/api-py/app/db.py`
- [Domain models](https://github.com/darshani8/reep-/tree/main/apps/api-py/app/models): `apps/api-py/app/models`
- [Observability](https://github.com/darshani8/reep-/blob/main/apps/api-py/app/observability.py): `apps/api-py/app/observability.py`

### Other components

- **Platform users**

## Connections

- Platform users → Web application: use
- Web application → Role-based screens: routes through (evidence: `apps/web/src/app/app.routes.ts`)
- Role-based screens → Session client: guards access (evidence: `apps/web/src/app/app.routes.ts`)
- Session client → Authentication: calls auth endpoints (evidence: `apps/web/src/app/core/auth.service.ts`)
- Web application → FastAPI application: calls over HTTP
- FastAPI application → Authentication: mounts router (evidence: `apps/api-py/app/main.py`)
- FastAPI application → Student services: mounts router (evidence: `apps/api-py/app/main.py`)
- FastAPI application → Placement administration: mounts router (evidence: `apps/api-py/app/main.py`)
- FastAPI application → Staff governance: mounts router (evidence: `apps/api-py/app/main.py`)
- Placement administration → Staff governance: uses governance (evidence: `apps/api-py/app/routers/admin.py`)
- Authentication → Identity and access: uses identity (evidence: `apps/api-py/app/routers/auth.py`)
- Student services → PostgreSQL: accesses data
- Placement administration → PostgreSQL: accesses data (evidence: `apps/api-py/app/routers/admin.py`)
- PostgreSQL → Domain models: maps records (evidence: `apps/api-py/app/db.py`)
- Platform users → Resume builder: builds resumes
- Platform users → Interview experience: starts mock interview
- Interview experience → Interview services: uses API
- Platform users → AI assistant: chats
- AI assistant → LLM adapter: delegates completion (evidence: `apps/api-py/app/ai/orchestrator.py`)
- AI assistant → Voice platform: optional voice
- FastAPI application → Observability: configures (evidence: `apps/api-py/app/main.py`)
