# sai-indupuri/interview-craftopia architecture

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

- Interactive diagram: https://gitdiagram.com/sai-indupuri/interview-craftopia
- Repository: https://github.com/sai-indupuri/interview-craftopia

## Overview

This is a React web application for individual and company users, with assessment-taking and mock interviews as its clearest practice workflows; the tree also identifies coding practice, custom assessments, profiles, and company dashboards. The app routes users to feature pages, while authentication is managed through a context and backend API client. The graph preserves named product areas and the observed auth wiring. Most feature-page and hook implementations were not sampled, so their internal calls and data flows are intentionally not asserted.

Main entry points: [`src/App.tsx`](https://github.com/sai-indupuri/interview-craftopia/blob/main/src/App.tsx) (Route Application), [`src/lib/api/authService.ts`](https://github.com/sai-indupuri/interview-craftopia/blob/main/src/lib/api/authService.ts) (Auth Service), [`src/lib/api/backendClient.ts`](https://github.com/sai-indupuri/interview-craftopia/blob/main/src/lib/api/backendClient.ts) (Backend Client), [`src/contexts/AuthContext.tsx`](https://github.com/sai-indupuri/interview-craftopia/blob/main/src/contexts/AuthContext.tsx) (Auth Context)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application"]
  node_app["Route Application<br/>[App.tsx]"]
  node_home["Home Page<br/>[Index.tsx]"]
end

subgraph group_identity["Identity"]
  node_authpages["Auth Pages<br/>[Auth.tsx]"]
  node_signup["Signup Page<br/>[Signup.tsx]"]
  node_authcontext["Auth Context<br/>[AuthContext.tsx]"]
  node_guard["Auth Guard<br/>[RequireAuth.tsx]"]
end

subgraph group_practice["Individual Practice"]
  node_assessmentlist["Assessments<br/>[Assessments.tsx]"]
  node_assessmentlanding["Assessment Landing"]
  node_assessmentview["Assessment Session<br/>[AssessmentView.tsx]"]
  node_assessmentresults["Assessment Results"]
  node_assessmentui["Assessment Interface"]
  node_mockinterviews["Mock Interviews<br/>[MockInterviews.tsx]"]
  node_interviewroom["Interview Room<br/>[InterviewRoom.tsx]"]
  node_interviewlanding["Interview Landing"]
  node_coding["Coding Practice<br/>[CodingPractice.tsx]"]
  node_codinglanding["Coding Landing"]
  node_customassessments["Custom Assessments"]
  node_profile["User Profile<br/>[Profile.tsx]"]
end

subgraph group_company["Company Tools"]
  node_companyprofile["Company Profile<br/>[CompanyProfile.tsx]"]
  node_companydashboard["Company Dashboard"]
  node_companyassessments["Company Assessments"]
  node_companyinterviews["Company Interviews"]
end

subgraph group_services["API Services"]
  node_authservice["Auth Service<br/>[authService.ts]"]
  node_backend["Backend Client<br/>[backendClient.ts]"]
end

node_user(("Visitor or User"))
node_backendservice(("Application Backend"))

node_user -->|"opens"| node_app
node_app -->|"routes"| node_home
node_app -->|"routes"| node_authpages
node_app -->|"routes"| node_signup
node_app -->|"routes"| node_assessmentlist
node_app -->|"routes"| node_assessmentlanding
node_app -->|"routes"| node_assessmentview
node_app -->|"routes"| node_assessmentresults
node_app -->|"routes"| node_mockinterviews
node_app -->|"routes"| node_interviewlanding
node_app -->|"routes"| node_coding
node_app -->|"routes"| node_codinglanding
node_app -->|"routes"| node_customassessments
node_app -->|"routes"| node_profile
node_app -->|"routes"| node_companyprofile
node_app -->|"routes"| node_companydashboard
node_app -->|"routes"| node_companyassessments
node_app -->|"routes"| node_companyinterviews
node_authcontext -->|"calls"| node_authservice
node_authservice -->|"calls"| node_backend
node_backend -->|"HTTP requests"| node_backendservice

click node_app "https://github.com/sai-indupuri/interview-craftopia/blob/main/src/App.tsx"
click node_home "https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/Index.tsx"
click node_authpages "https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/Auth.tsx"
click node_signup "https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/Signup.tsx"
click node_authcontext "https://github.com/sai-indupuri/interview-craftopia/blob/main/src/contexts/AuthContext.tsx"
click node_guard "https://github.com/sai-indupuri/interview-craftopia/blob/main/src/components/auth/RequireAuth.tsx"
click node_assessmentlist "https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/Assessments.tsx"
click node_assessmentlanding "https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/AssessmentsLanding.tsx"
click node_assessmentview "https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/AssessmentView.tsx"
click node_assessmentresults "https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/AssessmentResults.tsx"
click node_assessmentui "https://github.com/sai-indupuri/interview-craftopia/blob/main/src/components/assessment/AssessmentControls.tsx"
click node_mockinterviews "https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/MockInterviews.tsx"
click node_interviewroom "https://github.com/sai-indupuri/interview-craftopia/blob/main/src/components/interview/InterviewRoom.tsx"
click node_interviewlanding "https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/MockInterviewsLanding.tsx"
click node_coding "https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/CodingPractice.tsx"
click node_codinglanding "https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/CodingPracticeLanding.tsx"
click node_customassessments "https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/CustomAssessments.tsx"
click node_profile "https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/Profile.tsx"
click node_companyprofile "https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/CompanyProfile.tsx"
click node_companydashboard "https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/CompanyDashboard.tsx"
click node_companyassessments "https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/CompanyCustomAssessments.tsx"
click node_companyinterviews "https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/CompanyMockInterviews.tsx"
click node_authservice "https://github.com/sai-indupuri/interview-craftopia/blob/main/src/lib/api/authService.ts"
click node_backend "https://github.com/sai-indupuri/interview-craftopia/blob/main/src/lib/api/backendClient.ts"

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_app,node_home,node_user toneBlue
class node_authpages,node_signup,node_authcontext,node_guard toneAmber
class node_assessmentlist,node_assessmentlanding,node_assessmentview,node_assessmentresults,node_assessmentui,node_mockinterviews,node_interviewroom,node_interviewlanding,node_coding,node_codinglanding,node_customassessments,node_profile toneMint
class node_companyprofile,node_companydashboard,node_companyassessments,node_companyinterviews toneRose
class node_authservice,node_backend,node_backendservice toneIndigo
```

## Components

### Application

- [Route Application](https://github.com/sai-indupuri/interview-craftopia/blob/main/src/App.tsx): `src/App.tsx`
- [Home Page](https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/Index.tsx): `src/pages/Index.tsx`

### Identity

- [Auth Pages](https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/Auth.tsx): `src/pages/Auth.tsx`
- [Signup Page](https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/Signup.tsx): `src/pages/Signup.tsx`
- [Auth Context](https://github.com/sai-indupuri/interview-craftopia/blob/main/src/contexts/AuthContext.tsx): `src/contexts/AuthContext.tsx`
- [Auth Guard](https://github.com/sai-indupuri/interview-craftopia/blob/main/src/components/auth/RequireAuth.tsx): `src/components/auth/RequireAuth.tsx`

### Individual Practice

- [Assessments](https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/Assessments.tsx): `src/pages/Assessments.tsx`
- [Assessment Landing](https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/AssessmentsLanding.tsx): `src/pages/AssessmentsLanding.tsx`
- [Assessment Session](https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/AssessmentView.tsx): `src/pages/AssessmentView.tsx`
- [Assessment Results](https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/AssessmentResults.tsx): `src/pages/AssessmentResults.tsx`
- [Assessment Interface](https://github.com/sai-indupuri/interview-craftopia/blob/main/src/components/assessment/AssessmentControls.tsx): `src/components/assessment/AssessmentControls.tsx`
- [Mock Interviews](https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/MockInterviews.tsx): `src/pages/MockInterviews.tsx`
- [Interview Room](https://github.com/sai-indupuri/interview-craftopia/blob/main/src/components/interview/InterviewRoom.tsx): `src/components/interview/InterviewRoom.tsx`
- [Interview Landing](https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/MockInterviewsLanding.tsx): `src/pages/MockInterviewsLanding.tsx`
- [Coding Practice](https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/CodingPractice.tsx): `src/pages/CodingPractice.tsx`
- [Coding Landing](https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/CodingPracticeLanding.tsx): `src/pages/CodingPracticeLanding.tsx`
- [Custom Assessments](https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/CustomAssessments.tsx): `src/pages/CustomAssessments.tsx`
- [User Profile](https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/Profile.tsx): `src/pages/Profile.tsx`

### Company Tools

- [Company Profile](https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/CompanyProfile.tsx): `src/pages/CompanyProfile.tsx`
- [Company Dashboard](https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/CompanyDashboard.tsx): `src/pages/CompanyDashboard.tsx`
- [Company Assessments](https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/CompanyCustomAssessments.tsx): `src/pages/CompanyCustomAssessments.tsx`
- [Company Interviews](https://github.com/sai-indupuri/interview-craftopia/blob/main/src/pages/CompanyMockInterviews.tsx): `src/pages/CompanyMockInterviews.tsx`

### API Services

- [Auth Service](https://github.com/sai-indupuri/interview-craftopia/blob/main/src/lib/api/authService.ts): `src/lib/api/authService.ts`
- [Backend Client](https://github.com/sai-indupuri/interview-craftopia/blob/main/src/lib/api/backendClient.ts): `src/lib/api/backendClient.ts`

### Other components

- **Visitor or User**
- **Application Backend**

## Connections

- Visitor or User → Route Application: opens
- Route Application → Home Page: routes
- Route Application → Auth Pages: routes
- Route Application → Signup Page: routes
- Route Application → Assessments: routes
- Route Application → Assessment Landing: routes
- Route Application → Assessment Session: routes
- Route Application → Assessment Results: routes
- Route Application → Mock Interviews: routes
- Route Application → Interview Landing: routes
- Route Application → Coding Practice: routes
- Route Application → Coding Landing: routes
- Route Application → Custom Assessments: routes
- Route Application → User Profile: routes
- Route Application → Company Profile: routes
- Route Application → Company Dashboard: routes
- Route Application → Company Assessments: routes
- Route Application → Company Interviews: routes
- Auth Context → Auth Service: calls
- Auth Service → Backend Client: calls
- Backend Client → Application Backend: HTTP requests
