# mazzyy/campusconsult architecture

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

## Overview

CampusConsul supports international students planning study in Germany, from exploring programs and scholarships through preparing documents and tracking applications. The React application routes users to discovery, guidance, community, and account tools; its FastAPI backend provides domain APIs backed by relational data and AI services. README capabilities are retained where their source was not sampled, with directory-level paths used for those areas. Some subsystem links are documented capabilities rather than inspected call chains; uncertain internal wiring is omitted.

Main entry points: [`backend/app/main.py`](https://github.com/mazzyy/campusconsult/blob/master/backend/app/main.py) (FastAPI application), [`frontend/src/App.tsx`](https://github.com/mazzyy/campusconsult/blob/master/frontend/src/App.tsx) (Web application), [`backend/app/routers/applications.py`](https://github.com/mazzyy/campusconsult/blob/master/backend/app/routers/applications.py) (Application API), [`frontend/src/api/client.ts`](https://github.com/mazzyy/campusconsult/blob/master/frontend/src/api/client.ts) (API client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Student experience"]
  node_web_app["Web application<br/>[App.tsx]"]
  node_frontend_api["API client<br/>[client.ts]"]
  node_admin["Admin dashboard<br/>[AdminPage.tsx]"]
end

subgraph group_discovery["Study discovery"]
  node_program_browse["Program discovery<br/>[ProgramsPage.tsx]"]
  node_program_api["Program API<br/>[programs.py]"]
  node_program_service["Program search<br/>[program_service.py]"]
  node_rag["Recommendations and chat<br/>[rag_service.py]"]
  node_scholarships["Scholarship matching<br/>[scholarships.py]"]
end

subgraph group_application["Application journey"]
  node_profile["Student profile<br/>[profile.py]"]
  node_application_page["Application tracker"]
  node_application_api["Application API<br/>[applications.py]"]
  node_vault["Document vault<br/>[vault.py]"]
  node_sop["SOP drafts<br/>[sop.py]"]
  node_cv["CV generator<br/>[cv_generator.py]"]
end

subgraph group_guidance["Guidance and community"]
  node_guides_cost["Guides and costs"]
  node_community["Community hub<br/>[community.py]"]
  node_notifications["Notifications<br/>[notifications.py]"]
end

subgraph group_platform["Backend platform"]
  node_program_store[("Program records<br/>[program.py]")]
  node_application_store[("Application records")]
  node_ai_service["AI assistance<br/>[azure_openai.py]"]
  node_backend["FastAPI application<br/>[main.py]"]
  node_database[("Relational database<br/>[database.py]")]
  node_auth["Authentication<br/>[auth.py]"]
end

node_student(("Student"))

node_student -->|"uses"| node_web_app
node_web_app -->|"routes to"| node_program_browse
node_web_app -->|"routes to"| node_application_page
node_program_browse -->|"requests data"| node_frontend_api
node_application_page -->|"requests tracker"| node_frontend_api
node_frontend_api -->|"calls API"| node_backend
node_backend -->|"dispatches"| node_program_api
node_backend -->|"dispatches"| node_application_api
node_backend -->|"dispatches"| node_scholarships
node_backend -->|"dispatches"| node_profile
node_backend -->|"dispatches"| node_vault
node_backend -->|"dispatches"| node_sop
node_backend -->|"dispatches"| node_cv
node_backend -->|"dispatches"| node_community
node_program_api -->|"uses search"| node_program_service
node_program_service -->|"queries"| node_program_store
node_rag -->|"searches programs"| node_program_store
node_rag -->|"scores matches"| node_ai_service
node_application_api -->|"reads and writes"| node_application_store
node_application_api -->|"uses sessions"| node_database
node_backend -->|"initializes"| node_database
node_web_app -->|"routes to"| node_guides_cost
node_web_app -->|"routes to"| node_community
node_web_app -->|"routes to"| node_admin
node_backend -->|"dispatches"| node_auth
node_backend -->|"dispatches"| node_notifications

click node_web_app "https://github.com/mazzyy/campusconsult/blob/master/frontend/src/App.tsx"
click node_program_browse "https://github.com/mazzyy/campusconsult/blob/master/frontend/src/pages/Programs/ProgramsPage.tsx"
click node_program_api "https://github.com/mazzyy/campusconsult/blob/master/backend/app/routers/programs.py"
click node_program_service "https://github.com/mazzyy/campusconsult/blob/master/backend/app/services/program_service.py"
click node_rag "https://github.com/mazzyy/campusconsult/blob/master/backend/app/services/rag_service.py"
click node_program_store "https://github.com/mazzyy/campusconsult/blob/master/backend/app/models/program.py"
click node_scholarships "https://github.com/mazzyy/campusconsult/blob/master/backend/app/routers/scholarships.py"
click node_profile "https://github.com/mazzyy/campusconsult/blob/master/backend/app/routers/profile.py"
click node_application_page "https://github.com/mazzyy/campusconsult/blob/master/frontend/src/pages/Applications/ApplicationTrackerPage.tsx"
click node_application_api "https://github.com/mazzyy/campusconsult/blob/master/backend/app/routers/applications.py"
click node_application_store "https://github.com/mazzyy/campusconsult/blob/master/backend/app/models/application_tracker.py"
click node_vault "https://github.com/mazzyy/campusconsult/blob/master/backend/app/routers/vault.py"
click node_sop "https://github.com/mazzyy/campusconsult/blob/master/backend/app/routers/sop.py"
click node_cv "https://github.com/mazzyy/campusconsult/blob/master/backend/app/routers/cv_generator.py"
click node_ai_service "https://github.com/mazzyy/campusconsult/blob/master/backend/app/services/azure_openai.py"
click node_guides_cost "https://github.com/mazzyy/campusconsult/tree/master/frontend/src/pages"
click node_community "https://github.com/mazzyy/campusconsult/blob/master/backend/app/routers/community.py"
click node_backend "https://github.com/mazzyy/campusconsult/blob/master/backend/app/main.py"
click node_database "https://github.com/mazzyy/campusconsult/blob/master/backend/app/database.py"
click node_frontend_api "https://github.com/mazzyy/campusconsult/blob/master/frontend/src/api/client.ts"
click node_auth "https://github.com/mazzyy/campusconsult/blob/master/backend/app/routers/auth.py"
click node_notifications "https://github.com/mazzyy/campusconsult/blob/master/backend/app/routers/notifications.py"
click node_admin "https://github.com/mazzyy/campusconsult/blob/master/frontend/src/pages/Admin/AdminPage.tsx"

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_web_app,node_frontend_api,node_admin toneBlue
class node_program_browse,node_program_api,node_program_service,node_rag,node_scholarships toneAmber
class node_profile,node_application_page,node_application_api,node_vault,node_sop,node_cv toneMint
class node_guides_cost,node_community,node_notifications toneRose
class node_program_store,node_application_store,node_ai_service,node_backend,node_database,node_auth,node_student toneIndigo
```

## Components

### Student experience

- [Web application](https://github.com/mazzyy/campusconsult/blob/master/frontend/src/App.tsx): `frontend/src/App.tsx`
- [API client](https://github.com/mazzyy/campusconsult/blob/master/frontend/src/api/client.ts): `frontend/src/api/client.ts`
- [Admin dashboard](https://github.com/mazzyy/campusconsult/blob/master/frontend/src/pages/Admin/AdminPage.tsx): `frontend/src/pages/Admin/AdminPage.tsx`

### Study discovery

- [Program discovery](https://github.com/mazzyy/campusconsult/blob/master/frontend/src/pages/Programs/ProgramsPage.tsx): `frontend/src/pages/Programs/ProgramsPage.tsx`
- [Program API](https://github.com/mazzyy/campusconsult/blob/master/backend/app/routers/programs.py): `backend/app/routers/programs.py`
- [Program search](https://github.com/mazzyy/campusconsult/blob/master/backend/app/services/program_service.py): `backend/app/services/program_service.py`
- [Recommendations and chat](https://github.com/mazzyy/campusconsult/blob/master/backend/app/services/rag_service.py): `backend/app/services/rag_service.py`
- [Scholarship matching](https://github.com/mazzyy/campusconsult/blob/master/backend/app/routers/scholarships.py): `backend/app/routers/scholarships.py`

### Application journey

- [Student profile](https://github.com/mazzyy/campusconsult/blob/master/backend/app/routers/profile.py): `backend/app/routers/profile.py`
- [Application tracker](https://github.com/mazzyy/campusconsult/blob/master/frontend/src/pages/Applications/ApplicationTrackerPage.tsx): `frontend/src/pages/Applications/ApplicationTrackerPage.tsx`
- [Application API](https://github.com/mazzyy/campusconsult/blob/master/backend/app/routers/applications.py): `backend/app/routers/applications.py`
- [Document vault](https://github.com/mazzyy/campusconsult/blob/master/backend/app/routers/vault.py): `backend/app/routers/vault.py`
- [SOP drafts](https://github.com/mazzyy/campusconsult/blob/master/backend/app/routers/sop.py): `backend/app/routers/sop.py`
- [CV generator](https://github.com/mazzyy/campusconsult/blob/master/backend/app/routers/cv_generator.py): `backend/app/routers/cv_generator.py`

### Guidance and community

- [Guides and costs](https://github.com/mazzyy/campusconsult/tree/master/frontend/src/pages): `frontend/src/pages`
- [Community hub](https://github.com/mazzyy/campusconsult/blob/master/backend/app/routers/community.py): `backend/app/routers/community.py`
- [Notifications](https://github.com/mazzyy/campusconsult/blob/master/backend/app/routers/notifications.py): `backend/app/routers/notifications.py`

### Backend platform

- [Program records](https://github.com/mazzyy/campusconsult/blob/master/backend/app/models/program.py): `backend/app/models/program.py`
- [Application records](https://github.com/mazzyy/campusconsult/blob/master/backend/app/models/application_tracker.py): `backend/app/models/application_tracker.py`
- [AI assistance](https://github.com/mazzyy/campusconsult/blob/master/backend/app/services/azure_openai.py): `backend/app/services/azure_openai.py`
- [FastAPI application](https://github.com/mazzyy/campusconsult/blob/master/backend/app/main.py): `backend/app/main.py`
- [Relational database](https://github.com/mazzyy/campusconsult/blob/master/backend/app/database.py): `backend/app/database.py`
- [Authentication](https://github.com/mazzyy/campusconsult/blob/master/backend/app/routers/auth.py): `backend/app/routers/auth.py`

### Other components

- **Student**

## Connections

- Student → Web application: uses
- Web application → Program discovery: routes to
- Web application → Application tracker: routes to
- Program discovery → API client: requests data
- Application tracker → API client: requests tracker
- API client → FastAPI application: calls API
- FastAPI application → Program API: dispatches
- FastAPI application → Application API: dispatches
- FastAPI application → Scholarship matching: dispatches
- FastAPI application → Student profile: dispatches
- FastAPI application → Document vault: dispatches
- FastAPI application → SOP drafts: dispatches
- FastAPI application → CV generator: dispatches
- FastAPI application → Community hub: dispatches
- Program API → Program search: uses search
- Program search → Program records: queries
- Recommendations and chat → Program records: searches programs
- Recommendations and chat → AI assistance: scores matches
- Application API → Application records: reads and writes
- Application API → Relational database: uses sessions
- FastAPI application → Relational database: initializes
- Web application → Guides and costs: routes to
- Web application → Community hub: routes to
- Web application → Admin dashboard: routes to
- FastAPI application → Authentication: dispatches
- FastAPI application → Notifications: dispatches
