AI-Powered Thumbnail Generator for Content Creators
Generate high-CTR, studio-quality thumbnails directly from your video script β zero design skills required.
- π€ AI Image Generation β Describe your video content and let AI generate stunning thumbnails using the Pollinations API with multiple style models (Cinematic, Anime, 3D Render, Minimalist).
- π Google OAuth β Secure authentication via NextAuth.js with Google provider. Protected routes ensure only authenticated users access the dashboard.
- ποΈ Studio Dashboard β A full-featured workspace with a collapsible sidebar, project management, and a real-time generation canvas.
- π Aspect Ratio Support β Create thumbnails in
16:9(YouTube),9:16(Shorts/TikTok), and1:1(Instagram) formats. - β‘ Style Presets β Choose from 4 aesthetic models: Cinematic, Anime, 3D Render, and Minimalist β each mapped to a specialized AI model.
- π₯ One-Click Download β Download generated thumbnails instantly from the canvas with auto-named files.
- π Landing Page β Marketing-ready landing page with Hero, Bento Grid workflow section, Testimonials, Pricing, FAQ, CTA, and Logo Ticker.
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router) |
| Language | TypeScript 5 |
| UI | React 19, Tailwind CSS 4 |
| Auth | NextAuth.js v4 (Google OAuth) |
| AI / Image | Pollinations API |
| Icons | Lucide React |
| Animations | Motion (Framer Motion) |
| Fonts | Geist Sans, Geist Mono, Space Grotesk (via next/font) |
thumbnail/
βββ public/ # Static assets (SVGs, favicon)
βββ src/
β βββ app/
β β βββ api/
β β β βββ auth/[...nextauth]/route.ts # NextAuth API route
β β β βββ generate/route.ts # AI image generation endpoint
β β βββ dashboard/page.tsx # Main dashboard (Studio)
β β βββ login/page.tsx # Login page (Google OAuth)
β β βββ ProjectEditor/ # Project editor route
β β βββ Settings/ # Settings route
β β βββ layout.tsx # Root layout with fonts & providers
β β βββ page.tsx # Landing page
β β βββ providers.tsx # NextAuth SessionProvider wrapper
β β βββ globals.css # Global styles
β β βββ not-found.tsx # Custom 404 page
β βββ component/
β β βββ Navbar.tsx # Navigation bar
β β βββ Hero.tsx # Hero section
β β βββ BentoGrid.tsx # Feature workflow grid
β β βββ LogoTicker.tsx # Scrolling logo ticker
β β βββ Testimonial.tsx # User testimonials (masonry)
β β βββ Pricing.tsx # Pricing plans (Starter / Pro)
β β βββ Faq.tsx # Accordion FAQ
β β βββ Cta.tsx # Call-to-action section
β β βββ Footer.tsx # Footer
β β βββ ImageModal.tsx # Image preview modal
β β βββ UpgradeModal.tsx # Upgrade prompt modal
β β βββ dashboard/
β β βββ StudioView.tsx # AI generation canvas + controls
β β βββ ProjectsView.tsx # Project library grid
β β βββ NewProjectModal.tsx # Create new project modal
β β βββ SettingsView.tsx # User settings panel
β β βββ BillingView.tsx # Billing & plan management
β βββ lib/
β β βββ auth.ts # NextAuth configuration
β βββ types/
β β βββ index.ts # TypeScript interfaces (Project)
β βββ proxy.ts # Middleware (route protection)
βββ .env # Environment variables (git-ignored)
βββ .gitignore
βββ next.config.ts
βββ tailwind.config.ts
βββ postcss.config.mjs
βββ tsconfig.json
βββ package.json
βββ README.md
- Node.js β₯ 18.x
- npm, yarn, pnpm, or bun
- A Google Cloud Console project with OAuth 2.0 credentials
- A Pollinations API key
git clone https://github.com/prithvikings/Thumbify.git
cd Thumbifynpm installCreate a .env file in the project root:
# Google OAuth (NextAuth)
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
NEXTAUTH_SECRET=your_random_secret_string
NEXTAUTH_URL=http://localhost:3000
# AI Image Generation
GEMINI_API_KEY=your_gemini_api_key
HUGGINGFACE_API_TOKEN=your_huggingface_token
POLLINATIONS_API_KEY=your_pollinations_api_keynpm run devOpen http://localhost:3000 to see the app.
The marketing homepage features a dark, premium aesthetic with:
- Navbar β Sticky navigation with a "Open Studio" CTA linking to the login/dashboard.
- Hero β Bold headline ("Viral thumbnails. Zero design skills required.") with primary and secondary action buttons.
- Logo Ticker β Scrolling strip of partner/integration logos.
- Bento Grid β A 3-step workflow showcase (Paste Script β AI Visualization β Export & Ship) with system capability cards.
- Testimonials β Masonry grid of user reviews with star ratings.
- Pricing β Two-tier plan layout (Starter $0/mo vs Pro Creator $19/mo) with a monthly/annual toggle.
- FAQ β Animated accordion for common questions.
- CTA β Full-width call-to-action banner.
A fully interactive workspace accessible after Google sign-in:
- Collapsible Sidebar β Navigate between Home (Studio), Projects, and Settings.
- Studio View β The core generation interface:
- Editable project title
- Aspect ratio and status badges
- Aesthetic Model Selector β Choose from Cinematic, Anime, 3D Render, or Minimalist
- Prompt textarea with character counter
- Generate / Regenerate button with loading animation
- Canvas with hover actions (Download, Fullscreen, Delete)
- Projects View β Grid of all projects with status indicators and search.
- Settings View β Account and billing management.
Generates a thumbnail image using the Pollinations AI API.
Auth: Requires an active NextAuth session.
Request Body:
{
"prompt": "A dramatic cinematic shot of a tech reviewer...",
"aspectRatio": "16:9",
"style": "Cinematic"
}Response:
{
"success": true,
"imageUrl": "data:image/jpeg;base64,...",
"model": "flux-realism"
}| Style | AI Model |
|---|---|
| Cinematic | flux-realism |
| Anime | flux-anime |
| 3D Render | flux-3d |
| Minimalist | flux-pro |
- User clicks "Open Studio" or "Continue with Google" on the login page.
- NextAuth redirects to Google OAuth consent screen.
- On success, the user is redirected to
/dashboard. - Middleware (
proxy.ts) protects/dashboard,/projects, and/settingsβ unauthenticated users are redirected to/login. - Logged-in users visiting
/loginare automatically redirected to/dashboard.
| Command | Description |
|---|---|
npm run dev |
Start the development server |
npm run build |
Build the production bundle |
npm run start |
Start the production server |
npm run lint |
Run ESLint across the project |
Contributions are welcome! Feel free to open issues or submit pull requests.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is private. All rights reserved.
Built with β€οΈ by prithvikings