samar m
Add architecture docs and Phase 0 scaffolding design spec
6a8e2e2
# 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