An AI-powered tool that generates viral TikTok captions and strategic hashtags to boost content discoverability and solve creator burnout.
- One-Click AI Generation: Upload a video, choose tone, and get instant captions + hashtags
- Viral Caption Crafting: Gemini AI generates engaging captions tailored to TikTok trends
- Smart Hashtag Selection: Strategic mix of trending and niche hashtags for maximum reach
- One-Tap Copy: Seamlessly copy all generated text for immediate use in TikTok
- Tone Customization: Choose from 6 different tones (funny, dramatic, curious, inspirational, sarcastic, casual)
- Context Enhancement: Add optional context to improve AI generation quality
- Frontend: React 18 + TypeScript + Vite
- UI Framework: Lynx (Custom component library)
- AI Service: Google Gemini API
- Backend: Supabase (for logging and analytics)
- Styling: Modern CSS with glassmorphism effects
- Node.js 18+
- Google Gemini API key
- Supabase account (optional, for logging)
cd TechJam-Caf-feins
npm installCopy env.example to .env.local and fill in your API keys:
cp env.example .env.localEdit .env.local:
VITE_GEMINI_API_KEY=your_actual_gemini_api_key
VITE_SUPABASE_URL=your_supabase_project_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_keyImportant: In Vite, environment variables must be prefixed with VITE_ to be accessible in the browser.
- Go to Google AI Studio
- Create a new API key
- Copy the key to your
.env.localfile
- Create a new project at supabase.com
- Create a table called
generation_logs:
CREATE TABLE generation_logs (
id SERIAL PRIMARY KEY,
video_name TEXT NOT NULL,
tone TEXT NOT NULL,
context TEXT,
caption TEXT NOT NULL,
hashtags TEXT[] NOT NULL,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);- Copy your project URL and anon key to
.env.local
npm run devThe app will open at http://localhost:3000
- Upload Video: Drag & drop or click to upload your TikTok video
- Choose Tone: Select from 6 different caption styles
- Add Context: Optionally describe your video content
- Generate: Click the generate button to create AI-powered content
- Copy & Use: Copy captions and hashtags directly to your clipboard
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint
The app is fully responsive and works on:
- Desktop browsers
- Tablets
- Mobile devices
Edit src/components/ToneSelector.tsx to add new tone options:
const tones = [
// ... existing tones
{ value: 'new-tone', label: '🎯 New Tone', description: 'Description here' }
]Edit src/services/geminiService.ts to customize the AI generation prompts.
-
"Gemini API key not configured"
- Check your
.env.localfile - Ensure
VITE_GEMINI_API_KEYis set correctly
- Check your
-
"Failed to generate content"
- Verify your Gemini API key is valid
- Check your internet connection
- Ensure the video file is valid
-
Copy to clipboard not working
- Ensure you're using HTTPS or localhost
- Check browser permissions
- Check the browser console for error messages
- Verify all environment variables are set
- Ensure all dependencies are installed
MIT License - see LICENSE file for details
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
- Bundle Size: ~500KB gzipped
- First Contentful Paint: < 1.5s
- Time to Interactive: < 2s
- API keys are stored in environment variables
- No sensitive data is logged to the client
- All user data is processed locally
Built with ❤️ for TechJam 2025