# kimdfarm/dmu_graduation_project architecture

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

- Interactive diagram: https://gitdiagram.com/kimdfarm/dmu_graduation_project
- Repository: https://github.com/kimdfarm/dmu_graduation_project

## Overview

This repository is an AI-assisted employment-support service for IT students. The principal workflow is to create or upload career documents, analyze GitHub and skills, then use job matching and AI feedback to improve application materials. The website exposes account, resume, cover-letter, job, and profile workflows; the FastAPI backend provides corresponding APIs and a separate AI analysis application. The README also describes recommendations and interview preparation. Some routes and integrations are unsampled, so only documented or source-index-supported connections are shown.

Main entry points: [`backend/app/main.py`](https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/app/main.py) (FastAPI application), [`frontend/website/src/App.jsx`](https://github.com/kimdfarm/dmu_graduation_project/blob/main/frontend/website/src/App.jsx) (Website router), [`backend/AI/app.py`](https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/AI/app.py) (AI analysis app), [`backend/app/routers/coverletters.py`](https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/app/routers/coverletters.py) (Cover-letter APIs)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_website["Website router<br/>[App.jsx]"]
  node_account["Account access<br/>[Login.jsx]"]
  node_resumeui["Resume workflow<br/>[ResumeNew.jsx]"]
  node_letterui["Cover letters"]
  node_githubui["GitHub connection"]
  node_jobui["Job browsing<br/>[JobBoard.jsx]"]
end

subgraph group_api["Career APIs"]
  node_backend["FastAPI application<br/>[main.py]"]
  node_auth["Sign-in and signup<br/>[login.py]"]
  node_resumeapi["Resume APIs<br/>[resume.py]"]
  node_upload["Document parsing<br/>[file_parser.py]"]
  node_lettersapi["Cover-letter APIs<br/>[coverletters.py]"]
  node_sections["Writing assistance<br/>[sections.py]"]
  node_githubapi["GitHub analysis API"]
  node_jobsapi["Job recommendations<br/>[recommendation.py]"]
  node_jobcrawl["Job collection<br/>[scheduler.py]"]
end

subgraph group_analysis["AI analysis"]
  node_aiapp["AI analysis app<br/>[app.py]"]
  node_loader["Recruit data loader<br/>[data_loader.py]"]
  node_topicmodel["Topic modeling<br/>[lsa_lda_model.py]"]
  node_recommender["Job matching<br/>[recommender.py]"]
  node_feedback["Resume feedback<br/>[gpt_feedback.py]"]
end

subgraph group_state["External data"]
  node_supabase[("Supabase data<br/>[config.py]")]
  node_jobboards(("Job-board sources"))
  node_llm(("LLM providers"))
end

node_student(("IT student"))

node_student -->|"uses"| node_website
node_website -->|"routes to"| node_account
node_website -->|"routes to"| node_resumeui
node_website -->|"routes to"| node_letterui
node_website -->|"routes to"| node_githubui
node_website -->|"routes to"| node_jobui
node_website -.->|"calls APIs"| node_backend
node_backend -->|"registers"| node_auth
node_backend -->|"registers"| node_resumeapi
node_backend -->|"registers"| node_upload
node_backend -->|"registers"| node_lettersapi
node_backend -->|"registers"| node_sections
node_backend -->|"registers"| node_githubapi
node_backend -->|"registers"| node_jobsapi
node_auth -->|"uses client"| node_supabase
node_lettersapi -->|"uses client"| node_supabase
node_lettersapi -->|"uses parser"| node_upload
node_sections -->|"uses client"| node_supabase
node_sections -->|"requests editing"| node_llm
node_jobcrawl -->|"collects listings"| node_jobboards
node_jobsapi -->|"uses collected jobs"| node_jobcrawl
node_student -->|"submits resume"| node_aiapp
node_aiapp -->|"loads listings"| node_loader
node_aiapp -->|"fits topics"| node_topicmodel
node_aiapp -->|"fits and ranks"| node_recommender
node_aiapp -->|"requests feedback"| node_feedback
node_feedback -->|"generates feedback"| node_llm

click node_website "https://github.com/kimdfarm/dmu_graduation_project/blob/main/frontend/website/src/App.jsx"
click node_account "https://github.com/kimdfarm/dmu_graduation_project/blob/main/frontend/website/src/pages/login/Login.jsx"
click node_resumeui "https://github.com/kimdfarm/dmu_graduation_project/blob/main/frontend/website/src/pages/resume/ResumeNew.jsx"
click node_letterui "https://github.com/kimdfarm/dmu_graduation_project/blob/main/frontend/website/src/pages/CoverLetter/CoverLetterDetail.jsx"
click node_githubui "https://github.com/kimdfarm/dmu_graduation_project/blob/main/frontend/website/src/pages/resume/DeveloperTestGithub.jsx"
click node_jobui "https://github.com/kimdfarm/dmu_graduation_project/blob/main/frontend/website/src/pages/Job/JobBoard.jsx"
click node_backend "https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/app/main.py"
click node_auth "https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/app/routers/login.py"
click node_resumeapi "https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/app/routers/resume.py"
click node_upload "https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/app/routers/imageandfileupload/file_parser.py"
click node_lettersapi "https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/app/routers/coverletters.py"
click node_sections "https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/app/routers/sections.py"
click node_githubapi "https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/app/routers/github_data/github_groq_data.py"
click node_jobsapi "https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/app/routers/recommendation.py"
click node_jobcrawl "https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/app/utils/scheduler.py"
click node_aiapp "https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/AI/app.py"
click node_loader "https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/AI/src/data_loader.py"
click node_topicmodel "https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/AI/src/lsa_lda_model.py"
click node_recommender "https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/AI/src/recommender.py"
click node_feedback "https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/AI/src/gpt_feedback.py"
click node_supabase "https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/app/core/config.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_website,node_account,node_resumeui,node_letterui,node_githubui,node_jobui toneBlue
class node_backend,node_auth,node_resumeapi,node_upload,node_lettersapi,node_sections,node_githubapi,node_jobsapi,node_jobcrawl toneAmber
class node_aiapp,node_loader,node_topicmodel,node_recommender,node_feedback toneMint
class node_supabase,node_jobboards,node_llm toneRose
class node_student toneIndigo
```

## Components

### Web experience

- [Website router](https://github.com/kimdfarm/dmu_graduation_project/blob/main/frontend/website/src/App.jsx): `frontend/website/src/App.jsx`
- [Account access](https://github.com/kimdfarm/dmu_graduation_project/blob/main/frontend/website/src/pages/login/Login.jsx): `frontend/website/src/pages/login/Login.jsx`
- [Resume workflow](https://github.com/kimdfarm/dmu_graduation_project/blob/main/frontend/website/src/pages/resume/ResumeNew.jsx): `frontend/website/src/pages/resume/ResumeNew.jsx`
- [Cover letters](https://github.com/kimdfarm/dmu_graduation_project/blob/main/frontend/website/src/pages/CoverLetter/CoverLetterDetail.jsx): `frontend/website/src/pages/CoverLetter/CoverLetterDetail.jsx`
- [GitHub connection](https://github.com/kimdfarm/dmu_graduation_project/blob/main/frontend/website/src/pages/resume/DeveloperTestGithub.jsx): `frontend/website/src/pages/resume/DeveloperTestGithub.jsx`
- [Job browsing](https://github.com/kimdfarm/dmu_graduation_project/blob/main/frontend/website/src/pages/Job/JobBoard.jsx): `frontend/website/src/pages/Job/JobBoard.jsx`

### Career APIs

- [FastAPI application](https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/app/main.py): `backend/app/main.py`
- [Sign-in and signup](https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/app/routers/login.py): `backend/app/routers/login.py`
- [Resume APIs](https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/app/routers/resume.py): `backend/app/routers/resume.py`
- [Document parsing](https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/app/routers/imageandfileupload/file_parser.py): `backend/app/routers/imageandfileupload/file_parser.py`
- [Cover-letter APIs](https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/app/routers/coverletters.py): `backend/app/routers/coverletters.py`
- [Writing assistance](https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/app/routers/sections.py): `backend/app/routers/sections.py`
- [GitHub analysis API](https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/app/routers/github_data/github_groq_data.py): `backend/app/routers/github_data/github_groq_data.py`
- [Job recommendations](https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/app/routers/recommendation.py): `backend/app/routers/recommendation.py`
- [Job collection](https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/app/utils/scheduler.py): `backend/app/utils/scheduler.py`

### AI analysis

- [AI analysis app](https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/AI/app.py): `backend/AI/app.py`
- [Recruit data loader](https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/AI/src/data_loader.py): `backend/AI/src/data_loader.py`
- [Topic modeling](https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/AI/src/lsa_lda_model.py): `backend/AI/src/lsa_lda_model.py`
- [Job matching](https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/AI/src/recommender.py): `backend/AI/src/recommender.py`
- [Resume feedback](https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/AI/src/gpt_feedback.py): `backend/AI/src/gpt_feedback.py`

### External data

- [Supabase data](https://github.com/kimdfarm/dmu_graduation_project/blob/main/backend/app/core/config.py): `backend/app/core/config.py`
- **Job-board sources**
- **LLM providers**

### Other components

- **IT student**

## Connections

- IT student → Website router: uses (evidence: `frontend/website/src/App.jsx`)
- Website router → Account access: routes to (evidence: `frontend/website/src/App.jsx`)
- Website router → Resume workflow: routes to (evidence: `frontend/website/src/App.jsx`)
- Website router → Cover letters: routes to (evidence: `frontend/website/src/App.jsx`)
- Website router → GitHub connection: routes to (evidence: `frontend/website/src/App.jsx`)
- Website router → Job browsing: routes to (evidence: `frontend/website/src/App.jsx`)
- Website router → FastAPI application: calls APIs
- FastAPI application → Sign-in and signup: registers (evidence: `backend/app/main.py`)
- FastAPI application → Resume APIs: registers (evidence: `backend/app/main.py`)
- FastAPI application → Document parsing: registers (evidence: `backend/app/main.py`)
- FastAPI application → Cover-letter APIs: registers (evidence: `backend/app/main.py`)
- FastAPI application → Writing assistance: registers (evidence: `backend/app/main.py`)
- FastAPI application → GitHub analysis API: registers (evidence: `backend/app/main.py`)
- FastAPI application → Job recommendations: registers (evidence: `backend/app/main.py`)
- Sign-in and signup → Supabase data: uses client (evidence: `backend/app/routers/login.py`)
- Cover-letter APIs → Supabase data: uses client (evidence: `backend/app/routers/coverletters.py`)
- Cover-letter APIs → Document parsing: uses parser
- Writing assistance → Supabase data: uses client (evidence: `backend/app/routers/sections.py`)
- Writing assistance → LLM providers: requests editing (evidence: `backend/app/routers/sections.py`)
- Job collection → Job-board sources: collects listings (evidence: `backend/app/utils/scheduler.py`)
- Job recommendations → Job collection: uses collected jobs (evidence: `backend/app/utils/scheduler.py`)
- IT student → AI analysis app: submits resume (evidence: `backend/AI/app.py`)
- AI analysis app → Recruit data loader: loads listings (evidence: `backend/AI/app.py`)
- AI analysis app → Topic modeling: fits topics (evidence: `backend/AI/app.py`)
- AI analysis app → Job matching: fits and ranks (evidence: `backend/AI/app.py`)
- AI analysis app → Resume feedback: requests feedback (evidence: `backend/AI/app.py`)
- Resume feedback → LLM providers: generates feedback (evidence: `backend/AI/src/gpt_feedback.py`)
