PrepWise helps students and freshers practice mock interviews with AI-generated questions and receive structured, actionable feedback powered by Google Gemini.
- AI Question Generation — Gemini generates role-specific interview questions (HR, Technical Basics, Technical Advanced)
- Timed Interview Sessions — Realistic interview experience with per-question timers (2:45 per question)
- AI Evaluation — Detailed scoring and feedback on each answer with ideal answer suggestions
- Dynamic Feedback — Personalized strengths and improvement areas based on actual performance
- Performance Reports — Downloadable PDF reports with per-question breakdown, scores, and tips
- Analytics Dashboard — Bento grid layout with performance charts, score analysis, category breakdowns, and insights
- Session Persistence — Each interview session stored permanently in Firestore with unique IDs
- Dashboard Stats — Real-time total interviews, average score, best score, and recent sessions
- Authentication — Email/password + Google sign-in via Firebase Auth
- Route Protection — Middleware-based auth guards on all protected pages
- Mobile Responsive — Full mobile support with hamburger navigation
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router) |
| Language | TypeScript |
| Styling | Tailwind CSS 4 |
| Auth | Firebase Authentication |
| Database | Cloud Firestore |
| AI | Google Gemini 2.0 Flash |
| jsPDF + html2canvas | |
| Icons | Lucide React |
| Deployment | Vercel (free tier) |
- Node.js 18+
- Firebase project with Auth + Firestore enabled
- Google AI Studio API key (free tier)
# Clone the repository
git clone https://github.com/Shriya-25/Prepwise.git
cd Prepwise
# Install dependencies
npm install
# Copy environment variables
cp .env.example .env.local
# Fill in your Firebase and Gemini API keys
# Run development server
npm run devOpen http://localhost:3000 in your browser.
See .env.example for all required variables. At minimum you need:
- Firebase client config (6
NEXT_PUBLIC_FIREBASE_*vars) GEMINI_API_KEYfor AI features
Deploy these rules in Firebase Console → Firestore → Rules:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /sessions/{sessionId} {
allow read: if request.auth != null && resource.data.userId == request.auth.uid;
allow create: if request.auth != null && request.resource.data.userId == request.auth.uid;
allow update, delete: if false;
}
}
}
├── app/
│ ├── (protected)/ # Auth-required pages
│ │ ├── dashboard/ # Post-login home with stats
│ │ ├── setup/ # Interview configuration
│ │ ├── interview/ # Live interview session
│ │ ├── processing/ # AI evaluation + Firestore save
│ │ ├── feedback/ # Quick score summary
│ │ ├── report/ # Detailed per-question report
│ │ ├── analytics/ # Performance charts & history
│ │ ├── profile/ # User profile management
│ │ └── aptitude/ # Learning resources
│ ├── api/
│ │ ├── generate-questions/ # Gemini question generation
│ │ └── evaluate/ # Gemini answer evaluation
│ ├── components/
│ │ ├── site-navbar.tsx # Global navigation
│ │ └── site-footer.tsx # Global footer
│ ├── login/
│ ├── register/
│ └── page.tsx # Landing page
├── lib/
│ ├── firebase.ts # Client-side Firebase init
│ ├── firebase-admin.ts # Server-side Firestore (optional)
│ ├── gemini.ts # Gemini AI service
│ └── auth-session.ts # Server-side auth helpers
├── utils/
│ └── interview-setup.ts # Shared role options
├── firestore.rules # Firestore security rules
├── middleware.ts # Route protection
└── .env.example
Landing Page → Login/Register → Dashboard
↓
Setup Interview (choose role + company)
↓
AI Generates 10 Questions (HR + Technical)
↓
Answer Questions (timed, 2:45 each)
↓
Processing (AI evaluates + saves session to Firestore)
↓
Feedback Summary (score + badge)
↓
Detailed Report (per-question breakdown + PDF download)
↓
Dashboard & Analytics (all sessions tracked permanently)
Each session stored in Firestore contains:
userId— Owner of the sessionrole— Target job rolecompany— Target company (optional)overallScore— 0-100 scorescores— Per-category breakdown (HR, Technical Basics, Technical Advanced)strengths— AI-generated key strengthsimprovements— AI-generated areas to improvesummary— Overall performance summaryrecommendedNextSteps— Actionable next stepsquestions— Full Q&A with scores, feedback, and ideal answerscreatedAt— TimestampquestionsCount— Number of questions
Deploy to Vercel with zero configuration:
npm run build # Verify build passes
# Then connect your GitHub repo to VercelSet all .env.example variables in Vercel's Environment Variables settings.
MIT