Skip to content

Latest commit

Β 

History

History
475 lines (388 loc) Β· 18.4 KB

File metadata and controls

475 lines (388 loc) Β· 18.4 KB

ShopifyThemeForge

Shopify Node.js TypeScript React AI License

🎨 Visual Theme Builder β€” Drag-and-drop Shopify theme editor with AI-powered layout suggestions, live preview, and one-click export to production-ready Liquid code.

About

ShopifyThemeForge is a modern visual theme builder that makes Shopify theme development accessible to everyone. Whether you're a designer who wants to prototype quickly or a developer who wants to speed up theme creation, ThemeForge provides an intuitive drag-and-drop interface to build beautiful Shopify themes without writing Liquid code manually. It exports production-ready Liquid code with AI-powered layout suggestions and direct Shopify sync.

✨ Features

Visual Builder

  • 🎯 Drag-and-Drop Interface β€” Intuitive section and element placement
  • πŸ“ 12-Column Grid System β€” Flexible, responsive layout grid
  • 🎨 Style Editor β€” Visual editors for colors, typography, and spacing
  • πŸ“± Responsive Preview β€” Real-time desktop, tablet, and mobile views
  • πŸ”„ Undo/Redo β€” Full history with keyboard shortcuts (Cmd/Ctrl+Z)
  • πŸ“ Template Library β€” Start from professionally designed templates

AI Features

  • πŸ€– Layout Suggestions β€” AI recommends optimal layouts based on content type
  • 🎨 Color Palettes β€” Auto-generated harmonious color schemes
  • ✍️ Copywriting β€” AI generates product descriptions, headings, CTAs
  • πŸ–ΌοΈ Image Suggestions β€” AI suggests relevant stock images from Unsplash
  • πŸ“Š Conversion Tips β€” AI highlights opportunities to improve conversions

Export & Integration

  • πŸ“€ Liquid Export β€” One-click export to production-ready Liquid templates
  • πŸ“ ZIP Download β€” Download as Shopify-installable theme .zip file
  • πŸ”— GitHub Sync β€” Push directly to GitHub repositories
  • πŸ“¦ Theme Kit β€” Integration with Shopify Theme Kit for CLI deployment
  • πŸ”„ Hot Reload β€” Local development with live updates
  • 🎨 CSS Export β€” Export custom CSS for further customization

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                           ShopifyThemeForge                             β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                          β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚                      React Frontend                                β”‚  β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚  β”‚
β”‚  β”‚  β”‚  Canvas  β”‚  β”‚ Toolbar  β”‚  β”‚Inspector β”‚  β”‚    Layers      β”‚  β”‚  β”‚
β”‚  β”‚  β”‚  Editor  β”‚  β”‚  Panel   β”‚  β”‚  Panel   β”‚  β”‚    Panel       β”‚  β”‚  β”‚
β”‚  β”‚  β”‚          β”‚  β”‚          β”‚  β”‚          β”‚  β”‚                β”‚  β”‚  β”‚
β”‚  β”‚  β”‚ Drop Zoneβ”‚  β”‚Component β”‚  β”‚ Style    β”‚  β”‚   Component    β”‚  β”‚  β”‚
β”‚  β”‚  β”‚ + Grid   β”‚  β”‚ Library  β”‚  β”‚ Props    β”‚  β”‚   Tree         β”‚  β”‚  β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                                    β”‚                                     β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚                   State Management (Zustand)                      β”‚  β”‚
β”‚  β”‚  β€’ Page Structure & Component Tree                                β”‚  β”‚
β”‚  β”‚  β€’ Styling State & Theme Variables                                β”‚  β”‚
β”‚  β”‚  β€’ History (Undo/Redo Stack)                                     β”‚  β”‚
β”‚  β”‚  β€’ Selection State                                                β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                                    β”‚                                     β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚                        Service Layer                              β”‚  β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚  β”‚
β”‚  β”‚  β”‚   Theme     β”‚  β”‚   Liquid    β”‚  β”‚       AI Service        β”‚  β”‚  β”‚
β”‚  β”‚  β”‚   Exporter β”‚  β”‚   Compiler  β”‚  β”‚ (Layout, Colors, Copy)  β”‚  β”‚  β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚  β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚  β”‚
β”‚  β”‚  β”‚   GitHub    β”‚  β”‚   Shopify   β”‚  β”‚      Template          β”‚  β”‚  β”‚
β”‚  β”‚  β”‚   Service   β”‚  β”‚   Deploy    β”‚  β”‚      Library           β”‚  β”‚  β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                                    β”‚                                     β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚                         Output Layer                              β”‚  β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚  β”‚
β”‚  β”‚  β”‚  Liquid  β”‚  β”‚  Theme   β”‚  β”‚  GitHub  β”‚  β”‚   Shopify      β”‚  β”‚  β”‚
β”‚  β”‚  β”‚   Code   β”‚  β”‚   ZIP    β”‚  β”‚   Push   β”‚  β”‚    Deploy      β”‚  β”‚  β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“¦ Installation

