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-powered interview practice platform with resume analysis, personalized question generation, instant scoring, and detailed feedback.
- 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_KEYis 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
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
- 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)
| Key | Required | Description |
|---|---|---|
OPENAI_API_KEY | No | OpenAI API key for AI-powered questions & scoring. Without it, the app uses a built-in question bank and heuristic scoring. |
AUTH_SECRET | No | Secret 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
| Method | Path | Description |
|---|---|---|
| POST | /api/auth/register | Register new user |
| POST | /api/auth/login | Login |
| GET | /api/auth/me | Get current user |
| POST | /api/resume/upload | Upload resume text |
| GET | /api/resume/list | List user's resumes |
| GET | /api/resume/:id | Get resume content |
| DELETE | /api/resume/:id | Delete resume |
| POST | /api/sessions/create | Create session + generate questions |
| GET | /api/sessions/list | List user's sessions |
| GET | /api/sessions/:id | Get session details with Q&A |
| POST | /api/sessions/:id/answer | Submit answer & get score |
| POST | /api/sessions/:id/complete | Mark session complete |
| GET | /api/sessions/stats/dashboard | Dashboard aggregate stats |