# anmolanubhav07/neo-interviewer architecture

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

- Interactive diagram: https://gitdiagram.com/anmolanubhav07/neo-interviewer
- Repository: https://github.com/anmolanubhav07/neo-interviewer

## Overview

This is an AI-assisted interview-preparation application. Users authenticate, explore a dashboard, practice interviews and coding problems, analyze resumes, and review feedback; resume analysis can lead into resume-based question generation. The graph preserves the major route-level capabilities and backend functions, but several route and function implementations were not sampled, so uncertain runtime links are shown as unverified or omitted. The README is empty; relationships are based on source excerpts and the SOURCE INDEX.

Main entry points: [`src/routes/resume.tsx`](https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/routes/resume.tsx) (Resume analyzer), [`src/routes/interview.tsx`](https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/routes/interview.tsx) (Interview practice), [`src/routes/coding.tsx`](https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/routes/coding.tsx) (Coding practice), [`supabase/functions/generate-questions/index.ts`](https://github.com/anmolanubhav07/neo-interviewer/blob/main/supabase/functions/generate-questions/index.ts) (Question generation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application shell"]
  node_router["Router setup<br/>[router.tsx]"]
  node_route_tree["Route tree<br/>[routeTree.gen.ts]"]
  node_shell["App shell<br/>[AppShell.tsx]"]
  node_search["Search bar<br/>[SearchBar.tsx]"]
  node_auth["Authentication state<br/>[useAuth.tsx]"]
  node_login["Sign-in<br/>[login.tsx]"]
  node_dashboard["Dashboard<br/>[dashboard.tsx]"]
  node_glass_card["Glass card<br/>[GlassCard.tsx]"]
  node_accordion["Accordion UI<br/>[accordion.tsx]"]
  node_dialog["Dialog UI<br/>[dialog.tsx]"]
  node_context_menu["Context menu UI<br/>[context-menu.tsx]"]
end

subgraph group_practice["Interview practice"]
  node_interview["Interview practice<br/>[interview.tsx]"]
  node_speech["Speech input/output"]
  node_speech_output["Speech synthesis"]
  node_coding["Coding practice<br/>[coding.tsx]"]
  node_code_runner["Code runner<br/>[code-runner.ts]"]
  node_feedback["Feedback review<br/>[feedback.tsx]"]
end

subgraph group_career["Career tools"]
  node_resume["Resume analyzer<br/>[resume.tsx]"]
  node_profile["Profile<br/>[profile.tsx]"]
  node_verify["Account verification<br/>[verify.tsx]"]
end

subgraph group_services["Backend services"]
  node_supabase["Supabase client<br/>[client.ts]"]
  node_resume_analysis["Resume analysis<br/>[index.ts]"]
  node_question_generation["Question generation<br/>[index.ts]"]
  node_answer_evaluation["Answer evaluation<br/>[index.ts]"]
  node_code_review["Code review<br/>[index.ts]"]
  node_edge_invoker["Edge invocation<br/>[invoke-edge.ts]"]
end

node_user(("User"))

node_router -->|"uses route tree"| node_route_tree
node_user -.->|"opens application"| node_router
node_user -.->|"signs in"| node_login
node_user -.->|"views dashboard"| node_dashboard
node_user -.->|"practices interview"| node_interview
node_user -.->|"solves problems"| node_coding
node_user -.->|"analyzes resume"| node_resume
node_user -.->|"reviews feedback"| node_feedback
node_user -.->|"updates profile"| node_profile
node_user -.->|"verifies account"| node_verify
node_search -->|"reads user state"| node_auth
node_auth -->|"subscribes to auth"| node_supabase
node_search -->|"fetches records"| node_supabase
node_resume -->|"renders within"| node_shell
node_resume -->|"renders cards"| node_glass_card
node_resume -->|"invokes function"| node_edge_invoker
node_edge_invoker -.->|"dispatches request"| node_question_generation
node_resume -->|"requests questions"| node_question_generation
node_resume -.->|"requests analysis"| node_resume_analysis
node_interview -.->|"uses speech input"| node_speech
node_interview -.->|"uses speech output"| node_speech_output
node_interview -.->|"requests questions"| node_question_generation
node_interview -.->|"submits answers"| node_answer_evaluation
node_coding -.->|"runs code"| node_code_runner
node_coding -.->|"requests review"| node_code_review

click node_router "https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/router.tsx"
click node_route_tree "https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/routeTree.gen.ts"
click node_shell "https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/components/layout/AppShell.tsx"
click node_search "https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/components/SearchBar.tsx"
click node_auth "https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/hooks/useAuth.tsx"
click node_supabase "https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/integrations/supabase/client.ts"
click node_login "https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/routes/login.tsx"
click node_dashboard "https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/routes/dashboard.tsx"
click node_interview "https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/routes/interview.tsx"
click node_speech "https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/hooks/useSpeechRecognition.tsx"
click node_speech_output "https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/hooks/useSpeechSynthesis.tsx"
click node_coding "https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/routes/coding.tsx"
click node_code_runner "https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/lib/code-runner.ts"
click node_feedback "https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/routes/feedback.tsx"
click node_resume "https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/routes/resume.tsx"
click node_profile "https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/routes/profile.tsx"
click node_verify "https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/routes/verify.tsx"
click node_resume_analysis "https://github.com/anmolanubhav07/neo-interviewer/blob/main/supabase/functions/analyze-resume/index.ts"
click node_question_generation "https://github.com/anmolanubhav07/neo-interviewer/blob/main/supabase/functions/generate-questions/index.ts"
click node_answer_evaluation "https://github.com/anmolanubhav07/neo-interviewer/blob/main/supabase/functions/evaluate-answer/index.ts"
click node_code_review "https://github.com/anmolanubhav07/neo-interviewer/blob/main/supabase/functions/review-code/index.ts"
click node_edge_invoker "https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/lib/invoke-edge.ts"
click node_glass_card "https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/components/ui-kit/GlassCard.tsx"
click node_accordion "https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/components/ui/accordion.tsx"
click node_dialog "https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/components/ui/dialog.tsx"
click node_context_menu "https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/components/ui/context-menu.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_router,node_route_tree,node_shell,node_search,node_auth,node_login,node_dashboard,node_glass_card,node_accordion,node_dialog,node_context_menu,node_user toneBlue
class node_interview,node_speech,node_speech_output,node_coding,node_code_runner,node_feedback toneAmber
class node_resume,node_profile,node_verify toneMint
class node_supabase,node_resume_analysis,node_question_generation,node_answer_evaluation,node_code_review,node_edge_invoker toneRose
```

## Components

### Application shell

- [Router setup](https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/router.tsx): `src/router.tsx`
- [Route tree](https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/routeTree.gen.ts): `src/routeTree.gen.ts`
- [App shell](https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/components/layout/AppShell.tsx): `src/components/layout/AppShell.tsx`
- [Search bar](https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/components/SearchBar.tsx): `src/components/SearchBar.tsx`
- [Authentication state](https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/hooks/useAuth.tsx): `src/hooks/useAuth.tsx`
- [Sign-in](https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/routes/login.tsx): `src/routes/login.tsx`
- [Dashboard](https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/routes/dashboard.tsx): `src/routes/dashboard.tsx`
- [Glass card](https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/components/ui-kit/GlassCard.tsx): `src/components/ui-kit/GlassCard.tsx`
- [Accordion UI](https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/components/ui/accordion.tsx): `src/components/ui/accordion.tsx`
- [Dialog UI](https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/components/ui/dialog.tsx): `src/components/ui/dialog.tsx`
- [Context menu UI](https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/components/ui/context-menu.tsx): `src/components/ui/context-menu.tsx`

### Interview practice

- [Interview practice](https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/routes/interview.tsx): `src/routes/interview.tsx`
- [Speech input/output](https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/hooks/useSpeechRecognition.tsx): `src/hooks/useSpeechRecognition.tsx`
- [Speech synthesis](https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/hooks/useSpeechSynthesis.tsx): `src/hooks/useSpeechSynthesis.tsx`
- [Coding practice](https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/routes/coding.tsx): `src/routes/coding.tsx`
- [Code runner](https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/lib/code-runner.ts): `src/lib/code-runner.ts`
- [Feedback review](https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/routes/feedback.tsx): `src/routes/feedback.tsx`

### Career tools

- [Resume analyzer](https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/routes/resume.tsx): `src/routes/resume.tsx`
- [Profile](https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/routes/profile.tsx): `src/routes/profile.tsx`
- [Account verification](https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/routes/verify.tsx): `src/routes/verify.tsx`

### Backend services

- [Supabase client](https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/integrations/supabase/client.ts): `src/integrations/supabase/client.ts`
- [Resume analysis](https://github.com/anmolanubhav07/neo-interviewer/blob/main/supabase/functions/analyze-resume/index.ts): `supabase/functions/analyze-resume/index.ts`
- [Question generation](https://github.com/anmolanubhav07/neo-interviewer/blob/main/supabase/functions/generate-questions/index.ts): `supabase/functions/generate-questions/index.ts`
- [Answer evaluation](https://github.com/anmolanubhav07/neo-interviewer/blob/main/supabase/functions/evaluate-answer/index.ts): `supabase/functions/evaluate-answer/index.ts`
- [Code review](https://github.com/anmolanubhav07/neo-interviewer/blob/main/supabase/functions/review-code/index.ts): `supabase/functions/review-code/index.ts`
- [Edge invocation](https://github.com/anmolanubhav07/neo-interviewer/blob/main/src/lib/invoke-edge.ts): `src/lib/invoke-edge.ts`

### Other components

- **User**

## Connections

- Router setup → Route tree: uses route tree (evidence: `src/router.tsx`)
- User → Router setup: opens application
- User → Sign-in: signs in
- User → Dashboard: views dashboard
- User → Interview practice: practices interview
- User → Coding practice: solves problems
- User → Resume analyzer: analyzes resume
- User → Feedback review: reviews feedback
- User → Profile: updates profile
- User → Account verification: verifies account
- Search bar → Authentication state: reads user state (evidence: `src/components/SearchBar.tsx`)
- Authentication state → Supabase client: subscribes to auth (evidence: `src/hooks/useAuth.tsx`)
- Search bar → Supabase client: fetches records (evidence: `src/components/SearchBar.tsx`)
- Resume analyzer → App shell: renders within (evidence: `src/routes/resume.tsx`)
- Resume analyzer → Glass card: renders cards (evidence: `src/routes/resume.tsx`)
- Resume analyzer → Edge invocation: invokes function (evidence: `src/routes/resume.tsx`)
- Edge invocation → Question generation: dispatches request
- Resume analyzer → Question generation: requests questions (evidence: `src/routes/resume.tsx`)
- Resume analyzer → Resume analysis: requests analysis
- Interview practice → Speech input/output: uses speech input
- Interview practice → Speech synthesis: uses speech output
- Interview practice → Question generation: requests questions
- Interview practice → Answer evaluation: submits answers
- Coding practice → Code runner: runs code
- Coding practice → Code review: requests review