# Clone the repository
git clone https://github.com/moggan1337/ShopifyThemeForge.git
cd ShopifyThemeForge

# Install dependencies
npm install

# Copy environment variables
cp .env.example .env

# Start the development server
npm run dev

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

πŸš€ Quick Start

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

# 2. Start a new theme or select a template:
#    - Minimal Storefront
#    - Fashion Boutique
#    - Electronics Store
#    - Furniture Showroom
#    - Blank Canvas

# 3. Drag sections from the left panel onto the canvas

# 4. Customize styles in the Inspector panel

# 5. Export when done:
npm run export:zip          # Download as ZIP
npm run export:github       # Push to GitHub
npm run deploy:shopify       # Deploy directly to Shopify

🎯 Usage Guide

Adding Sections

Drag these section types from the left panel onto the canvas:

Section Description
Header Logo, navigation, search, cart icon
Hero Banner Large image/video with headline and CTA
Product Grid Grid of product cards
Featured Collection Curated product collection
Testimonials Customer reviews carousel
FAQ Accordion-style questions
Newsletter Email signup form
Footer Links, social icons, copyright
Custom HTML Embed custom HTML/Liquid

Editing Styles

Select any element and use the Inspector panel to edit:

  • Typography β€” Font family, size, weight, line-height, letter-spacing
  • Colors β€” Background, text, borders, shadows
  • Spacing β€” Margin, padding, gap
  • Effects β€” Box shadows, border radius, transitions
  • Layout β€” Width, max-width, alignment, position

AI Layout Suggestions

# Select a section and click "AI Suggestions"

# The AI will analyze your content and suggest:
# - Optimal image sizes and aspect ratios
# - Color contrast improvements for accessibility
# - Typography hierarchy improvements
# - Conversion-optimized section ordering
# - A/B testing recommendations

πŸ“ Project Structure

