An AI-powered YouTube thumbnail generator that helps content creators design stunning, professional thumbnails in seconds using Google's Gemini AI.
- AI-Powered Generation: Leverage Google's Gemini AI to create custom YouTube thumbnails
- Multiple Styles: Choose from various design styles and color schemes
- Aspect Ratio Control: Generate thumbnails in different aspect ratios
- User Authentication: Secure session-based authentication with MongoDB
- Save & Manage: Store and retrieve your generated thumbnails
- Real-time Preview: See your thumbnail in a YouTube-like interface
- Cloud Storage: Images stored securely using Cloudinary
- Responsive Design: Beautiful, modern UI built with TailwindCSS and Motion
- Smooth Animations: Enhanced UX with Lenis smooth scrolling and Motion animations
- Framework: React 19.1 with TypeScript
- Build Tool: Vite 7.1
- Styling: TailwindCSS 4.1
- Routing: React Router DOM 7.8
- Animations: Motion 12.23
- Smooth Scrolling: Lenis
- HTTP Client: Axios
- UI Icons: Lucide React
- Notifications: React Hot Toast
- Runtime: Node.js with TypeScript
- Framework: Express 5.2
- Database: MongoDB with Mongoose
- AI Integration: Google Generative AI (Gemini)
- Authentication: Express Session + JWT
- Password Hashing: Bcrypt
- Image Storage: Cloudinary
- Session Store: connect-mongo
- CORS: Enabled for cross-origin requests
gemini-project/
βββ client/ # Frontend React application
β βββ src/
β β βββ components/ # Reusable UI components
β β βββ pages/ # Page components (Home, Generate, etc.)
β β βββ sections/ # Landing page sections
β β βββ context/ # React context (AuthContext)
β β βββ data/ # Static data and constants
β β βββ config/ # Client configuration
β β βββ App.tsx # Main app component
β βββ public/ # Static assets
β βββ package.json
β
βββ server/ # Backend Express application
β βββ config/ # Database configuration
β βββ controllers/ # Request handlers
β β βββ authControllers.ts
β β βββ thumbnailController.ts
β β βββ userController.ts
β βββ models/ # MongoDB models
β β βββ User.ts
β β βββ Thumbnail.ts
β βββ routes/ # API routes
β β βββ AuthRoutes.ts
β β βββ ThumnailRoutes.ts
β β βββ UserRoutes.ts
β βββ middlewares/ # Express middlewares
β βββ server.ts # Main server file
β βββ package.json
β
βββ vercel.json # Vercel deployment configuration
- Node.js (v18 or higher)
- MongoDB (local or MongoDB Atlas)
- Google Gemini API key
- Cloudinary account
Create .env files in both client and server directories:
PORT=3000
NODE_ENV=development
MONGODB_URI=your_mongodb_connection_string
SESSION_SECRET=your_session_secret
GEMINI_API_KEY=your_gemini_api_key
CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name
CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_API_SECRET=your_cloudinary_api_secretVITE_API_URL=http://localhost:3000- Clone the repository
git clone <repository-url>
cd gemini-project- Install server dependencies
cd server
npm install- Install client dependencies
cd ../client
npm install- Start the development servers
In the server directory:
npm run serverIn the client directory:
npm run devThe client will run on http://localhost:5173 and the server on http://localhost:3000.
POST /register- Register a new userPOST /login- Login userPOST /logout- Logout userGET /check-auth- Check authentication status
POST /generate- Generate a new thumbnailGET /- Get all user thumbnailsGET /:id- Get specific thumbnailPUT /:id- Update thumbnailDELETE /:id- Delete thumbnail
GET /profile- Get user profilePUT /profile- Update user profile
- Home (
/): Landing page with features, pricing, and testimonials - Login (
/login): User authentication - Generate (
/generate): AI thumbnail generation interface - My Generations (
/my-generation): View and manage saved thumbnails - Preview (
/preview): Preview thumbnails in YouTube interface
- Navbar: Global navigation with authentication state
- Footer: Footer with links and information
- AspectRatioSelector: Choose thumbnail dimensions
- ColorSchemeSelector: Pick color palettes
- StyleSelector: Select design styles
- PreviewPanel: Real-time thumbnail preview
- TiltImage: Interactive image with tilt effect
- TestimonialCard: User testimonial display
This project is configured for deployment on Vercel.
# Deploy from root directory
vercel --prodThe vercel.json configuration handles routing for both client and server.
- Session-based authentication with secure cookies
- Password hashing with bcrypt
- CORS protection
- Environment variable protection
- JWT token support
- Secure session storage in MongoDB
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License.
Rishabh Singh
- GitHub: @2005rishabh
- Google Gemini AI for thumbnail generation
- Cloudinary for image hosting
- React and TypeScript communities
- TailwindCSS for the beautiful UI framework
Made with β€οΈ by Rishabh Singh