MCPcopy Index your code
hub / github.com/Davronov-Alimardon/canva-clone

github.com/Davronov-Alimardon/canva-clone @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
204 symbols 614 edges 122 files 0 documented · 0% updated 4mo agocanva-clone · 2024-09-20★ 4991 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

🎨 Canva Clone - Full-Featured Graphic Design SaaS Platform

canva-clone

A production-ready graphic design SaaS platform with an intuitive drag-and-drop editor, AI-powered features, and complete subscription management. Built with Next.js 14, Fabric.js canvas engine, Replicate AI, and Stripe payments.


🚀 Quick Start

New to this project? Follow our step-by-step setup guide:

📖 Complete Setup Documentation

Start here: 00-PREREQUISITES.md

Estimated setup time: ~90 minutes


✨ Key Features

  • 🎨 Professional Design Editor - Templates, text, shapes, drawing tools, and layers
  • 🤖 AI-Powered Tools - Image generation and background removal
  • 🔐 Multi-Auth - Google, GitHub, and Email/Password
  • 💳 Stripe Subscriptions - Complete payment management
  • 📤 Export Options - PNG, JPG, SVG, JSON
  • 📱 Fully Responsive - Works on all devices
  • 🔍 Project Management - Create and organize multiple projects
  • 🎯 Unsplash Integration - Millions of free stock photos

🛠️ Tech Stack

Frontend: Next.js 14, React 18, TypeScript, TailwindCSS, Shadcn UI, Fabric.js
Backend: Hono.js, Drizzle ORM, Neon PostgreSQL, Auth.js
AI & Media: Replicate AI, Unsplash, UploadThing
Payments: Stripe
State: Zustand, TanStack Query


📋 Prerequisites

Before starting, you need: - Node.js (v18+) or Bun - Git - Free accounts for: Neon, UploadThing, Replicate, Unsplash, Stripe, Google, GitHub

👉 See Prerequisites Guide for details


🎯 Setup Guide

Follow these guides in order:

  1. Prerequisites - What you need (2 min)
  2. Installation - Clone and install (5 min)
  3. Database Setup - Neon PostgreSQL (10 min)
  4. Unsplash API - Stock photos (5 min)
  5. UploadThing API - File uploads (5 min)
  6. Replicate API - AI features (10 min)
  7. Stripe Setup - Payments (20 min)
  8. Templates Setup - Design templates (15 min)
  9. GitHub OAuth - GitHub login (5 min)
  10. Google OAuth - Google login (10 min)
  11. Deployment - Deploy to Vercel (15 min)

Need help? Check Troubleshooting Guide


📦 Quick Commands

# Install dependencies
bun install

# Setup database
bun run db:generate
bun run db:migrate

# Start development
bun dev

# Open database GUI
bun run db:studio

Full command reference: See Installation Guide


🔧 Environment Variables

Create a .env file with these variables:

DATABASE_URL=
AUTH_SECRET=
NEXT_PUBLIC_APP_URL=http://localhost:3000
NEXT_PUBLIC_UNSPLASH_ACCESS_KEY=
UPLOADTHING_SECRET=
UPLOADTHING_APP_ID=
UPLOADTHING_TOKEN=
REPLICATE_API_TOKEN=
STRIPE_SECRET_KEY=
STRIPE_PRICE_ID=
STRIPE_WEBHOOK_SECRET=
GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=

Detailed guide: Environment Variables Reference


💎 Pro Features

Unlock with subscription: - ✨ Unlimited projects - 🎨 Premium templates - 🤖 Unlimited AI generations - 📤 High-resolution exports - 💾 Priority support


📚 Documentation


🎓 Learn More


🙏 Credits

Course: YouTube/Original Tutorial (18-hour course)
Creator: Code With Antonio
Deployment: Vercel
UI Components: Shadcn


📝 License

This project is based on the tutorial by Antonio Erdeljac.


⭐ Support

If you found this project helpful, please give it a star!

Need help? - Check Documentation - Review Troubleshooting - Create an issue on GitHub


Ready to start? → Begin with Prerequisites Guide 🚀

Extension points exported contracts — how you extend this code

JWT (Interface)
(no doc)
src/auth.config.ts
ProvidersProps (Interface)
(no doc)
src/components/providers.tsx
EditorHookProps (Interface)
(no doc)
src/features/editor/types.ts
DashboardLayoutProps (Interface)
(no doc)
src/app/(dashboard)/layout.tsx
HintProps (Interface)
(no doc)
src/components/hint.tsx
Editor (Interface)
(no doc)
src/features/editor/types.ts
SidebarItemProps (Interface)
(no doc)
src/app/(dashboard)/sidebar-item.tsx
QueryProviderProps (Interface)
(no doc)
src/components/query-provider.tsx

Core symbols most depended-on inside this repo

cn
called by 79
src/lib/utils.ts
isTextType
called by 9
src/features/editor/utils.ts
addToCanvas
called by 8
src/features/editor/hooks/use-editor.ts
getWorkspace
called by 7
src/features/editor/hooks/use-editor.ts
onChange
called by 6
src/features/editor/components/opacity-sidebar.tsx
usePaywall
called by 6
src/features/subscriptions/hooks/use-paywall.ts
downloadFile
called by 4
src/features/editor/utils.ts
onChangeTextAlign
called by 3
src/features/editor/components/toolbar.tsx

Shape

Function 159
Interface 45

Languages

TypeScript100%

Modules by API surface

src/features/editor/hooks/use-editor.ts11 symbols
src/features/editor/components/toolbar.tsx8 symbols
src/features/editor/components/settings-sidebar.tsx7 symbols
src/hooks/use-confirm.tsx6 symbols
src/features/editor/utils.ts5 symbols
src/features/editor/components/stroke-width-sidebar.tsx5 symbols
src/features/editor/components/font-size-input.tsx5 symbols
src/features/editor/components/draw-sidebar.tsx5 symbols
src/features/editor/components/template-sidebar.tsx4 symbols
src/features/editor/components/stroke-color-sidebar.tsx4 symbols
src/features/editor/components/remove-bg-sidebar.tsx4 symbols
src/features/editor/components/opacity-sidebar.tsx4 symbols

Datastores touched

dbDatabase · 1 repos

For agents

$ claude mcp add canva-clone \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact