Public
AI Interview Coach with resume, questions, scoring & dashboard
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.

🎯 AI Interview Coach

AI-powered interview practice platform with resume analysis, personalized question generation, instant scoring, and detailed feedback.

Features

  • Authentication — Register & login with secure token-based auth
  • Resume Upload — Upload resume text to generate personalized interview questions
  • AI Question Generation — Auto-generates interview questions tailored to the role and difficulty (uses OpenAI if OPENAI_API_KEY is set, otherwise falls back to a curated question bank)
  • AI Answer Scoring — Submit answers and receive instant 1-10 scoring with strengths, improvements, and actionable feedback
  • Dashboard — Track total sessions, completion rate, average score, and questions answered
  • Session History — Review past sessions with question-by-question breakdown
  • Modern Responsive UI — Dark-themed React SPA with Twind/Tailwind, works on mobile and desktop

Architecture

index.ts               — Hono HTTP entry point (API routes + SPA shell)
api/
  db.ts                — SQLite schema (users, resumes, sessions, questions, answers)
  auth.ts              — Token-based auth (register, login, middleware)
  ai.ts                — AI question generation + answer scoring (OpenAI + fallback)
  resume.ts            — Resume CRUD routes
  sessions.ts          — Session creation, answer submission, scoring, stats
app/
  App.tsx              — Main React app with state-based routing & nav
  components.tsx       — Shared UI: Button, Card, Input, ScoreRing, Badge, etc.
  pages/
    Login.tsx          — Login / Register page
    Dashboard.tsx      — Stats grid + session/resume tabs
    NewInterview.tsx   — Role & difficulty selector
    Interview.tsx      — Question-by-question practice with live scoring
    Results.tsx        — Session summary + per-question breakdown
    ResumeUpload.tsx   — File upload or paste resume text

Tech Stack

  • Backend: Hono on Val Town (Deno runtime)
  • Frontend: React 18 + Twind (Tailwind at runtime)
  • Database: Val Town built-in SQLite (Turso/libSQL)
  • AI: OpenAI GPT-4o-mini (optional — works without it)

Environment Variables

KeyRequiredDescription
OPENAI_API_KEYNoOpenAI API key for AI-powered questions & scoring. Without it, the app uses a built-in question bank and heuristic scoring.
AUTH_SECRETNoSecret key for password hashing & token signing. Without it, a default is used (set for production).

👉 Add OPENAI_API_KEY here: https://www.val.town/x/atchayaa/ai-interview-coach/environment-variables?key=OPENAI_API_KEY

👉 Add AUTH_SECRET here: https://www.val.town/x/atchayaa/ai-interview-coach/environment-variables?key=AUTH_SECRET

API Endpoints

MethodPathDescription
POST/api/auth/registerRegister new user
POST/api/auth/loginLogin
GET/api/auth/meGet current user
POST/api/resume/uploadUpload resume text
GET/api/resume/listList user's resumes
GET/api/resume/:idGet resume content
DELETE/api/resume/:idDelete resume
POST/api/sessions/createCreate session + generate questions
GET/api/sessions/listList user's sessions
GET/api/sessions/:idGet session details with Q&A
POST/api/sessions/:id/answerSubmit answer & get score
POST/api/sessions/:id/completeMark session complete
GET/api/sessions/stats/dashboardDashboard aggregate stats