AI-powered career growth platform for resume analysis, GitHub profile evaluation, job tracking, and mock interview preparation.
The website is live here: 👉 CareerForge AI
CareerForge AI is a full-stack AI-powered career growth platform built with Next.js App Router.
The platform brings multiple career-development tools into a single dashboard, allowing users to manage and improve different aspects of their career journey.
Users can:
- Create an account and securely authenticate.
- Upload and analyze resumes using AI.
- Get ATS-style resume scoring and improvement suggestions.
- Analyze GitHub profiles and repositories.
- Track job applications and their current status.
- Practice AI-powered mock interviews.
- Review interview performance and feedback.
- Manage account and application settings.
The project is designed with a feature-based architecture and follows modern full-stack development practices.
The goal of CareerForge AI is to create a single intelligent career platform instead of requiring students and developers to use multiple disconnected tools.
CareerForge AI aims to combine:
- Resume Intelligence
- ATS Optimization
- GitHub Analysis
- Job Tracking
- AI Interview Preparation
- Career Insights
- Personalized Recommendations
into one scalable SaaS-style application.
- User signup
- User login
- Credentials authentication
- Password hashing using bcryptjs
- Zod validation
- Duplicate email prevention
- Auth.js v5 session management
- Protected dashboard routes
- Logout functionality
Users can upload their resume as a PDF and receive AI-powered analysis.
Features include:
- PDF upload
- File type validation
- File size validation
- Vercel Blob storage
- PDF text extraction
- AI-powered resume analysis
- ATS-style scoring
- Score breakdown
- Strength identification
- Weakness identification
- Improvement suggestions
- Persistent resume analysis
The resume analysis pipeline uses Google Gemini to analyze extracted resume content.
The system can evaluate areas such as:
- Resume quality
- Skills
- Experience
- Projects
- Education
- Keywords
- ATS compatibility
- Areas requiring improvement
The generated structured analysis is normalized before being stored in the database.
Users can enter their GitHub username and receive an AI-powered profile analysis.
The system analyzes:
- GitHub profile
- Repositories
- Stars
- Forks
- Languages
- Original repositories
- Repository activity
- Technical strengths
- Missing areas
Gemini then generates structured career-oriented feedback.
CareerForge AI provides a job application management system.
Users can:
- Add job applications
- Edit applications
- Delete applications
- Track application status
- View application statistics
Supported statuses include:
- Applied
- Interview
- Offer
- Rejected
The dashboard provides derived statistics from the stored job applications.
Users can practice interviews using AI-generated questions.
Interview flow includes:
- Select interview role.
- Select difficulty.
- Select question count.
- Start interview.
- Receive AI-generated questions.
- Submit answers.
- Receive AI evaluation.
- View question-level analysis.
- Calculate final score.
- Store interview history.
The application includes a dedicated settings area where users can manage their account and application preferences.
| Technology | Purpose |
|---|---|
| Next.js 16 | Full-stack React framework |
| React 19 | UI development |
| TypeScript | Type safety |
| Tailwind CSS v4 | Styling |
| shadcn/ui | Reusable UI components |
| React Hook Form | Form management |
| Zod | Validation |
| Lucide React | Icons |
| Technology | Purpose |
|---|---|
| Next.js Server Actions | Server-side business logic |
| Auth.js v5 | Authentication and sessions |
| Drizzle ORM | Database access |
| PostgreSQL | Relational database |
| Neon | PostgreSQL hosting |
| bcryptjs | Password hashing |
| Technology | Purpose |
|---|---|
| Google Gemini | AI analysis |
@google/genai |
Gemini SDK |
| unpdf | PDF text extraction |
| Technology | Purpose |
|---|---|
| Vercel Blob | Resume PDF storage |
CareerForge AI follows a modular full-stack architecture built around the Next.js App Router.
%%{init: {"themeVariables": {"fontSize": "12px"}, "flowchart": {"nodeSpacing": 15, "rankSpacing": 20, "padding": 5}}}%%
flowchart TD
USER[User Browser]
USER --> NEXT[Next.js 16 App Router]
NEXT --> MW[Middleware]
MW --> AUTH_ROUTES[Auth Routes]
MW --> DASHBOARD[Protected Dashboard]
AUTH_ROUTES --> AUTH_UI[Login / Signup UI]
AUTH_UI --> FORM[React Hook Form + Zod]
FORM --> AUTH_ACTIONS[Authentication Server Actions]
AUTH_ACTIONS --> AUTH[Auth.js v5]
AUTH --> DB[(Neon PostgreSQL)]
DASHBOARD --> UI[Dashboard UI]
UI --> FEATURES[Feature Modules]
FEATURES --> SERVER_ACTIONS[Server Actions]
SERVER_ACTIONS --> DRIZZLE[Drizzle ORM]
DRIZZLE --> DB
SERVER_ACTIONS --> BLOB[Vercel Blob]
SERVER_ACTIONS --> PDF[PDF Extraction]
PDF --> GEMINI[Google Gemini AI]
SERVER_ACTIONS --> GITHUB[GitHub REST API]
GITHUB --> GEMINI
SERVER_ACTIONS --> GEMINI
GEMINI --> SERVER_ACTIONS
SERVER_ACTIONS --> DB
DB --> UI
flowchart LR
USER[User]
USER --> AUTH[Authentication]
AUTH --> DASH[Dashboard]
DASH --> RESUME[Resume Analyzer]
DASH --> GITHUB[GitHub Analyzer]
DASH --> JOBS[Job Tracker]
DASH --> INTERVIEW[AI Interview]
DASH --> SETTINGS[Settings]
RESUME --> STORAGE[Vercel Blob]
RESUME --> PDF[PDF Parser]
PDF --> AI[Gemini AI]
AI --> RESUME_DB[(PostgreSQL)]
GITHUB --> API[GitHub API]
API --> AI
GITHUB --> GITHUB_DB[(PostgreSQL)]
JOBS --> JOB_DB[(PostgreSQL)]
INTERVIEW --> AI
INTERVIEW --> INTERVIEW_DB[(PostgreSQL)]
SETTINGS --> USER_DB[(PostgreSQL)]
%%{init: {"themeVariables": {"fontSize": "12px"}, "flowchart": {"nodeSpacing": 15, "rankSpacing": 20, "padding": 5}}}%%
flowchart TD
LOGIN[Login / Signup]
LOGIN --> FORM[React Hook Form]
FORM --> ZOD[Zod Validation]
ZOD --> ACTION[Server Action]
ACTION --> DB[(PostgreSQL)]
DB --> USER_CHECK{User Exists?}
USER_CHECK -->|No| ERROR[Invalid Credentials]
USER_CHECK -->|Yes| BCRYPT[bcrypt Password Verification]
BCRYPT --> PASSWORD{Password Correct?}
PASSWORD -->|No| ERROR
PASSWORD -->|Yes| AUTH[Auth.js signIn]
AUTH --> SESSION[Session Created]
SESSION --> DASHBOARD[Protected Dashboard]
%%{init: {"themeVariables": {"fontSize": "12px"}, "flowchart": {"nodeSpacing": 15, "rankSpacing": 20, "padding": 5}}}%%
flowchart TD
USER[User]
USER --> UPLOAD[Upload Resume PDF]
UPLOAD --> VALIDATE[Validate File]
VALIDATE --> STORAGE[Vercel Blob]
VALIDATE --> BUFFER[Read PDF Buffer]
BUFFER --> EXTRACT[Extract Text using unpdf]
EXTRACT --> GEMINI[Google Gemini]
GEMINI --> JSON[Structured AI Response]
JSON --> NORMALIZE[Normalize Analysis]
NORMALIZE --> DB[(PostgreSQL)]
DB --> DASHBOARD[Resume Dashboard]
DASHBOARD --> SCORE[ATS Score]
DASHBOARD --> STRENGTHS[Strengths]
DASHBOARD --> WEAKNESSES[Weaknesses]
DASHBOARD --> SUGGESTIONS[Suggestions]
%%{init: {"themeVariables": {"fontSize": "12px"}, "flowchart": {"nodeSpacing": 15, "rankSpacing": 20, "padding": 5}}}%%
flowchart TD
USER[User]
USER --> INPUT[GitHub Username]
INPUT --> ACTION[GitHub Server Action]
ACTION --> API[GitHub REST API]
API --> PROFILE[Profile Data]
API --> REPOS[Repository Data]
PROFILE --> AGGREGATE[Aggregate Statistics]
REPOS --> AGGREGATE
AGGREGATE --> GEMINI[Google Gemini AI]
GEMINI --> ANALYSIS[Structured GitHub Analysis]
ANALYSIS --> DB[(PostgreSQL)]
DB --> UI[GitHub Dashboard]
UI --> SCORE[Profile Score]
UI --> STRENGTHS[Strengths]
UI --> MISSING[Missing Skills]
UI --> SUGGESTIONS[Suggestions]
%%{init: {"themeVariables": {"fontSize": "12px"}, "flowchart": {"nodeSpacing": 15, "rankSpacing": 20, "padding": 5}}}%%
flowchart TD
USER[User]
USER --> CONFIG[Role + Difficulty + Question Count]
CONFIG --> CREATE[Create Interview]
CREATE --> GEMINI[Google Gemini]
GEMINI --> QUESTIONS[Generate Questions]
QUESTIONS --> USER_ANSWER[User Answers]
USER_ANSWER --> EVALUATE[AI Evaluation]
EVALUATE --> ANALYSIS[Question Analysis]
ANALYSIS --> SCORE[Score Calculation]
SCORE --> COMPLETE[Interview Completed]
COMPLETE --> DB[(PostgreSQL)]
DB --> HISTORY[Interview History]
%%{init: {"themeVariables": {"fontSize": "12px"}, "flowchart": {"nodeSpacing": 15, "rankSpacing": 20, "padding": 5}}}%%
flowchart TD
USER[User]
USER --> JOB_FORM[Job Form]
JOB_FORM --> VALIDATE[Validation]
VALIDATE --> ACTION[Server Action]
ACTION --> DB[(PostgreSQL)]
DB --> LIST[Job Applications]
LIST --> STATUS[Application Status]
STATUS --> APPLIED[Applied]
STATUS --> INTERVIEW[Interview]
STATUS --> OFFER[Offer]
STATUS --> REJECTED[Rejected]
DB --> STATS[Dashboard Statistics]
The main database schema is maintained in:
frontend/db/schema.ts
Main tables include:
users
accounts
sessions
verification_tokens
resumes
jobs
interviews
users
│
├── resumes
│
├── jobs
│
├── interviews
│
├── accounts
│
└── sessions
The system uses PostgreSQL with Drizzle ORM for type-safe database operations.
careerforge-ai/
│
├── backend/
│ └── Reserved for future dedicated backend service
│
├── docs/
│ └── Documentation assets
│
├── frontend/
│ │
│ ├── app/
│ │ ├── (auth)/
│ │ │ ├── login/
│ │ │ └── signup/
│ │ │
│ │ ├── api/
│ │ │ └── auth/
│ │ │
│ │ ├── dashboard/
│ │ │ ├── github/
│ │ │ ├── interview/
│ │ │ ├── jobs/
│ │ │ ├── resume/
│ │ │ └── settings/
│ │ │
│ │ ├── layout.tsx
│ │ └── page.tsx
│ │
│ ├── ai/
│ │ └── AI client configuration
│ │
│ ├── components/
│ │ └── Shared UI components
│ │
│ ├── config/
│ │ └── Application configuration
│ │
│ ├── constants/
│ │ └── Static constants
│ │
│ ├── db/
│ │ ├── index.ts
│ │ └── schema.ts
│ │
│ ├── drizzle/
│ │ └── Database migrations
│ │
│ ├── features/
│ │ ├── auth/
│ │ ├── resume/
│ │ ├── jobs/
│ │ ├── github/
│ │ ├── interview/
│ │ └── settings/
│ │
│ ├── hooks/
│ │ └── Reusable React hooks
│ │
│ ├── lib/
│ │ ├── auth/
│ │ ├── blob/
│ │ └── pdf/
│ │
│ ├── services/
│ │ └── Service layer utilities
│ │
│ ├── types/
│ │ └── Type definitions
│ │
│ ├── utils/
│ │ └── Shared utilities
│ │
│ ├── emails/
│ │ └── Email templates
│ │
│ ├── middleware.ts
│ ├── package.json
│ └── .env.local
│
└── README.md
- Signup
- Login
- Credentials authentication
- Password hashing
- Session management
- Logout
- Protected routes
- Dashboard overview
- Navigation sidebar
- Navbar
- Profile dropdown
- Notifications UI
- Quick access to modules
- Career statistics
- Resume upload
- PDF validation
- Vercel Blob storage
- PDF parsing
- AI analysis
- ATS scoring
- Resume feedback
- Create job application
- Update job application
- Delete job application
- Track status
- Job statistics
- GitHub profile lookup
- Repository analysis
- GitHub statistics
- AI scoring
- Strength analysis
- Missing skill analysis
- Improvement suggestions
- AI-generated questions
- Role selection
- Difficulty selection
- Answer submission
- AI evaluation
- Question-level feedback
- Final score
- Interview history
- User settings
- Profile management
- Application preferences
/login
/signup
/dashboard
/dashboard/resume
/dashboard/jobs
/dashboard/github
/dashboard/interview
/dashboard/settings
/api/auth/*
A typical request follows this architecture:
User
↓
Next.js App Router
↓
Middleware
↓
Protected Route
↓
Client Component
↓
Server Action
↓
Validation
↓
Business Logic
↓
Drizzle ORM / External API / AI
↓
PostgreSQL / Blob Storage
↓
Server Response
↓
UI Update
CareerForge AI follows several security-oriented practices:
- Server-side authentication
- Protected dashboard routes
- Password hashing with bcryptjs
- Zod input validation
- Server Actions for sensitive operations
- Environment variables for secrets
- Database-level persistence
- File type validation
- File size validation
- Authentication session checks
Sensitive API keys and database credentials are never intended to be committed to the repository.
Create:
frontend/.env.local
Example:
DATABASE_URL="your_postgresql_connection_string"
GEMINI_API_KEY="your_gemini_api_key"
AUTH_SECRET="your_auth_secret"
NEXTAUTH_URL="http://localhost:3000"
BLOB_READ_WRITE_TOKEN="your_vercel_blob_token"Do not commit .env.local to GitHub.
git clone <repository-url>cd careerforge-ai/frontendnpm installCreate:
.env.local
and add the required environment variables.
npm run db:migratenpm run devThe application will be available at:
http://localhost:3000
Run these commands inside the frontend directory.
| Command | Description |
|---|---|
npm run dev |
Start development server |
npm run build |
Create production build |
npm run start |
Start production server |
npm run lint |
Run ESLint |
npm run db:generate |
Generate Drizzle migrations |
npm run db:migrate |
Apply database migrations |
npm run db:studio |
Open Drizzle Studio |
This project demonstrates practical knowledge of:
- Modern Full Stack Development
- Next.js App Router
- React
- TypeScript
- Tailwind CSS
- Server Actions
- Authentication
- Authorization
- Database Design
- PostgreSQL
- Drizzle ORM
- API Integration
- AI Integration
- File Upload Systems
- PDF Processing
- SaaS Architecture
- Feature-based Architecture
- Security Best Practices
- Production Deployment
- Scalable Application Design
CareerForge AI is designed as more than a simple CRUD project.
It combines:
Authentication
+
Database
+
File Storage
+
PDF Processing
+
External APIs
+
Generative AI
+
Dashboard
+
Job Tracking
+
Interview System
=
Complete Career Platform
The project demonstrates how different full-stack technologies can work together to build a real-world SaaS-style application.
The long-term architecture is designed to support additional services:
flowchart TD
CLIENT[Web Client]
CLIENT --> NEXT[Next.js Application]
NEXT --> AUTH[Auth Service]
NEXT --> API[Application Services]
API --> DB[(PostgreSQL)]
API --> STORAGE[Object Storage]
API --> AI[AI Service]
API --> GITHUB[GitHub API]
API --> EMAIL[Email Service]
API --> PAYMENTS[Payment Service]
API --> QUEUE[Background Jobs]
QUEUE --> REPORTS[Reports]
QUEUE --> EMAIL
NEXT --> ANALYTICS[Analytics]
NEXT --> MONITORING[Monitoring]
This allows CareerForge AI to gradually evolve from a monolithic Next.js application into a more scalable service-oriented architecture when required.
Avinash Kumar
B.Tech CSE (DSAI)
IIIT Ranchi
Building CareerForge AI 🚀
- GitHub: https://github.com/Avinash-sdbegin
- LinkedIn: https://linkedin.com/in/avinash-kumar-32020232a/
This project is licensed under the terms specified in the
LICENSE file.
Built with ❤️ by AVINASH KUMAR using Next.js, TypeScript, PostgreSQL, Drizzle ORM .