shopify-theme-forge/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”œβ”€β”€ page.tsx              # Main editor page
β”‚   β”‚   β”œβ”€β”€ layout.tsx            # Root layout
β”‚   β”‚   └── globals.css           # Global styles
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ canvas/
β”‚   β”‚   β”‚   β”œβ”€β”€ Canvas.tsx        # Main canvas editor
β”‚   β”‚   β”‚   β”œβ”€β”€ Grid.tsx          # 12-column grid overlay
β”‚   β”‚   β”‚   β”œβ”€β”€ SelectionBox.tsx  # Selection handles
β”‚   β”‚   β”‚   └── DropZone.tsx     # Drop target indicator
β”‚   β”‚   β”œβ”€β”€ panels/
β”‚   β”‚   β”‚   β”œβ”€β”€ Toolbar.tsx      # Top toolbar
β”‚   β”‚   β”‚   β”œβ”€β”€ Inspector.tsx     # Style editor panel
β”‚   β”‚   β”‚   β”œβ”€β”€ Layers.tsx        # Component tree view
β”‚   β”‚   β”‚   └── Components.tsx    # Draggable component library
β”‚   β”‚   β”œβ”€β”€ elements/
β”‚   β”‚   β”‚   β”œβ”€β”€ Section.tsx      # Section wrapper
β”‚   β”‚   β”‚   β”œβ”€β”€ Block.tsx        # Content block
β”‚   β”‚   β”‚   └── ...
β”‚   β”‚   └── shared/
β”‚   β”‚       β”œβ”€β”€ Button.tsx
β”‚   β”‚       β”œβ”€β”€ Input.tsx
β”‚   β”‚       └── ColorPicker.tsx
β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   β”œβ”€β”€ liquid/
β”‚   β”‚   β”‚   β”œβ”€β”€ compiler.ts       # Liquid code generation
β”‚   β”‚   β”‚   β”œβ”€β”€ templates/        # Liquid template snippets
β”‚   β”‚   β”‚   └── schema.ts         # Section schema builder
β”‚   β”‚   β”œβ”€β”€ ai/
β”‚   β”‚   β”‚   β”œβ”€β”€ suggestions.ts    # AI layout suggestions
β”‚   β”‚   β”‚   β”œβ”€β”€ colors.ts         # AI color palette generation
β”‚   β”‚   β”‚   └── copy.ts           # AI copywriting
β”‚   β”‚   └── export/
β”‚   β”‚       β”œβ”€β”€ zip.ts            # ZIP file generation
β”‚   β”‚       β”œβ”€β”€ github.ts         # GitHub integration
β”‚   β”‚       └── shopify.ts        # Shopify deploy
β”‚   β”œβ”€β”€ stores/
β”‚   β”‚   β”œβ”€β”€ editorStore.ts        # Zustand store for editor state
β”‚   β”‚   └── historyStore.ts       # Undo/redo history
β”‚   └── types/
β”‚       β”œβ”€β”€ editor.ts             # Editor type definitions
β”‚       └── theme.ts              # Theme/component types
β”œβ”€β”€ public/
β”‚   └── templates/                # Starter templates
β”‚       β”œβ”€β”€ minimal.json
β”‚       β”œβ”€β”€ fashion.json
β”‚       └── electronics.json
β”œβ”€β”€ styles/
β”‚   └── globals.css
└── package.json

🎨 Theme Templates

Minimal Storefront

  • Clean, product-focused design
  • Maximum whitespace utilization
  • Quick add-to-cart buttons
  • Instagram feed integration
  • Perfect for: Small brands, artisans, boutique stores

Fashion Boutique

  • Editorial magazine-style layout
  • Large hero photography
  • Lookbook sections
  • Size guide integration
  • Perfect for: Clothing, accessories, luxury brands

Electronics Store

  • Grid-heavy layout for product comparison
  • Spec tables and comparison charts
  • Quick spec badges
  • Warranty information prominently displayed
  • Perfect for: Consumer electronics, gadgets, tech accessories

Furniture Showroom

  • Large imagery showcase
  • Room scene layouts
  • AR preview integration
  • Delivery estimator
  • Perfect for: Furniture, home decor, interior design

πŸ“€ Export Options

Download as ZIP

# Export as Shopify-installable theme
npm run export:zip

# Download location: exports/theme-{timestamp}.zip

ZIP Structure:

theme/
β”œβ”€β”€ layout/
β”‚   β”œβ”€β”€ theme.liquid
β”‚   └── password.liquid
β”œβ”€β”€ templates/
β”‚   β”œβ”€β”€ index.json
β”‚   β”œβ”€β”€ product.json
β”‚   └── collection.json
β”œβ”€β”€ sections/
β”‚   β”œβ”€β”€ header.liquid
β”‚   β”œβ”€β”€ featured-collection.liquid
β”‚   └── ...
β”œβ”€β”€ snippets/
β”‚   β”œβ”€β”€ product-card.liquid
β”‚   └── ...
β”œβ”€β”€ assets/
β”‚   β”œβ”€β”€ base.css
β”‚   └── theme.js
└── config/
    └── settings_schema.json

