Lexiverse
Lexiverse - 영어 학습자를 위한 AI 기반 문맥 독해 엔진
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Real-time AI voice interviewer with live transcripts, call state, and feedback built with Next.js and Vapi.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Practice job interviews out loud with an AI interviewer, then get scored, written feedback in seconds.
The app is a single Next.js App Router project with no separate backend. The browser streams audio to Vapi, which handles speech-to-text, the interviewer LLM and text-to-speech. When the "generate" voice workflow has collected your preferences, Vapi calls a webhook in this app that asks Gemini for questions and stores them in Firestore. When an interview ends, a server action sends the transcript to Gemini with a typed zod schema and saves the structured feedback.
flowchart LR
B[Browser<br/>Next.js + Vapi Web SDK] <-- voice over WebRTC --> V[(Vapi<br/>STT · LLM · TTS)]
V -- workflow webhook --> W["/api/vapi/generate"]
B -- transcript --> SA[Server action<br/>createFeedback]
W --> C[lib/interview<br/>prompts · parsing · schemas]
SA --> C
C --> G[(Gemini 2.0 Flash)]
W --> F[(Firestore)]
SA --> F
Sequence diagrams for both voice flows, the auth model and the data model are in docs/ARCHITECTURE.md.
| Layer | Tools |
|---|---|
| Frontend | Next.js 15 (App Router), React 19, TypeScript, Tailwind CSS 4, shadcn/ui |
| Voice | Vapi (Deepgram Nova-2 STT, GPT-4 interviewer, ElevenLabs TTS) |
| LLM | Google Gemini 2.0 Flash via the Vercel AI SDK (generateText, generateObject) |
| Auth and data | Firebase Auth with httpOnly session cookies, Firestore |
| Validation | zod for request bodies and structured LLM output |
| Quality | Vitest, ESLint, GitHub Actions |
Prerequisites: Node.js 20.19+ or 22.12+, a Firebase project (Auth with email/password, Firestore), a Vapi account and a Gemini API key.
git clone https://github.com/obro79/mock_interview_ai.git
cd mock_interview_ai
npm install
cp .env.example .env.local # then fill in the values
npm run dev # http://localhost:3000
| Variable | Where it comes from |
|---|---|
NEXT_PUBLIC_FIREBASE_* | Firebase console → Project settings → Your apps |
FIREBASE_PROJECT_ID, FIREBASE_CLIENT_EMAIL, FIREBASE_PRIVATE_KEY | Firebase console → Service accounts → Generate new private key |
GOOGLE_GENERATIVE_AI_API_KEY | Google AI Studio |
NEXT_PUBLIC_VAPI_WEB_TOKEN | Vapi dashboard → API keys (public key) |
NEXT_PUBLIC_VAPI_WORKFLOW_ID | Vapi dashboard → your "generate interview" workflow |
The Vapi workflow's API request node should POST to https://<your-host>/api/vapi/generate with role, level, techstack, type, amount and userid.
npm test # Vitest unit tests
npm run typecheck # tsc --noEmit
npm run lint # ESLint (next/core-web-vitals)
The suite covers the core logic in lib/interview and lib/tech: prompt construction, parsing messy LLM output into questions, request validation and the feedback schema. CI runs all three checks plus a production build on every push and pull request.
Built by Owen. The UI and base app structure started from the JavaScript Mastery AI interview platform walkthrough. Extended design notes are on Notion.
Licensed under MIT.