Fujimod
Try your camera firmware in the browser and build Fujimod SD boot files.
Read your wedding speech out loud once and find out what it actually sounds like. Timing, skipped lines, one thing to fix.
LifestyleTypeScript · HTMLGitHub @artygracieOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
speechprep.ai: speech coach
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
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, RLSRead the full 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.