Quick Start
Get your first store running in 30 minutes
Quick Start
Get Jiffoo Mall up and running in under 30 minutes. This guide walks you through installing the platform, creating your first tenant store, adding a product, and making your first test purchase.
What You'll Build
Jiffoo Mall is a multi-tenant e-commerce platform supporting:
- Multi-merchant stores
- Theme customization
- Plugin extensions
By the end of this guide, you'll have:
- ✅ A working Jiffoo Mall installation
- ✅ Your first tenant store created
- ✅ A product listed in your catalog
- ✅ A functional checkout flow
Prerequisites
Before starting, ensure you have:
- Node.js 18+ installed
- pnpm or npm package manager
- PostgreSQL or SQLite database
- 30 minutes of uninterrupted time
New to Jiffoo Mall? This platform supports multi-tenant stores, plugin extensions, and theme customization. We'll focus on the basics first.
Step 1: Install Jiffoo Mall (5 min)
Clone and Install
# Clone the repository
git clone https://github.com/thefreelight/Jiffoo.git
cd Jiffoo
# Install dependencies
pnpm installConfigure Environment
# Copy environment template
cp apps/api/.env.example apps/api/.envQuick configuration - Edit apps/api/.env with these minimal settings:
DATABASE_URL="postgresql://user:pass@localhost:5432/jiffoo"
JWT_SECRET="your-secret-key-here"Tip: Use SQLite for quick testing:
DATABASE_URL="file:./dev.db"
Initialize Database
# Generate database schema
pnpm --filter api db:generate
# Create database tables
pnpm --filter api db:push
# Seed with sample data (optional)
pnpm --filter api db:seed✓ Success check: You should see "Database pushed successfully" message.
Step 2: Start Development Servers (2 min)
# Start all services
pnpm devWait for all services to start. You'll see:
| Service | URL | Purpose |
|---|---|---|
| 🛒 Shop | http://localhost:3000 | Customer storefront |
| 🔧 API | http://localhost:3001 | Backend API |
| 👑 Super Admin | http://localhost:3002 | Platform management |
| 🏪 Admin | http://localhost:3003 | Store management |
✓ Success check: All services show "ready" status in terminal.
Step 3: Access Super Admin (3 min)
Login to Platform
- Visit http://localhost:3002
- Login with default credentials:
- Email:
[email protected] - Password:
admin123
- Email:
⚠️ Security: Change these credentials in production!
Create Your First Tenant
- Click Tenant Management in sidebar
- Click + Add Tenant button
- Fill in the form:
- Store Name:
My First Store - Subdomain:
store1 - Admin Email:
[email protected] - Admin Password:
store123
- Store Name:
- Click Create Tenant
✓ Success check: You'll see "Tenant created successfully" notification.
Step 4: Configure Your Store (5 min)
Login to Store Admin
- Visit http://localhost:3003
- Login with tenant credentials:
- Email:
[email protected] - Password:
store123
- Email:
Basic Store Settings
Navigate to Settings → General:
-
Store Details:
- Store Name:
My Awesome Store - Currency:
USD - Language:
English
- Store Name:
-
Contact Information:
- Email: Your store email
- Phone: Your contact number
-
Click Save Changes
✓ Success check: Settings saved successfully message appears.
Step 5: Add Your First Product (8 min)
Create a Product
-
Go to Products → Add Product
-
Fill in product details:
Basic Info:
- Name:
Premium T-Shirt - Description:
Comfortable cotton t-shirt - Price:
29.99 - SKU:
TSHIRT-001
Inventory:
- Stock:
100 - Status:
Active
- Name:
-
Upload Image (optional):
- Click Add Image
- Upload product photo
-
Categories (optional):
- Select or create
Clothingcategory
- Select or create
-
Click Publish Product
✓ Success check: Product appears in your product list.
Quick Alternative: Use Sample Data
# Seed with sample products
pnpm --filter api db:seed --productsStep 6: Test Your Store (5 min)
View Storefront
- Visit http://localhost:3000
- You should see your product listed
- Click on the product to view details
Make a Test Purchase
- Click Add to Cart
- Click Cart icon (top right)
- Click Checkout
- Fill in test customer details:
- Name:
Test Customer - Email:
[email protected] - Address: Any test address
- Name:
- Use test payment method:
- Card:
4242 4242 4242 4242 - Expiry: Any future date
- CVC: Any 3 digits
- Card:
- Click Place Order
✓ Success check: You'll see an order confirmation page.
Verify Order in Admin
- Go back to Admin panel (http://localhost:3003)
- Navigate to Orders
- Your test order should appear in the list
Step 7: Next Steps (2 min)
🎉 Congratulations! You now have a working e-commerce store.
Immediate Next Steps
-
Customize Your Theme
- Go to Appearance → Theme Settings
- Upload logo, change colors, adjust layout
- See: Theme Development
-
Configure Payment Methods
- Go to Settings → Payments
- Enable Stripe, PayPal, or other processors
- See: Configuration Guide
-
Add More Products
- Import via CSV
- Connect to inventory system
- Set up product variants
Learn More
| Guide | What You'll Learn | Time |
|---|---|---|
| Configuration | Email, payments, storage | 15 min |
| Plugin System | Extend functionality | 30 min |
| Theme Development | Custom storefront design | 45 min |
| API Reference | Integrate with external systems | 20 min |
Understanding Roles
Jiffoo Mall supports multiple user types:
| Role | Access | Use Case |
|---|---|---|
| 👑 Super Admin | /super-admin | Platform operator, manage tenants |
| 🏪 Admin | /admin | Store owner, manage products/orders |
| 👥 Agent | /agent | Distribution agent, track commissions |
| 🛒 Customer | /shop | Shopping user, place orders |
Key Features to Explore
- 🔌 Plugin Marketplace - Payment, email, OAuth integrations
- 📊 Analytics Dashboard - Sales reports, customer insights
- 👥 Agent System - Three-tier distribution network
- 🌍 Multi-language - Built-in i18n support
- 📱 Mobile Responsive - Works on all devices
Get Help
- Documentation: docs.jiffoo.com
- GitHub Issues: Report bugs
- Community: Join discussions
Troubleshooting
Services Won't Start
# Check if ports are in use
lsof -i :3000,3001,3002,3003
# Kill existing processes if needed
killall nodeDatabase Connection Failed
# Verify PostgreSQL is running
pg_isready
# Or use SQLite for development
DATABASE_URL="file:./dev.db"Can't Login
# Reset admin password
pnpm --filter api db:reset-adminPort Already in Use
Edit .env to use different ports:
PORT=3001 # API port
SHOP_PORT=3000
ADMIN_PORT=3003Total time: ⏱️ ~30 minutes
Ready to build something amazing? Start by exploring the Configuration Guide or jump into Plugin Development!