尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证speechprep.ai: speech coach
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
The room before the room.
A rehearsal tool for prepared speech. Upload your script, record yourself giving it, and get back per-section pacing, a what-you-said-vs-what-you-wrote diff, and AI coaching notes. The product spec lives at artyfacts.ai/a/09ee5eaf-....
The two static .html files are the original clickable demo. They stay in the repo as design source-of-truth — the Next.js port reproduces them piece by piece.
• Next.js 16 (App Router, Turbopack)
• React 19
• TypeScript
• Tailwind 4 (with bespoke design tokens in globals.css)
• Supabase for auth, Postgres, RLS查看完整 README ↗The room before the room.
A rehearsal tool for prepared speech. Upload your script, record yourself giving it, and get back per-section pacing, a what-you-said-vs-what-you-wrote diff, and AI coaching notes. The product spec lives at artyfacts.ai/a/09ee5eaf-....
speech-prep/
├── web/ # Next.js 16 app — the real product
│ ├── src/app/ # App Router routes
│ │ ├── page.tsx # Landing (/)
│ │ ├── login/ # Magic-link sign-in (/login)
│ │ ├── auth/callback/route.ts # OAuth code exchange
│ │ ├── app/ # Authed routes (gated by proxy.ts)
│ │ │ ├── page.tsx # Speeches dashboard
│ │ │ ├── speeches/
│ │ │ │ ├── new/ # Create-a-speech form
│ │ │ │ └── [id]/ # Speech detail + /edit document editor
│ │ │ └── settings/
│ │ └── _landing/ # Landing-only client components
│ ├── src/lib/supabase/ # Server / browser / proxy clients
│ ├── src/types/database.types.ts # Generated from the live schema
│ ├── src/proxy.ts # Auth-aware request proxy (Next 16)
│ └── supabase/migrations/ # Schema source of truth (see below)
├── docs/ # Operating docs — analytics, PRDs, research
├── assets/ # Brand assets — wordmark + logo
├── index.html # Static landing demo (predecessor)
├── app.html # Static app demo (predecessor)
└── README.md
The two static .html files are the original clickable demo. They stay in the repo as design source-of-truth — the Next.js port reproduces them piece by piece.
globals.css)You need: Node 20+, pnpm 10+, a Supabase project.
cd web
cp .env.example .env.local # then paste your Supabase URL + anon key
pnpm install
pnpm dev # http://localhost:3000
The Supabase project URL and publishable key are read from NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_ANON_KEY. Row-level security policies guarantee a user can only ever read their own speeches; the client-side anon key is safe to ship.
To regenerate the TypeScript types after a schema change:
# either from the Supabase MCP, or:
pnpm dlx supabase gen types typescript --project-id <id> > src/types/database.types.ts
Live in Supabase; web/supabase/migrations/ is the source of truth:
20260714000000_baseline.sql — the full live schema, reconstructed via
read-only introspection (the original phase migrations were applied via the
MCP and never committed). Tables: profiles, speeches, script_versions,
sections, sessions, transcripts, section_metrics, ai_reports.
Views: current_script, entitlements, session_summaries. Plus RLS
policies, triggers (incl. handle_new_user on auth.users), and the
private recordings storage bucket.20260714000100_events_and_attribution.sql — first-party funnel events
table (server-write only) + profiles.attribution (first-touch UTM/gclid).All user tables have RLS policies scoping rows to auth.uid() = user_id
(via the parent speech for nested tables). Funnel queries and health checks
live in docs/analytics.md.
All five build phases from the original spec shipped in May 2026:
The product is live at speechprep.ai. Current work
is the relaunch: fixing the recording→report pipeline, adding funnel
analytics + attribution (see docs/analytics.md), and relighting Google Ads.
Vercel. Connect this repo, set the env vars from web/.env.example, ship. Nothing about the code requires Vercel specifically — any Node host that runs Next.js works.