How vinayakamoorthi-tech/resumeanalyser works
Purpose and deployment
PlacementAI is a placement-preparation SPA: resume analysis/building, AI mock interviews and GDs, aptitude practice, company tracking, offer comparison, and dashboard insights. React/Vite is deployed to Vercel; FastAPI is deployed to Render. Key deployment artifacts: frontend/vercel.json, backend/render.yaml.
Entry points and application boundary
The browser application starts at frontend/src/main.jsx, renders the routed shell in frontend/src/App.jsx, and communicates with a configurable backend URL via frontend/src/utils/config.js. The API starts in backend/main.py; it owns business endpoints and integrates authentication, persistence, and AI services.
Frontend feature composition
Page-level feature modules implement the product workflows rather than a separate frontend domain layer. Major routes include resume workflows (frontend/src/pages/ResumePage.jsx, frontend/src/pages/ResumeBuilderPage.jsx), interview/GD simulations (frontend/src/pages/InterviewPage.jsx, frontend/src/pages/GDPage.jsx), and readiness/tracking (frontend/src/pages/Dashboard.jsx, frontend/src/pages/CompanyTrackerPage.jsx, frontend/src/pages/AptitudePage.jsx). Offer and pricing flows are isolated in frontend/src/pages/OfferComparisonPage.jsx and frontend/src/pages/PricingPage.jsx.
Client state and browser integrations
Authentication token handling is centralized in frontend/src/utils/auth.js; login and registration UIs are frontend/src/pages/LoginPage.jsx and frontend/src/pages/RegisterPage.jsx. Cross-cutting UI state uses React contexts: theme persistence in frontend/src/context/ThemeContext.jsx and in-app notifications in frontend/src/context/NotificationContext.jsx. Resume PDF export uses client-side jsPDF; interview and GD voice input depend on the browser Web Speech API.
API, auth, and persistence
backend/main.py is the primary FastAPI composition point and API surface. Auth routes live in backend/routes/auth_routes.py, with JWT creation/validation and password hashing in backend/auth.py. SQLAlchemy initialization is in backend/database.py; durable entities are defined in backend/models/models.py. SQLite is the configured database boundary, storing users and application histories rather than requiring a separate managed database service.
AI processing boundary
AI-assisted operations—resume scoring/matching, cover-letter generation, interview questions/evaluation, GD participants/evaluation, and offer recommendations—are delegated from API handlers to backend/services/ai_service.py. That service calls Groq using GROQ_API_KEY and the llama-3.1-8b-instant model. Static aptitude content and company-tracker data remain application-side rather than AI-generated.
Primary flow
A user registers or logs in, receives a JWT, and the frontend attaches that credential for protected API requests. Feature pages submit user text, resume/JD data, answers, or offer details to FastAPI; the backend validates identity, optionally reads/writes SQLAlchemy records, invokes Groq when analysis is required, and returns structured results for presentation or client-side PDF export. External service boundaries are Groq AI, Razorpay sandbox checkout, Vercel hosting, and Render hosting.
Main entry points: ResumePage.jsx Feature pages · main.py FastAPI API · App.jsx Routed app shell · main.jsx Browser entry
Components 18
React SPA
Vite browser application deployed to Vercel.
- Browser entry
frontend/src/main.jsx - Routed app shell
frontend/src/App.jsx - Feature pages · Resume, interview, GD, dashboard, tracker, aptitude, offers, and pricing routes.
frontend/src/pages/ResumePage.jsx - Login and registration
frontend/src/pages/LoginPage.jsx - JWT client auth
frontend/src/utils/auth.js - API configuration
frontend/src/utils/config.js - Theme and notifications · Provides persisted theme and in-app notifications.
frontend/src/context/ThemeContext.jsx - Browser PDF and speech · jsPDF export and Web Speech voice input.
FastAPI API
Render-hosted application and business boundary.
- FastAPI API · Owns business endpoints and protected workflows.
backend/main.py - Auth routes
backend/routes/auth_routes.py - JWT and passwords
backend/auth.py - SQLite persistence · Stores users and application histories.
backend/database.py - Durable entities
backend/models/models.py - AI operations · Resume, interview, GD, cover-letter, and offer analysis.
backend/services/ai_service.py
External services
- Vercel hosting
frontend/vercel.json - Render hosting
backend/render.yaml - Groq Llama 3.1 · Called using GROQ_API_KEY and llama-3.1-8b-instant.
- Razorpay sandbox
Connections 19
- Vercel hosting → Browser entry: serves
- Browser entry → Routed app shell: renders
- Routed app shell → Feature pages: routes to
- Routed app shell → Login and registration: routes to
- Routed app shell → Theme and notifications: provides
- Login and registration → JWT client auth: stores JWT
- Feature pages → JWT client auth: uses credential
- Feature pages → API configuration: uses API URL
- Feature pages → Browser PDF and speech: exports PDF / voice input
- Feature pages → FastAPI API: protected API requests
- Feature pages → Razorpay sandbox: checkout
- Render hosting → FastAPI API: hosts
- FastAPI API → Auth routes: mounts
- Auth routes → JWT and passwords: creates and validates JWTs
- FastAPI API → JWT and passwords: authorizes requests
- FastAPI API → Durable entities: reads and writes
- Durable entities → SQLite persistence: mapped to
- FastAPI API → AI operations: delegates analysis
- AI operations → Groq Llama 3.1: AI inference