尚未偵測到更新。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.