Skip to content

kiettt23/vibe-editor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

36 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎨 VibeEditor - Professional Online Image Editor

πŸ† TOP 4 FINALIST - VIET MY VIBE CODE HACKATHON 2026 πŸ†

Qualified from Round 1 to Finals | Solo Project

Hackathon


A powerful, fast, and easy-to-use online image editor runs in your browser.

Next.js React TypeScript Supabase Stripe License


πŸ“Έ Demo

🌐 Live Demo: https://vibe-editor-ten.vercel.app

VibeEditor Screenshot


πŸ’‘ Why This Project Stands Out

A complete production-ready SaaS built solo from scratch in 2 weeks.

Aspect What I Built
🎨 Frontend Real-time Canvas editing with Konva.js, 10+ filters, keyboard shortcuts, responsive UI
πŸ” Auth OAuth (Google) + Email/Password, multi-session support, Supabase Auth
πŸ’³ Payments Full Stripe integration: checkout, subscriptions, webhooks, billing portal
πŸ“¦ Backend Server Actions, PostgreSQL database, file storage, API routes
πŸš€ DevOps CI/CD with Vercel, environment management, production deployment
🎯 Product Freemium model, project limits, usage tracking, onboarding flow

Key Achievements:

  • βœ… Built a complete SaaS product - not just a demo or proof-of-concept
  • βœ… Implemented real business logic - subscriptions, trials, billing management
  • βœ… 100% client-side image processing - zero server load for editing operations
  • βœ… Modern stack: Next.js 16 + React 19 + TypeScript (latest versions)

✨ Features

🎨 Core Editor

  • βœ… Drag & Drop Upload - Drop images directly into the editor
  • βœ… Real-time Adjustments - Brightness, Contrast, Saturation, Hue, Blur controls
  • βœ… Transform Tools - Flip, Rotate, Scale, Zoom
  • βœ… 10 Professional Filters - Instagram-style presets (Vintage, Vibrant, B&W, Sepia...)
  • βœ… Keyboard Shortcuts - Ctrl+S (Save), Ctrl+E (Export), Ctrl+R (Reset), Esc (Close)
  • βœ… High-Quality Export - PNG, JPEG, WebP with quality control
  • βœ… Auto-save - Automatically saves project after 3 seconds

πŸ’Ό Project Management

  • βœ… Dashboard - Manage all projects in one place
  • βœ… Thumbnail Generation - Auto-generated previews for each project
  • βœ… Project Limits - Free: 5 projects, Pro: Unlimited
  • βœ… Stats Cards - Overview of projects, last updated

πŸ” Authentication

  • βœ… Email/Password - Traditional signup and login
  • βœ… OAuth Google - Quick sign-in with Google
  • βœ… Multi-Session - Manage multiple accounts, easy switching
  • βœ… User Profiles - Avatar, name, email management

πŸ’³ Monetization

  • βœ… Stripe Integration - Checkout flow for Pro plans
  • βœ… Monthly/Yearly Plans - Flexible billing options
  • βœ… 3-day Free Trial - Try Pro for free
  • βœ… Billing Portal - Cancel, update payment methods
  • βœ… Webhook Automation - Auto-sync subscription status

🎯 UI/UX

  • βœ… Responsive Design - Works on all devices
  • βœ… Dark Mode - Follows system preference
  • βœ… Loading States - Skeleton loaders everywhere
  • βœ… Error Boundaries - Graceful error handling
  • βœ… Toast Notifications - Real-time feedback
  • βœ… Pro Gate Modal - Lock features for Free users

πŸš€ Quick Start

Prerequisites

  • Node.js 18+
  • npm/yarn/pnpm
  • Supabase account
  • Stripe account

Installation

# Clone repository
git clone https://github.com/kiettt23/vibe-editor.git
cd vibe-editor

# Install dependencies
npm install

# Copy environment variables
cp .env.example .env

# Setup environment variables (see below)
# Edit .env file with your keys

# Run development server
npm run dev

Open http://localhost:3000 in your browser.

Environment Variables

# Supabase
NEXT_PUBLIC_SUPABASE_URL=https://xxx.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJxxx...
SUPABASE_SERVICE_ROLE_KEY=eyJxxx...

