Video Testimonials Made Simple
VouchFlow is a minimalist web app for collecting authentic video testimonials via magic links. Built with Next.js 14 (App Router), Tailwind CSS, and Lucide icons.
- Clean Landing Page: Beautiful, mobile-responsive design with Apple-inspired aesthetics
- Camera Recording: One-click access to device camera for video testimonials
- Guided Recording Interface: 3-2-1 countdown with 60-second timer
- Review & Submit: Preview recorded videos before submission
- Mobile-First Design: Optimized for all devices - phone, tablet, desktop
- Zero Friction: No logins required for clients submitting testimonials
- Node.js 18+ installed
- A modern web browser with camera/microphone support
- Install dependencies:
npm install- Run the development server:
npm run dev- Open your browser: Navigate to http://localhost:3000
- Beautiful hero section with gradient text
- Feature highlights
- "Record Testimonial" CTA button
- Mobile-responsive navigation
- Intro Stage: Shows prompts and recording instructions
- Recording Stage:
- 3-2-1 countdown before recording starts
- Live camera preview with REC indicator
- 60-second maximum recording time
- Automatic stop at time limit
- Review Stage:
- Video playback controls
- Option to retake or submit
- Success Stage: Confirmation message after submission
vouchflow/
βββ app/ # Next.js 14 App Router
β βββ page.tsx # Landing page component
β βββ layout.tsx # Root layout with metadata
β βββ globals.css # Global styles + Tailwind
β βββ record/
β βββ [id]/
β βββ page.tsx # Dynamic recording interface
βββ package.json # Dependencies
βββ tailwind.config.js # Tailwind configuration
βββ tsconfig.json # TypeScript config
βββ next.config.js # Next.js config
- Framework: Next.js 14 (App Router)
- Styling: Tailwind CSS
- Icons: Lucide React
- Language: TypeScript
- Recording: MediaRecorder API (WebRTC)
- Font: Inter (Google Fonts)
VouchFlow follows a minimalist, premium design approach:
- Typography: Clean Inter font with generous spacing
- Color Palette:
- Indigo primary (
#4F46E5) - Slate grays for backgrounds
- Gradient accents (indigo β purple)
- Indigo primary (
- Animations: Smooth transitions with Tailwind utilities
- Spacing: Liberal use of whitespace for clarity
- Mobile-First: Designed for small screens, scales up beautifully
- Camera: To record video testimonials
- Microphone: To capture audio
- All recording happens locally in the browser
- Videos are stored as blob URLs until submission
- In production, videos will be uploaded to secure cloud storage (Cloudinary/UploadCare)
- No tracking or analytics in MVP version
- β Chrome 60+
- β Safari 14+
- β Firefox 55+
- β Edge 79+
- β iOS Safari 14.3+
- β Chrome for Android 60+
- Camera access and recording
- Landing page with conversion-focused copy
- Recording interface with countdown
- Review & submit flow
- Success confirmation
- Supabase project setup
- Database schema for campaigns & videos
- Video upload integration (Cloudinary/UploadCare)
- Unique magic link generation
- Campaign ID validation
- Creator dashboard
- Campaign creation form
- Company name & logo upload
- Custom prompts (3 questions)
- Brand color customization
- Magic link management
- Video gallery with download
- Google OAuth integration (Supabase Auth)
- User authentication flow
- Vercel deployment
- Custom domain setup
- Beta user testing
- First paying customer! π
Edit app/page.tsx:
<span className="text-xl font-semibold">YourBrand</span>Edit tailwind.config.js:
extend: {
colors: {
primary: '#your-color',
},
}Edit app/record/[id]/page.tsx:
const prompts = [
"Your custom question 1?",
"Your custom question 2?",
"Your custom question 3?"
];Change the max time in app/record/[id]/page.tsx:
if (prev >= 90) { // Change from 60 to 90 for 90 seconds- Check browser permissions (Settings β Privacy β Camera)
- Ensure you're on HTTPS (camera API requires secure context)
- Verify no other app is using the camera
- Try reloading the page
- Check browser console for errors (F12)
- Verify MediaRecorder API support
- Try a different browser
- Clear browser cache
- Check WebM/VP9 codec support
- Try downloading and playing locally
- Update your browser to the latest version
- Enable camera permissions in device settings
- Try Chrome or Safari (best support)
- Check internet connection for initial load
# Install Vercel CLI
npm i -g vercel
# Deploy
vercelCreate .env.local:
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_anon_key
NEXT_PUBLIC_UPLOADCARE_KEY=your_upload_key- Magic links created
- Videos recorded
- Videos submitted
- Conversion rate (views β recordings)
- Average recording length
- Device breakdown (mobile vs desktop)
This is your MVP! Feel free to:
- Customize the design to match your brand
- Add new features from the roadmap
- Experiment with different prompt strategies
- Test with real clients
Private project - All rights reserved
- Test thoroughly: Record videos on different devices
- Get feedback: Share
/record/demolink with friends - Plan backend: Set up Supabase account
- Design dashboard: Sketch out creator interface
- Deploy: Push to Vercel for live testing
- Keep prompts specific and actionable
- Test on actual client devices before launch
- Create a "best practices" guide for clients
- Record your own testimonial to test the flow
- Consider adding a "practice mode" for nervous clients
Built with β€οΈ for high-ticket service providers who need powerful social proof
Need help? Check the troubleshooting section or review the code comments in each component.
Ready to collect testimonials that convert? π