shiping
면접·시험 도우미, AI가 실시간으로 풀이 아이디어를 제공
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A speech coaching web app for the 2026 Congressional App Challenge. Upload a recording of yourself speaking and get your transcript, your pace (words per minute), your filler words and long pauses, and personal coaching feedback.
Live app: https://learn2speech.vercel.app
Every library, API and tool, with its license, is listed in docs/CREDITS.md.
git clone https://github.com/Learn2Speech/Learn2Speech.git
cd Learn2Speech
npm install
supabase/migrations/ in order, one at a time:
0001_recordings_bucket.sql: the private storage bucket for audio files and its access rules0002_recordings_table.sql: the recordings table with Row Level Security0003_recordings_results.sql: columns for the status, transcript, metrics and feedbackhttp://localhost:3000, so the email confirmation link brings new users back to your local app.Copy the example file, then fill in the values in .env.local:
cp .env.example .env.local
| Variable | Where to find it |
|---|---|
NEXT_PUBLIC_SUPABASE_URL | Supabase → Project Settings → API → Project URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY | Supabase → Project Settings → API Keys → the anon public key (newer projects call it the publishable key; either works) |
ASSEMBLYAI_API_KEY | AssemblyAI dashboard → API Keys |
ANTHROPIC_API_KEY | Anthropic Console → API Keys |
.env.local is git-ignored, so keys never get committed. The two API keys are only used in server code; never rename them to start with NEXT_PUBLIC_, which would send them to the browser.
npm run dev
Open http://localhost:3000, sign up, confirm your email, and upload a short recording (10 to 30 seconds is plenty for a test).
npm run lint # check the code for mistakes
npm run build # production build; must pass before pushing
https://learn2speech.vercel.app) to Authentication → URL Configuration.Analysis can take a minute or more, so the analysis route allows up to 200 seconds (maxDuration). Shorter recordings finish faster.
app/: pages and API routes (app/api/recordings/[id]/analyze runs the full analysis for one recording)lib/transcription/: the AssemblyAI request and response handlinglib/metrics/: words per minute, filler words, pauses and their ratings, as plain functionslib/feedback/: the Claude prompt, request and reply checkingsupabase/migrations/: the database setup, in orderdocs/: credits and AI usage logsWe used AI tools while building this app, as allowed by the Congressional App Challenge rules. Every use is logged, by person and by session, in docs/ai-log/, and commits Claude was involved in say how in their messages. The app itself uses Claude (Anthropic API) to write the coaching feedback.
Recordings and transcripts are personal data. They are stored in a private Supabase bucket and table protected by Row Level Security: the database only returns rows that belong to the logged-in user.