How aisha-jawed/ai-reviewer works
InterviewAI turns a candidate’s resume or self-description and a target job description into a personalized preparation report, then lets them revisit reports or export a tailored resume PDF. The graph follows the documented frontend-to-API workflow and sampled controller/service calls. Report history, authentication, and PDF export are included; frontend page wiring and some backend configuration details are represented only where the tree or README supports them.
Main entry points: interview.controller.js Report handlers · app.routes.jsx Page routing · interview.routes.js Interview routes · ai.service.js Report and resume generation
Components 26
Web client
- Application shell
Frontend/src/App.jsx - Page routing
Frontend/src/app.routes.jsx - Login and register
Frontend/src/features/auth/pages - Auth state
Frontend/src/features/auth/hooks/useAuth.js - Prep dashboard
Frontend/src/features/interview/pages/Home.jsx - Report view
Frontend/src/features/interview/pages/Interview.jsx - Interview state
Frontend/src/features/interview/hooks/useInterview.js - Auth API
Frontend/src/features/auth/services/auth.api.js - Interview API
Frontend/src/features/interview/services/interview.api.js - HTTP client
Frontend/src/lib/apiClient.js
Backend API
- Express app
Backend/src/app.js - Auth routes
Backend/src/routes/auth.routes.js - Interview routes
Backend/src/routes/interview.routes.js - Auth handlers
Backend/src/controllers/auth.controller.js - Report handlers
Backend/src/controllers/interview.controller.js - JWT authorization
Backend/src/middlewares/auth.middleware.js - Resume upload
Backend/src/middlewares/file.middleware.js - PDF text extraction
Persistence
- User records
Backend/src/models/user.model.js - Token blacklist
Backend/src/models/blacklist.model.js - Interview reports
Backend/src/models/interviewReport.model.js
AI generation
- Report and resume generation
Backend/src/services/ai.service.js
Other components
- Candidate
- MongoDB
- Google Gemini
- PDF rendering
Connections 32
- Candidate → Application shell: uses
- Application shell → Page routing: renders
- Page routing → Login and register: routes
- Page routing → Prep dashboard: routes
- Page routing → Report view: routes
- Login and register → Auth state: uses
- Prep dashboard → Interview state: uses
- Report view → Interview state: uses
- Auth state → Auth API: requests
- Interview state → Interview API: requests
- Auth API → HTTP client: sends
- Interview API → HTTP client: sends
- HTTP client → Express app: calls API
- Express app → Auth routes: mounts
- Express app → Interview routes: mounts
- Auth routes → Auth handlers: dispatches
- Auth routes → JWT authorization: authorizes
- Interview routes → JWT authorization: authorizes
- Interview routes → Resume upload: accepts file
- Interview routes → Report handlers: dispatches
- Auth handlers → User records: reads/writes
- Auth handlers → Token blacklist: blacklists token
- JWT authorization → Token blacklist: checks token
- Report handlers → PDF text extraction: extracts text
- Report handlers → Report and resume generation: generates report
- Report handlers → Interview reports: reads/writes
- Report handlers → Report and resume generation: requests resume PDF
- Report and resume generation → Google Gemini: generates content
- Report and resume generation → PDF rendering: renders PDF
- User records → MongoDB: persists
- Token blacklist → MongoDB: persists
- Interview reports → MongoDB: persists