Push to GitHub

# Configure GitHub credentials
export GITHUB_TOKEN=ghp_xxxxx

# Push to repository
npm run export:github -- --repo owner/repo --branch main

# Or use interactive mode
npm run export:github

Deploy to Shopify

# Configure Shopify store
export SHOPIFY_STORE_DOMAIN=your-store.myshopify.com
export SHOPIFY_ACCESS_TOKEN=shpat_xxxxx

# Deploy directly to Shopify
npm run deploy:shopify

# Preview before deploying
npm run deploy:shopify -- --preview

πŸ€– AI Features

Layout Intelligence

import { ai } from '@/lib/ai/suggestions';

// Analyze content and suggest optimal layout
const suggestions = await ai.analyzeLayout({
  content: ['hero-image', 'product-grid', 'testimonials'],
  industry: 'fashion',
  conversionGoal: 'purchase',
  targetAudience: 'women 25-35'
});

// Returns:
// {
//   sections: [
//     { type: 'hero', order: 1, imageSize: '1920x800' },
//     { type: 'product-grid', order: 2, columns: 4 },
//     { type: 'testimonials', order: 3, style: 'carousel' }
//   ],
//   recommendations: [
//     'Add trust badges below hero',
//     'Use sticky add-to-cart on mobile'
//   ]
// }

Color Harmony

import { ai } from '@/lib/ai/colors';

// Generate harmonious color palette
const palette = await ai.generatePalette({
  baseColor: '#3B82F6',
  mood: 'professional, trustworthy, modern',
  industry: 'fashion'
});

// Returns:
// {
//   primary: '#3B82F6',
//   secondary: '#1E40AF',
//   accent: '#F59E0B',
//   background: '#FFFFFF',
//   text: '#1F2937',
//   muted: '#9CA3AF'
// }

Copywriting

import { ai } from '@/lib/ai/copy';

// Generate product page copy
const copy = await ai.generateCopy({
  type: 'product-hero',
  product: {
    name: 'Wireless Noise-Canceling Headphones',
    features: ['ANC', '30hr battery', 'premium audio'],
    price: 299
  },
  tone: 'bold, innovative, premium'
});

// Returns:
// {
//   headline: 'Experience Sound Like Never Before',
//   subheadline: 'Industry-leading noise cancellation meets 30 hours of freedom',
//   cta: 'Shop Now',
//   description: '...'
// }

πŸ”§ Configuration

Environment Variables

# AI Service (OpenAI or Anthropic)
OPENAI_API_KEY=sk-xxxxx
# or
ANTHROPIC_API_KEY=sk-ant-xxxxx
# or use MiniMax
MINIMAX_API_KEY=sk-xxxxx

# Shopify (optional, for direct deploy)
SHOPIFY_STORE_DOMAIN=your-store.myshopify.com
SHOPIFY_ACCESS_TOKEN=shpat_xxxxx

# GitHub (optional, for Git export)
GITHUB_TOKEN=ghp_xxxxx

# Theme Kit (optional, for CLI deploy)
THEME_KIT_PASSWORD=xxxxx
THEME_KIT_THEME_ID=xxxxx

πŸ§ͺ Testing

# Run all tests
npm test

# Run with coverage
npm run test:coverage

# Run E2E tests
npm run test:e2e

# Visual regression tests
npm run test:visual

# Run specific test
npm test -- components/canvas/Canvas.test.tsx

πŸ“š Documentation

🀝 Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository
  2. Clone your fork: git clone https://github.com/YOUR_USERNAME/ShopifyThemeForge.git
  3. Create a feature branch: git checkout -b feature/amazing
  4. Install dependencies: npm install
  5. Start dev server: npm run dev
  6. Make your changes
  7. Test your changes: npm test
  8. Commit and push
  9. Open a Pull Request

πŸ“„ License

MIT License β€” see LICENSE for details.

Copyright (c) 2024 moggan1337


Built with ❀️ for Shopify theme developers