Spaces:
Sleeping
Sleeping
File size: 4,984 Bytes
6a8e2e2 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | # 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
|