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