Instantly capture and create personal response GIFs.
A modern Next.js application with PWA support, featuring webcam recording, video trimming, and GIF conversion using FFmpeg WebAssembly.
- 📹 Webcam Recording: 10-second video capture with countdown
- ✂️ Video Trimming: Precise video editing with timeline controls
- 🎨 Text Overlays: Add custom text to your GIFs
- 📱 PWA Support: Install on mobile devices, works offline
- 🚀 Performance Optimized: Service worker caching, image optimization
- 🌙 Dark/Light Theme: Automatic theme switching
- 📊 Analytics: Built-in Google Analytics integration
- Framework: Next.js 15 with App Router
- Language: TypeScript with strict ESLint configuration
- Styling: Tailwind CSS with Shadcn UI components
- PWA: next-pwa with Workbox
- Video Processing: FFmpeg WebAssembly
- Theme: next-themes
- Analytics: Google Analytics 4
- Node.js 18+
- npm, yarn, pnpm, or bun
- Clone the repository
git clone https://github.com/choraria/gif-new.git
cd gif-new- Install dependencies
npm install- Set up environment variables (optional)
cp env.template .env.localAdd your Google Analytics ID if you want to use a different one:
NEXT_PUBLIC_GA_MEASUREMENT_ID=G-YOUR-GA-ID
- Run the development server
npm run dev- Open http://localhost:3000 in your browser
# Build the project
npm run build
# The static export will be in the /out directoryThis project is configured for static export and automatic deployment to GitHub Pages via GitHub Actions.
-
Enable GitHub Pages:
- Go to your repository Settings → Pages
- Under "Source", select "GitHub Actions"
-
Enable GitHub Actions (if needed):
- Go to Settings → Actions → General
- Under "Workflow permissions", select "Read and write permissions"
- Save changes
-
Automatic Deployment:
- Every push to
mainwill automatically build and deploy - The workflow builds the Next.js app as static files
- Deployment typically takes 2-5 minutes
- Every push to
After deployment, your site will be available at:
https://choraria.github.io/gif-new/(or your custom domain if configured)
- ✅ Service worker automatically deployed to
/sw.js - ✅ Manifest accessible at
/site.webmanifest - ✅ Offline fallback page at
/offline - ✅ Static asset caching for performance
- ✅ Optimized static export for GitHub Pages
- ✅ Compressed assets and responses
- ✅ Optimized chunk splitting
- ✅ FFmpeg libraries cached for offline use
# Test locally first
npm run build
# Check for linting errors
npm run lint
# Verify all dependencies
npm install- Ensure you're testing on HTTPS (GitHub Pages provides this automatically)
- Clear browser cache and service workers
- Check Network tab for service worker registration
- Check if the domain allows SharedArrayBuffer
- Ensure service worker isn't blocking FFmpeg requests
- Verify browser supports WebAssembly
To learn more about the technologies used:
- Next.js Documentation - learn about Next.js features and API
- PWA Documentation - Progressive Web App concepts
- FFmpeg WebAssembly - Video processing in the browser
- Shadcn/ui - Beautiful UI components
Live at: https://choraria.github.io/gif-new/