Skip to content

Repository files navigation

InterviewCopilot

AI-powered mock interview SaaS for internship and placement prep.

Tech Stack

  • Next.js 15 (App Router, TypeScript strict mode)
  • MongoDB / Mongoose — database
  • Cloudinary — PDF resume storage
  • Gemini 1.5 Flash — question generation, answer evaluation, ATS analysis
  • JWT (access + refresh rotation) — authentication
  • Tailwind CSS — styling

Setup

npm install
cp .env.example .env.local   # fill in real values
npm run dev

Open http://localhost:3000.

Required environment variables

Variable Description
MONGODB_URI MongoDB Atlas connection string
JWT_ACCESS_SECRET Long random string (generate: openssl rand -base64 48)
JWT_REFRESH_SECRET Different long random string
ACCESS_TOKEN_EXPIRES_IN e.g. 15m
REFRESH_TOKEN_EXPIRES_IN e.g. 7d
CLOUDINARY_CLOUD_NAME From cloudinary.com → Dashboard
CLOUDINARY_API_KEY From cloudinary.com → Dashboard
CLOUDINARY_API_SECRET From cloudinary.com → Dashboard
GEMINI_API_KEY From aistudio.google.com
INTERVIEW_QUESTION_COUNT Number of questions per session (default: 5)

Implemented modules

Auth (/api/auth/*)

  • Register, login, logout, refresh, /me
  • JWT access + refresh token rotation with theft detection
  • Route protection via middleware.ts

Resumes (/api/resumes/*)

  • Upload PDF → Cloudinary + extract text via pdf-parse
  • List, get, delete, set-active
  • Per-user versioning, 10-resume cap

Interviews (/api/interviews/*)

  • Create session → Gemini generates tailored questions
  • Submit answers → Gemini evaluates immediately
  • Complete session → overall score computed
  • Full results view per session

ATS Scanner (/api/ats-scan)

  • Paste any job description → Gemini analyses keyword match
  • Returns score (0–100), matched keywords, missing keywords, suggestions

Profile (/api/users/me)

  • Update name and target companies
  • Change password (with current-password verification)

Pages

Route Description
/ Landing page
/login Login
/register Register
/dashboard Home: stats + recent sessions
/resumes Manage resume versions
/interviews All interview sessions
/interviews/new Start a new interview
/interviews/[id] Live interview session
/interviews/[id]/results Post-interview results + feedback
/ats-scanner ATS keyword analysis
/profile Edit profile + change password

Scripts

npm run dev        # start dev server
npm run build      # production build
npm run typecheck  # TypeScript check without building
npm run lint       # ESLint

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages