How mohamed-imran-12/resume-analyser works
Purpose and deployment
Resume Analyzer is a full-stack application that accepts resumes, uses Gemini AI to produce evaluation/skill/improvement insights, and retrieves job suggestions from Adzuna. It also supports local and Google authentication, email verification, password reset, and analysis history. Spring Boot is the production entry point and serves the compiled React SPA.
• src/main/java/com/ai/Resume/analyser/ResumeAnalyserApplication.java
• src/main/resources/static/index.html
• Dockerfile, render.yaml
Client application
The editable frontend is a Vite/React SPA. main.jsx mounts the app; shared application context coordinates client-side state. Pages cover landing, login, password reset, resume upload, and analysis result views. Production assets are copied into Spring Boot static resources rather than hosted separately.
• frontend src/src/main.jsx
• frontend src/src/App.jsx
• frontend src/src/appcontext.jsx
• frontend src/src/upload/upload.jsx
• frontend src/src/analyse/analyse.jsx
HTTP and application boundary
Spring MVC controllers expose the backend surface and separate general application, frontend/static routing, and security-related flows. Service classes hold the orchestration boundary between requests, persistence, AI/job APIs, and authentication outcomes.
• src/main/java/com/ai/Resume/analyser/controller/appController.java
• src/main/java/com/ai/Resume/analyser/controller/securityController.java
• src/main/java/com/ai/Resume/analyser/service/appService.java
• src/main/java/com/ai/Resume/analyser/service/securityService.java
Resume analysis and job enrichment
The primary user flow is frontend upload/request → application service → Gemini analysis → structured result DTO returned to the UI. The same application layer integrates Adzuna job search and maps external job/company/location data into internal models. Gemini model/API behavior is centralized in the application service, making it the replacement point for a different AI provider.
• src/main/java/com/ai/Resume/analyser/service/appService.java
• src/main/java/com/ai/Resume/analyser/model/resultsDto.java
• src/main/java/com/ai/Resume/analyser/model/JobSearchResponse.java
• src/main/java/com/ai/Resume/analyser/model/Job.java
Identity and access control
Spring Security configuration and a JWT filter protect authenticated backend operations. Authentication can use credentials or Google OAuth2; JWT creation/validation is isolated in the JWT service. Success/failure handlers likely bridge OAuth/security outcomes into application redirects or responses.
• src/main/java/com/ai/Resume/analyser/configuration/securityConfiguration.java
• src/main/java/com/ai/Resume/analyser/jwt/jwtFilter.java
• src/main/java/com/ai/Resume/analyser/jwt/jwtService.java
• src/main/java/com/ai/Resume/analyser/service/successHandler.java
Verification and recovery
Registration/email verification and password-reset workflows persist OTP-related state, invoke Brevo through the mail service, and render dedicated HTML email templates. This is a distinct external-service boundary from core authentication.
• src/main/java/com/ai/Resume/analyser/mail/mailService.java
• src/main/java/com/ai/Resume/analyser/repository/otpVerifyRepo.java
• src/main/resources/templates/verify-otp.html
• src/main/resources/templates/reset-otp.html
Persistence and infrastructure
MySQL is the required datastore, accessed through repositories for users, OTP verification, and prior analysis/history records. Runtime configuration supplies MySQL, Google OAuth, Gemini, Brevo, Adzuna, and JWT secrets. Maven builds the Java runtime; Node/Vite builds frontend artifacts.
• src/main/java/com/ai/Resume/analyser/repository/usersTableRepo.java
• src/main/java/com/ai/Resume/analyser/repository/prevTable.java
• src/main/java/com/ai/Resume/analyser/model/usersTable.java
• src/main/resources/application.properties
• pom.xml
Main entry points: appService.java Analysis and jobs service · securityService.java Authentication service · App.jsx App and client state · appController.java Application controller
Components 21
React client
- Vite React SPA · Editable single-page client application.
frontend src/src/main.jsx - App and client state
frontend src/src/App.jsx - Resume upload
frontend src/src/upload/upload.jsx - Analysis results
frontend src/src/analyse/analyse.jsx
Spring Boot backend
- Spring Boot application · Serves the compiled SPA and backend APIs.
src/main/java/com/ai/Resume/analyser/ResumeAnalyserApplication.java - Compiled SPA assets
src/main/resources/static/index.html - Application controller
src/main/java/com/ai/Resume/analyser/controller/appController.java - Analysis and jobs service · Orchestrates resume analysis and job enrichment.
src/main/java/com/ai/Resume/analyser/service/appService.java - Analysis and job DTOs
src/main/java/com/ai/Resume/analyser/model/resultsDto.java
Identity and security
- Security controller
src/main/java/com/ai/Resume/analyser/controller/securityController.java - Authentication service
src/main/java/com/ai/Resume/analyser/service/securityService.java - Security configuration
src/main/java/com/ai/Resume/analyser/configuration/securityConfiguration.java - JWT filter and service
src/main/java/com/ai/Resume/analyser/jwt/jwtFilter.java - Verification mail service · Sends verification and reset OTP emails.
src/main/java/com/ai/Resume/analyser/mail/mailService.java
Data and external services
- MySQL · Stores users, OTP state, and analysis history.
- User repository
src/main/java/com/ai/Resume/analyser/repository/usersTableRepo.java - Analysis history repository
src/main/java/com/ai/Resume/analyser/repository/prevTable.java - OTP repository
src/main/java/com/ai/Resume/analyser/repository/otpVerifyRepo.java - Gemini API
- Adzuna API
- Brevo
Connections 23
- Vite React SPA → App and client state: mounts
- App and client state → Resume upload: renders
- App and client state → Analysis results: renders
- Vite React SPA → Compiled SPA assets: builds into
- Spring Boot application → Compiled SPA assets: serves
- Resume upload → Application controller: uploads resume
- Analysis results → Application controller: requests results
- Application controller → Analysis and jobs service: delegates
- Analysis and jobs service → Gemini API: analyzes resume
- Analysis and jobs service → Adzuna API: searches jobs
- Analysis and jobs service → Analysis and job DTOs: returns
- Analysis and jobs service → Analysis history repository: stores history
- Security controller → Authentication service: delegates
- Security configuration → JWT filter and service: installs
- JWT filter and service → Security controller: protects
- Authentication service → JWT filter and service: issues and validates
- Authentication service → User repository: manages users
- Authentication service → OTP repository: persists OTPs
- Authentication service → Verification mail service: sends verification/reset
- Verification mail service → Brevo: delivers email
- User repository → MySQL: persists
- Analysis history repository → MySQL: persists
- OTP repository → MySQL: persists