๐ผ๏ธ Farcaster Image Gallery Frames
September 12, 2025 ยท View on GitHub

A powerful gallery application that allows users to create interactive image galleries that can be shared and viewed as Farcaster Frames. Users can upload multiple images, customize the gallery appearance, and share it as a Farcaster Frame that can be interacted with directly on the Farcaster (https://www.farcaster.xyz/) platform.
โจ Features
- Upload up to 5 images per gallery
- Customize gallery appearance (title, button texts, frame size)
- Interactive navigation between images
- Generate shareable Farcaster Frame links
- Responsive design for all devices
- Fast and efficient image upload
๐ Live Demo
Check out the live demo at: https://frames-gallery.vercel.app/
๐๏ธ Project Structure
.
โโโ app/ # Next.js app directory
โ โโโ gallery/ # Gallery pages
โ โ โโโ [id]/ # Dynamic route for individual galleries
โ โโโ globals.css # Global styles
โ โโโ layout.tsx # Root layout
โโโ components/ # Reusable components
โ โโโ copy-button.tsx # Copy to clipboard component
โ โโโ create-gallery-form.tsx # Form for creating galleries
โ โโโ galleries.tsx # Gallery display component
โ โโโ navbar.tsx # Navigation bar
โโโ pages/
โ โโโ api/ # API routes
โ โ โโโ toggle.ts # Toggle gallery state
โ โ โโโ upload-gallery.ts # Handle gallery uploads
โ โ โโโ uploadthing.ts # UploadThing configuration
โ โโโ share/ # Share pages
โ โโโ [id].tsx # Shared gallery view
โโโ public/ # Static assets
โโโ server/ # Server-side utilities
โ โโโ uploadthing.ts # File upload configuration
โโโ utils/ # Utility functions
โ โโโ constants.ts # Application constants
โ โโโ lib.ts # Helper functions
โ โโโ uploadthing.ts # UploadThing client config
โโโ .env.example # Example environment variables
โโโ package.json # Project dependencies
๐ ๏ธ Tech Stack
- Framework: Next.js (App Router)
- Styling: Tailwind CSS
- File Uploads: UploadThing
- Database: Vercel KV
- UI Components: Lucide Icons
- Deployment: Vercel
- Package Manager: Bun
๐ Getting Started
Prerequisites
- Node.js 18+ and Bun installed
- A Vercel account for deployment
- A Farcaster account (for testing frames)
Local Development
-
Clone the repository
git clone https://github.com/your-username/image-gallery-frame.git cd image-gallery-frame -
Install dependencies
bun install -
Set up environment variables
cp .env.example .env.localThen, update the
.env.localfile with your credentials:# UploadThing (https://uploadthing.com/) UPLOADTHING_SECRET=your_uploadthing_secret UPLOADTHING_APP_ID=your_uploadthing_app_id # Vercel KV (https://vercel.com/storage/kv) KV_URL=your_vercel_kv_url KV_REST_API_URL=your_vercel_kv_rest_url KV_REST_API_TOKEN=your_vercel_kv_rest_token KV_REST_API_READ_ONLY_TOKEN=your_vercel_kv_readonly_token # App URL (for generating shareable links) NEXT_PUBLIC_APP_URL=http://localhost:3000 # Environment (development/production) NODE_ENV=development -
Run the development server
bun run dev -
Open http://localhost:3000 in your browser
๐ค Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- 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
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.