# AI InterviewMentor — Hackathon Task Breakdown ## Phase 1: Project Scaffolding - [ ] Initialize frontend (Vite + React + TypeScript) - [ ] Install frontend deps (tailwindcss, react-router-dom, zustand) - [ ] Configure Tailwind with dark theme - [ ] Initialize backend (FastAPI project structure) - [ ] Install backend deps (requirements.txt) - [ ] Create `.env.example` with all required variables - [ ] Create Dockerfile (multi-stage: Node build + Python runtime) - [ ] Set up NeonDB and run schema migrations ## Phase 2: Auth System - [ ] `backend/auth/password.py` — bcrypt hash + verify - [ ] `backend/auth/jwt.py` — sign + verify access/refresh tokens - [ ] `backend/db/connection.py` — NeonDB async pool (asyncpg) - [ ] `backend/db/queries.py` — user CRUD + refresh token queries - [ ] `backend/routers/auth.py` — signup, login, refresh, logout endpoints - [ ] `backend/main.py` — FastAPI app with lifespan, router registration - [ ] `frontend/src/store/authStore.ts` — Zustand auth store - [ ] `frontend/src/api/auth.ts` — login, signup, refresh, logout API calls - [ ] `frontend/src/api/client.ts` — base fetch wrapper with auto-refresh - [ ] `frontend/src/pages/Login.tsx` - [ ] `frontend/src/pages/Signup.tsx` — with role selector + class code input - [ ] `frontend/src/components/shared/ProtectedRoute.tsx` - [ ] `frontend/src/components/shared/Navbar.tsx` - [ ] `frontend/src/App.tsx` — React Router setup ## Phase 3: Instructor — Batch & Topic Management - [ ] `backend/routers/batches.py` — create batch, get batch with class code - [ ] `backend/routers/topics.py` — add topic, list topics, unlock/lock topic - [ ] `frontend/src/pages/InstructorDashboard.tsx` — batch info, class code display, topic list - [ ] `frontend/src/components/instructor/StatCard.tsx` - [ ] `frontend/src/api/topics.ts` ## Phase 4: Question Bank Upload - [ ] `backend/routers/upload.py` — parse CSV, validate, insert questions into DB - [ ] `frontend/src/pages/Upload.tsx` — CSV upload page - [ ] `frontend/src/components/instructor/UploadZone.tsx` — drag-and-drop CSV zone - [ ] `frontend/src/api/upload.ts` ## Phase 5: LangGraph Interview Engine - [ ] `backend/graph/state.py` — InterviewState TypedDict - [ ] `backend/prompts.py` — all prompt builders (ask, evaluate, counter, summarize, report) - [ ] `backend/graph/nodes.py` — ask_question, evaluate_answer, counter_question, summarize, generate_report - [ ] `backend/graph/graph.py` — graph builder, conditional edges, compile - [ ] `backend/checkpointer.py` — AsyncPostgresSaver setup - [ ] `backend/routers/interview.py` — /interview/start, /interview/turn, /interview/state ## Phase 6: Student Interview UI - [ ] `frontend/src/store/interviewStore.ts` — Zustand interview store - [ ] `frontend/src/api/interview.ts` — start, turn, state API calls - [ ] `frontend/src/pages/Interview.tsx` — interview chat page - [ ] `frontend/src/components/interview/ChatWindow.tsx` - [ ] `frontend/src/components/interview/MessageBubble.tsx` - [ ] `frontend/src/components/interview/TypeInput.tsx` - [ ] `frontend/src/components/interview/ProgressBar.tsx` ## Phase 7: Reports & Feedback - [ ] `backend/routers/sessions.py` — get session detail + feedback - [ ] `frontend/src/api/sessions.ts` - [ ] `frontend/src/pages/Report.tsx` — score display + feedback breakdown - [ ] `frontend/src/components/report/ScoreRing.tsx` - [ ] `frontend/src/components/report/FeedbackCard.tsx` - [ ] `frontend/src/components/report/SummaryBlock.tsx` ## Phase 8: Student Dashboard - [ ] `frontend/src/pages/StudentDashboard.tsx` — unlocked topics + past attempts - [ ] `frontend/src/components/student/TopicChip.tsx` - [ ] `frontend/src/components/student/AttemptRow.tsx` - [ ] `frontend/src/api/topics.ts` — student topic list endpoint ## Phase 9: Instructor Analytics - [ ] `backend/routers/instructor.py` — dashboard stats, student detail endpoints - [ ] `frontend/src/pages/InstructorDashboard.tsx` — class stats + student score table - [ ] `frontend/src/pages/StudentDetail.tsx` — per-student attempt history - [ ] `frontend/src/components/instructor/StudentRow.tsx` - [ ] `frontend/src/components/instructor/GapReport.tsx` ## Phase 10: Integration & Deployment - [ ] Wire all frontend routes in App.tsx - [ ] Static file mount in FastAPI (must be last) - [ ] Test Docker build locally - [ ] Deploy to Hugging Face Spaces - [ ] End-to-end test: signup → create batch → upload CSV → student joins → interview → report - [ ] Verify session recovery (tab close + reopen) --- ## Priority Order If time is tight, ship in this order: 1. **Auth + scaffolding** (Phases 1-2) — foundation 2. **Instructor batch/topic/upload** (Phases 3-4) — data entry 3. **LangGraph engine + interview UI** (Phases 5-6) — core product 4. **Reports** (Phase 7) — completes the student flow 5. **Dashboards** (Phases 8-9) — analytics layer 6. **Deploy** (Phase 10) — ship it