# Stripe (Test Mode for development)
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_xxx
STRIPE_SECRET_KEY=sk_test_xxx
STRIPE_WEBHOOK_SECRET=whsec_xxx
NEXT_PUBLIC_STRIPE_PRICE_MONTHLY=price_xxx
NEXT_PUBLIC_STRIPE_PRICE_YEARLY=price_xxx

# Site URL
NEXT_PUBLIC_SITE_URL=http://localhost:3000

Quick links:


πŸ“¦ Tech Stack

Frontend

  • Framework: Next.js 16.0 (App Router)
  • UI Library: React 19.2
  • Styling: Tailwind CSS 4
  • Component Library: shadcn/ui + Radix UI
  • Canvas: Konva.js + React-Konva
  • State Management: Zustand
  • Forms: React Hook Form + Zod

Backend

  • Database: Supabase PostgreSQL
  • Authentication: Supabase Auth
  • Storage: Supabase Storage
  • API: Next.js Server Actions
  • Payments: Stripe v20

DevOps

  • Hosting: Vercel
  • CI/CD: Vercel Git Integration
  • Monitoring: Vercel Analytics

πŸ“‚ Project Structure

vibe-editor/
β”œβ”€β”€ app/                      # Next.js App Router
β”‚   β”œβ”€β”€ (auth)/              # Auth routes (login, signup)
β”‚   β”œβ”€β”€ (marketing)/         # Public pages (landing, features, pricing)
β”‚   β”œβ”€β”€ dashboard/           # User dashboard
β”‚   β”œβ”€β”€ editor/              # Image editor workspace
β”‚   β”œβ”€β”€ payment/             # Payment success/cancel pages
β”‚   β”œβ”€β”€ actions/             # Server actions (auth, projects, subscription)
β”‚   └── api/                 # API routes (Stripe webhook)
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ editor/              # Editor components (Canvas, Toolbar, Panels)
β”‚   β”œβ”€β”€ marketing/           # Marketing sections (Hero, Features, Pricing)
β”‚   β”œβ”€β”€ shared/              # Shared components (Header, Footer, Logo)
β”‚   └── ui/                  # shadcn/ui components
β”œβ”€β”€ hooks/                    # Custom React hooks
β”œβ”€β”€ lib/                      # Utilities
β”‚   β”œβ”€β”€ editor/              # Editor utilities (filters, export)
β”‚   β”œβ”€β”€ stripe/              # Stripe helpers
β”‚   β”œβ”€β”€ subscription/        # Subscription logic
β”‚   └── supabase/            # Supabase clients
β”œβ”€β”€ store/                    # Zustand stores
β”œβ”€β”€ types/                    # TypeScript types
β”œβ”€β”€ supabase/
β”‚   └── migrations/          # Database migrations
β”œβ”€β”€ docs/                     # Documentation
β”‚   β”œβ”€β”€ DEPLOYMENT_GUIDE.md  # Production deployment guide
β”‚   β”œβ”€β”€ ROADMAP.md           # Feature roadmap
β”‚   └── STRIPE_SETUP_GUIDE.md
└── public/                   # Static assets

πŸ—ΊοΈ Roadmap

Phase 2 - Advanced Editor

  • Text Tool with custom fonts
  • Shape Tools (Rectangle, Circle, Polygon)
  • Layer System
  • Advanced Filters (Curves, Levels)

Phase 3 - AI Features

  • AI Background Removal
  • AI Image Upscale
  • AI Object Removal
  • AI Auto-Enhance

Phase 4 - Collaboration

  • Team Workspaces
  • Real-time Collaboration
  • Comments & Annotations

Phase 5 - Advanced

  • Batch Processing
  • Preset Management
  • Animation Export
  • AI-Generated Images

🀝 Contributing

Contributions are welcome!

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Commit changes: git commit -m 'feat: add amazing feature'
  4. Push to branch: git push origin feature/amazing-feature
  5. Open a Pull Request

Guidelines:

  • Follow existing code style
  • Write meaningful commit messages
  • Add tests for new features (if applicable)
  • Update documentation

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ™ Acknowledgments


πŸ“ž Contact


πŸ“Š Stats

GitHub stars GitHub forks GitHub issues GitHub last commit


Made by Kiet

About

πŸ† Top 4 Finalist - Viet My Vibe Code Hackathon 2025 | Production-ready SaaS image editor with auth, payments & project management. Solo-built.

Topics

Resources

License

Stars

Watchers

Forks

Contributors