Spaces:
Sleeping
Sleeping
| # 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 | |