Qualified from Round 1 to Finals | Solo Project
A powerful, fast, and easy-to-use online image editor runs in your browser.
π Live Demo: https://vibe-editor-ten.vercel.app
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)
- β 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
- β 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
- β 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
- β 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
- β 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
- Node.js 18+
- npm/yarn/pnpm
- Supabase account
- Stripe account
# 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 devOpen http://localhost:3000 in your browser.
# 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:3000Quick links:
- Supabase: Supabase Dashboard
- Stripe: Stripe Dashboard
- Google OAuth: Google Cloud Console
- 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
- Database: Supabase PostgreSQL
- Authentication: Supabase Auth
- Storage: Supabase Storage
- API: Next.js Server Actions
- Payments: Stripe v20
- Hosting: Vercel
- CI/CD: Vercel Git Integration
- Monitoring: Vercel Analytics
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
- Text Tool with custom fonts
- Shape Tools (Rectangle, Circle, Polygon)
- Layer System
- Advanced Filters (Curves, Levels)
- AI Background Removal
- AI Image Upscale
- AI Object Removal
- AI Auto-Enhance
- Team Workspaces
- Real-time Collaboration
- Comments & Annotations
- Batch Processing
- Preset Management
- Animation Export
- AI-Generated Images
Contributions are welcome!
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit changes:
git commit -m 'feat: add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
Guidelines:
- Follow existing code style
- Write meaningful commit messages
- Add tests for new features (if applicable)
- Update documentation
This project is licensed under the MIT License - see the LICENSE file for details.
- Next.js - The React Framework
- Supabase - Open Source Firebase Alternative
- Stripe - Payment Infrastructure
- shadcn/ui - Beautiful UI Components
- Konva.js - Canvas Library
- Vercel - Deployment Platform
- Author: Kiet Tran (@kiettt23)
- Email: kiettt23@gmail.com
- GitHub: https://github.com/kiettt23/vibe-editor
- Issues: https://github.com/kiettt23/vibe-editor/issues
Made by Kiet
