Add new validation rules MOD-020 to MOD-023 for module definition completeness and standardize permissions across all modules. Changes: - Add MOD-020: Module definitions must have required attributes - Add MOD-021: Modules with menus should have features - Add MOD-022: Feature modules should have permissions - Add MOD-023: Modules with routers should use get_*_with_routers pattern Module permissions added: - analytics: view, export, manage_dashboards - billing: view_tiers, manage_tiers, view_subscriptions, manage_subscriptions, view_invoices - cart: view, manage - checkout: view_settings, manage_settings - cms: view_pages, manage_pages, view_media, manage_media, manage_themes - loyalty: view_programs, manage_programs, view_rewards, manage_rewards - marketplace: view_integration, manage_integration, sync_products - messaging: view_messages, send_messages, manage_templates - payments: view_gateways, manage_gateways, view_transactions Module improvements: - Complete cart module with features and permissions - Complete checkout module with features and permissions - Add features to catalog module - Add version to cms module - Fix loyalty platform_router attachment - Add path definitions to payments module - Remove empty scheduled_tasks from dev_tools module Documentation: - Update module-system.md with new validation rules - Update architecture-rules.md with MOD-020 to MOD-023 Tests: - Add unit tests for module definition completeness - Add tests for permission structure validation Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
599 lines
40 KiB
HTML
599 lines
40 KiB
HTML
{# app/templates/platform/homepage-modern.html #}
|
|
{# Wizamart OMS - Luxembourg-focused homepage inspired by Veeqo #}
|
|
{% extends "public/base.html" %}
|
|
|
|
{% block title %}
|
|
Wizamart - The Back-Office for Letzshop Sellers
|
|
{% endblock %}
|
|
|
|
{% block extra_head %}
|
|
<style>
|
|
.gradient-lu {
|
|
background: linear-gradient(135deg, #00A1DE 0%, #EF3340 100%);
|
|
}
|
|
.gradient-lu-subtle {
|
|
background: linear-gradient(135deg, #f0f9ff 0%, #fef2f2 100%);
|
|
}
|
|
@keyframes float {
|
|
0%, 100% { transform: translateY(0px); }
|
|
50% { transform: translateY(-10px); }
|
|
}
|
|
.float-animation {
|
|
animation: float 4s ease-in-out infinite;
|
|
}
|
|
.feature-card:hover {
|
|
transform: translateY(-4px);
|
|
box-shadow: 0 20px 40px rgba(0,0,0,0.1);
|
|
}
|
|
</style>
|
|
{% endblock %}
|
|
|
|
{% block content %}
|
|
<!-- ═══════════════════════════════════════════════════════════════ -->
|
|
<!-- HERO - The Back-Office Letzshop Doesn't Give You -->
|
|
<!-- ═══════════════════════════════════════════════════════════════ -->
|
|
<section class="relative overflow-hidden bg-gray-900 text-white py-20 md:py-28">
|
|
{# Background pattern #}
|
|
<div class="absolute inset-0 opacity-10">
|
|
<div class="absolute top-0 left-0 w-full h-full" style="background-image: url('data:image/svg+xml,%3Csvg width=\"60\" height=\"60\" viewBox=\"0 0 60 60\" xmlns=\"http://www.w3.org/2000/svg\"%3E%3Cg fill=\"none\" fill-rule=\"evenodd\"%3E%3Cg fill=\"%23ffffff\" fill-opacity=\"0.4\"%3E%3Cpath d=\"M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z\"/%3E%3C/g%3E%3C/g%3E%3C/svg%3E');"></div>
|
|
</div>
|
|
|
|
<div class="relative max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
|
<div class="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center">
|
|
{# Left column - Content #}
|
|
<div>
|
|
<div class="inline-flex items-center px-4 py-2 bg-blue-500/20 backdrop-blur-sm rounded-full text-sm font-medium mb-6 border border-blue-400/30">
|
|
<span class="mr-2">🇱🇺</span> Built for Luxembourg E-Commerce
|
|
</div>
|
|
|
|
<h1 class="text-4xl md:text-5xl lg:text-6xl font-bold mb-6 leading-tight">
|
|
The Back-Office<br>
|
|
<span class="text-transparent bg-clip-text bg-gradient-to-r from-blue-400 to-cyan-400">
|
|
Letzshop Doesn't Give You
|
|
</span>
|
|
</h1>
|
|
|
|
<p class="text-xl md:text-2xl text-gray-300 mb-8 leading-relaxed">
|
|
Sync orders, manage inventory, generate invoices with correct VAT, and own your customer data. All in one place.
|
|
</p>
|
|
|
|
<div class="flex flex-col sm:flex-row gap-4 mb-8">
|
|
<a href="/contact"
|
|
class="inline-flex items-center justify-center bg-blue-500 hover:bg-blue-600 text-white px-8 py-4 rounded-xl font-bold transition-all duration-200 shadow-lg hover:shadow-xl">
|
|
<span>Start 14-Day Free Trial</span>
|
|
<svg class="w-5 h-5 ml-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 7l5 5m0 0l-5 5m5-5H6"></path>
|
|
</svg>
|
|
</a>
|
|
<a href="#how-it-works"
|
|
class="inline-flex items-center justify-center border-2 border-gray-600 text-white px-8 py-4 rounded-xl font-bold hover:bg-white/10 transition-all duration-200">
|
|
See How It Works
|
|
</a>
|
|
</div>
|
|
|
|
<p class="text-sm text-gray-400">
|
|
No credit card required. Setup in 5 minutes. Cancel anytime.
|
|
</p>
|
|
</div>
|
|
|
|
{# Right column - Dashboard Preview #}
|
|
<div class="hidden lg:block">
|
|
<div class="relative float-animation">
|
|
<div class="bg-gray-800 rounded-2xl shadow-2xl border border-gray-700 overflow-hidden">
|
|
{# Mock dashboard header #}
|
|
<div class="bg-gray-900 px-4 py-3 flex items-center gap-2 border-b border-gray-700">
|
|
<div class="w-3 h-3 rounded-full bg-red-500"></div>
|
|
<div class="w-3 h-3 rounded-full bg-yellow-500"></div>
|
|
<div class="w-3 h-3 rounded-full bg-green-500"></div>
|
|
<span class="ml-4 text-gray-400 text-sm">Wizamart Dashboard</span>
|
|
</div>
|
|
{# Mock dashboard content #}
|
|
<div class="p-6 space-y-4">
|
|
<div class="grid grid-cols-3 gap-4">
|
|
<div class="bg-gray-700/50 rounded-lg p-4">
|
|
<div class="text-gray-400 text-xs mb-1">Today's Orders</div>
|
|
<div class="text-2xl font-bold text-white">24</div>
|
|
<div class="text-green-400 text-xs">+12% vs yesterday</div>
|
|
</div>
|
|
<div class="bg-gray-700/50 rounded-lg p-4">
|
|
<div class="text-gray-400 text-xs mb-1">Revenue</div>
|
|
<div class="text-2xl font-bold text-white">EUR 1,847</div>
|
|
<div class="text-green-400 text-xs">+8% vs yesterday</div>
|
|
</div>
|
|
<div class="bg-gray-700/50 rounded-lg p-4">
|
|
<div class="text-gray-400 text-xs mb-1">Low Stock</div>
|
|
<div class="text-2xl font-bold text-yellow-400">3</div>
|
|
<div class="text-gray-400 text-xs">items need restock</div>
|
|
</div>
|
|
</div>
|
|
<div class="bg-gray-700/50 rounded-lg p-4">
|
|
<div class="text-gray-400 text-xs mb-3">Recent Orders from Letzshop</div>
|
|
<div class="space-y-2">
|
|
<div class="flex justify-between items-center text-sm">
|
|
<span class="text-white">#LS-4521</span>
|
|
<span class="text-gray-400">Marie D.</span>
|
|
<span class="text-green-400">EUR 89.00</span>
|
|
<span class="bg-blue-500/20 text-blue-400 px-2 py-0.5 rounded text-xs">Confirmed</span>
|
|
</div>
|
|
<div class="flex justify-between items-center text-sm">
|
|
<span class="text-white">#LS-4520</span>
|
|
<span class="text-gray-400">Jean M.</span>
|
|
<span class="text-green-400">EUR 156.50</span>
|
|
<span class="bg-purple-500/20 text-purple-400 px-2 py-0.5 rounded text-xs">Shipped</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- ═══════════════════════════════════════════════════════════════ -->
|
|
<!-- INTEGRATION BADGE - Works with Letzshop -->
|
|
<!-- ═══════════════════════════════════════════════════════════════ -->
|
|
<section class="py-8 bg-gray-50 dark:bg-gray-800 border-y border-gray-200 dark:border-gray-700">
|
|
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
|
<div class="flex flex-col md:flex-row items-center justify-center gap-6 md:gap-12">
|
|
<span class="text-gray-500 dark:text-gray-400 font-medium">Official Integration</span>
|
|
<div class="flex items-center gap-3 bg-white dark:bg-gray-700 px-6 py-3 rounded-xl shadow-sm">
|
|
<span class="text-2xl">🛒</span>
|
|
<span class="font-bold text-gray-900 dark:text-white">Letzshop.lu</span>
|
|
</div>
|
|
<span class="text-gray-500 dark:text-gray-400 text-sm">Connect in 2 minutes</span>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- ═══════════════════════════════════════════════════════════════ -->
|
|
<!-- THE PROBLEM - Pain Points -->
|
|
<!-- ═══════════════════════════════════════════════════════════════ -->
|
|
<section class="py-20 bg-white dark:bg-gray-900">
|
|
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
|
<div class="text-center mb-16">
|
|
<h2 class="text-3xl md:text-4xl font-bold text-gray-900 dark:text-white mb-4">
|
|
Sound Familiar?
|
|
</h2>
|
|
<p class="text-xl text-gray-600 dark:text-gray-400 max-w-2xl mx-auto">
|
|
These are the daily frustrations of Letzshop sellers
|
|
</p>
|
|
</div>
|
|
|
|
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
|
|
<div class="bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-xl p-6">
|
|
<div class="text-3xl mb-4">📋</div>
|
|
<h3 class="font-bold text-gray-900 dark:text-white mb-2">Manual Order Entry</h3>
|
|
<p class="text-gray-600 dark:text-gray-400 text-sm">Copy-pasting orders from Letzshop to spreadsheets. Every. Single. Day.</p>
|
|
</div>
|
|
|
|
<div class="bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-xl p-6">
|
|
<div class="text-3xl mb-4">📦</div>
|
|
<h3 class="font-bold text-gray-900 dark:text-white mb-2">Inventory Chaos</h3>
|
|
<p class="text-gray-600 dark:text-gray-400 text-sm">Stock in Letzshop doesn't match reality. Overselling happens.</p>
|
|
</div>
|
|
|
|
<div class="bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-xl p-6">
|
|
<div class="text-3xl mb-4">🧾</div>
|
|
<h3 class="font-bold text-gray-900 dark:text-white mb-2">Wrong VAT Invoices</h3>
|
|
<p class="text-gray-600 dark:text-gray-400 text-sm">EU customers need correct VAT. Your accountant keeps complaining.</p>
|
|
</div>
|
|
|
|
<div class="bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-xl p-6">
|
|
<div class="text-3xl mb-4">👥</div>
|
|
<h3 class="font-bold text-gray-900 dark:text-white mb-2">Lost Customers</h3>
|
|
<p class="text-gray-600 dark:text-gray-400 text-sm">Letzshop owns your customer data. You can't retarget or build loyalty.</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- ═══════════════════════════════════════════════════════════════ -->
|
|
<!-- HOW IT WORKS - 4-Step Workflow (Veeqo-style) -->
|
|
<!-- ═══════════════════════════════════════════════════════════════ -->
|
|
<section id="how-it-works" class="py-20 gradient-lu-subtle dark:bg-gray-800">
|
|
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
|
<div class="text-center mb-16">
|
|
<div class="inline-block px-4 py-2 bg-blue-100 dark:bg-blue-900/30 text-blue-600 dark:text-blue-400 rounded-full text-sm font-semibold mb-4">
|
|
How It Works
|
|
</div>
|
|
<h2 class="text-3xl md:text-4xl font-bold text-gray-900 dark:text-white mb-4">
|
|
From Chaos to Control in 4 Steps
|
|
</h2>
|
|
</div>
|
|
|
|
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8">
|
|
{# Step 1 #}
|
|
<div class="relative">
|
|
<div class="bg-white dark:bg-gray-900 rounded-2xl p-8 shadow-lg h-full">
|
|
<div class="w-12 h-12 rounded-full bg-blue-500 text-white flex items-center justify-center font-bold text-xl mb-6">1</div>
|
|
<h3 class="text-xl font-bold text-gray-900 dark:text-white mb-3">Connect Letzshop</h3>
|
|
<p class="text-gray-600 dark:text-gray-400">Enter your Letzshop API credentials. Done in 2 minutes, no technical skills needed.</p>
|
|
</div>
|
|
<div class="hidden lg:block absolute top-1/2 -right-4 w-8 h-0.5 bg-blue-300"></div>
|
|
</div>
|
|
|
|
{# Step 2 #}
|
|
<div class="relative">
|
|
<div class="bg-white dark:bg-gray-900 rounded-2xl p-8 shadow-lg h-full">
|
|
<div class="w-12 h-12 rounded-full bg-blue-500 text-white flex items-center justify-center font-bold text-xl mb-6">2</div>
|
|
<h3 class="text-xl font-bold text-gray-900 dark:text-white mb-3">Orders Flow In</h3>
|
|
<p class="text-gray-600 dark:text-gray-400">Orders sync automatically. Confirm and add tracking directly from Wizamart.</p>
|
|
</div>
|
|
<div class="hidden lg:block absolute top-1/2 -right-4 w-8 h-0.5 bg-blue-300"></div>
|
|
</div>
|
|
|
|
{# Step 3 #}
|
|
<div class="relative">
|
|
<div class="bg-white dark:bg-gray-900 rounded-2xl p-8 shadow-lg h-full">
|
|
<div class="w-12 h-12 rounded-full bg-blue-500 text-white flex items-center justify-center font-bold text-xl mb-6">3</div>
|
|
<h3 class="text-xl font-bold text-gray-900 dark:text-white mb-3">Generate Invoices</h3>
|
|
<p class="text-gray-600 dark:text-gray-400">One click to create compliant PDF invoices with correct VAT for any EU country.</p>
|
|
</div>
|
|
<div class="hidden lg:block absolute top-1/2 -right-4 w-8 h-0.5 bg-blue-300"></div>
|
|
</div>
|
|
|
|
{# Step 4 #}
|
|
<div class="relative">
|
|
<div class="bg-white dark:bg-gray-900 rounded-2xl p-8 shadow-lg h-full">
|
|
<div class="w-12 h-12 rounded-full bg-green-500 text-white flex items-center justify-center font-bold text-xl mb-6">4</div>
|
|
<h3 class="text-xl font-bold text-gray-900 dark:text-white mb-3">Grow Your Business</h3>
|
|
<p class="text-gray-600 dark:text-gray-400">Export customers for marketing. Track inventory. Focus on selling, not spreadsheets.</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- ═══════════════════════════════════════════════════════════════ -->
|
|
<!-- FEATURES - What You Get -->
|
|
<!-- ═══════════════════════════════════════════════════════════════ -->
|
|
<section id="features" class="py-20 bg-white dark:bg-gray-900">
|
|
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
|
<div class="text-center mb-16">
|
|
<div class="inline-block px-4 py-2 bg-green-100 dark:bg-green-900/30 text-green-600 dark:text-green-400 rounded-full text-sm font-semibold mb-4">
|
|
Features
|
|
</div>
|
|
<h2 class="text-3xl md:text-4xl font-bold text-gray-900 dark:text-white mb-4">
|
|
Everything a Letzshop Seller Needs
|
|
</h2>
|
|
<p class="text-xl text-gray-600 dark:text-gray-400 max-w-2xl mx-auto">
|
|
The operational tools Letzshop doesn't provide
|
|
</p>
|
|
</div>
|
|
|
|
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
|
|
{# Feature 1: Order Sync #}
|
|
<div class="feature-card bg-gray-50 dark:bg-gray-800 rounded-2xl p-8 transition-all duration-300">
|
|
<div class="w-14 h-14 rounded-2xl bg-blue-500 flex items-center justify-center mb-6">
|
|
<svg class="w-7 h-7 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"></path>
|
|
</svg>
|
|
</div>
|
|
<h3 class="text-xl font-bold text-gray-900 dark:text-white mb-3">Automatic Order Sync</h3>
|
|
<p class="text-gray-600 dark:text-gray-400 mb-4">Orders from Letzshop appear instantly. Confirm orders and sync tracking numbers back automatically.</p>
|
|
<ul class="text-sm text-gray-500 dark:text-gray-400 space-y-1">
|
|
<li>Real-time sync</li>
|
|
<li>One-click confirmation</li>
|
|
<li>Tracking number sync</li>
|
|
</ul>
|
|
</div>
|
|
|
|
{# Feature 2: Inventory #}
|
|
<div class="feature-card bg-gray-50 dark:bg-gray-800 rounded-2xl p-8 transition-all duration-300">
|
|
<div class="w-14 h-14 rounded-2xl bg-green-500 flex items-center justify-center mb-6">
|
|
<svg class="w-7 h-7 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4"></path>
|
|
</svg>
|
|
</div>
|
|
<h3 class="text-xl font-bold text-gray-900 dark:text-white mb-3">Real Inventory Management</h3>
|
|
<p class="text-gray-600 dark:text-gray-400 mb-4">One source of truth for all stock. Locations, reservations, and incoming stock tracking.</p>
|
|
<ul class="text-sm text-gray-500 dark:text-gray-400 space-y-1">
|
|
<li>Product locations (bins)</li>
|
|
<li>Stock reservations</li>
|
|
<li>Low stock alerts</li>
|
|
</ul>
|
|
</div>
|
|
|
|
{# Feature 3: Invoicing #}
|
|
<div class="feature-card bg-gray-50 dark:bg-gray-800 rounded-2xl p-8 transition-all duration-300">
|
|
<div class="w-14 h-14 rounded-2xl bg-purple-500 flex items-center justify-center mb-6">
|
|
<svg class="w-7 h-7 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"></path>
|
|
</svg>
|
|
</div>
|
|
<h3 class="text-xl font-bold text-gray-900 dark:text-white mb-3">Smart VAT Invoicing</h3>
|
|
<p class="text-gray-600 dark:text-gray-400 mb-4">Generate PDF invoices with correct VAT rates. Luxembourg, EU countries, B2B reverse charge.</p>
|
|
<ul class="text-sm text-gray-500 dark:text-gray-400 space-y-1">
|
|
<li>Luxembourg 17% VAT</li>
|
|
<li>EU destination VAT (OSS)</li>
|
|
<li>B2B reverse charge</li>
|
|
</ul>
|
|
</div>
|
|
|
|
{# Feature 4: Customers #}
|
|
<div class="feature-card bg-gray-50 dark:bg-gray-800 rounded-2xl p-8 transition-all duration-300">
|
|
<div class="w-14 h-14 rounded-2xl bg-orange-500 flex items-center justify-center mb-6">
|
|
<svg class="w-7 h-7 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"></path>
|
|
</svg>
|
|
</div>
|
|
<h3 class="text-xl font-bold text-gray-900 dark:text-white mb-3">Own Your Customers</h3>
|
|
<p class="text-gray-600 dark:text-gray-400 mb-4">All customer data in your database. Export to Mailchimp for marketing campaigns.</p>
|
|
<ul class="text-sm text-gray-500 dark:text-gray-400 space-y-1">
|
|
<li>Order history per customer</li>
|
|
<li>Lifetime value tracking</li>
|
|
<li>CSV export for marketing</li>
|
|
</ul>
|
|
</div>
|
|
|
|
{# Feature 5: Team #}
|
|
<div class="feature-card bg-gray-50 dark:bg-gray-800 rounded-2xl p-8 transition-all duration-300">
|
|
<div class="w-14 h-14 rounded-2xl bg-cyan-500 flex items-center justify-center mb-6">
|
|
<svg class="w-7 h-7 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197M13 7a4 4 0 11-8 0 4 4 0 018 0z"></path>
|
|
</svg>
|
|
</div>
|
|
<h3 class="text-xl font-bold text-gray-900 dark:text-white mb-3">Team Management</h3>
|
|
<p class="text-gray-600 dark:text-gray-400 mb-4">Invite team members with role-based permissions. Everyone works from one dashboard.</p>
|
|
<ul class="text-sm text-gray-500 dark:text-gray-400 space-y-1">
|
|
<li>Multiple users</li>
|
|
<li>Role-based access</li>
|
|
<li>Activity logging</li>
|
|
</ul>
|
|
</div>
|
|
|
|
{# Feature 6: Purchase Orders #}
|
|
<div class="feature-card bg-gray-50 dark:bg-gray-800 rounded-2xl p-8 transition-all duration-300">
|
|
<div class="w-14 h-14 rounded-2xl bg-pink-500 flex items-center justify-center mb-6">
|
|
<svg class="w-7 h-7 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01"></path>
|
|
</svg>
|
|
</div>
|
|
<h3 class="text-xl font-bold text-gray-900 dark:text-white mb-3">Purchase Orders</h3>
|
|
<p class="text-gray-600 dark:text-gray-400 mb-4">Track incoming stock from suppliers. Know what's on order and when it arrives.</p>
|
|
<ul class="text-sm text-gray-500 dark:text-gray-400 space-y-1">
|
|
<li>Track supplier orders</li>
|
|
<li>Expected arrival dates</li>
|
|
<li>Receive and update stock</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- ═══════════════════════════════════════════════════════════════ -->
|
|
<!-- PRICING - 4 Tiers -->
|
|
<!-- ═══════════════════════════════════════════════════════════════ -->
|
|
<section id="pricing" class="py-20 bg-gray-50 dark:bg-gray-800">
|
|
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
|
<div class="text-center mb-16">
|
|
<div class="inline-block px-4 py-2 bg-purple-100 dark:bg-purple-900/30 text-purple-600 dark:text-purple-400 rounded-full text-sm font-semibold mb-4">
|
|
Pricing
|
|
</div>
|
|
<h2 class="text-3xl md:text-4xl font-bold text-gray-900 dark:text-white mb-4">
|
|
Simple, Transparent Pricing
|
|
</h2>
|
|
<p class="text-xl text-gray-600 dark:text-gray-400 max-w-2xl mx-auto">
|
|
No per-order fees. No hidden costs. Flat monthly rate.
|
|
</p>
|
|
</div>
|
|
|
|
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
|
|
{# Essential #}
|
|
<div class="bg-white dark:bg-gray-900 rounded-2xl p-8 shadow-sm border border-gray-200 dark:border-gray-700">
|
|
<h3 class="text-lg font-bold text-gray-900 dark:text-white mb-2">Essential</h3>
|
|
<p class="text-gray-500 dark:text-gray-400 text-sm mb-4">For solo vendors getting started</p>
|
|
<div class="mb-6">
|
|
<span class="text-4xl font-bold text-gray-900 dark:text-white">EUR 49</span>
|
|
<span class="text-gray-500 dark:text-gray-400">/month</span>
|
|
</div>
|
|
<ul class="space-y-3 mb-8 text-sm">
|
|
<li class="flex items-center text-gray-600 dark:text-gray-400">
|
|
<svg class="w-5 h-5 text-green-500 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path></svg>
|
|
100 orders/month
|
|
</li>
|
|
<li class="flex items-center text-gray-600 dark:text-gray-400">
|
|
<svg class="w-5 h-5 text-green-500 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path></svg>
|
|
200 products
|
|
</li>
|
|
<li class="flex items-center text-gray-600 dark:text-gray-400">
|
|
<svg class="w-5 h-5 text-green-500 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path></svg>
|
|
Luxembourg VAT invoices
|
|
</li>
|
|
<li class="flex items-center text-gray-600 dark:text-gray-400">
|
|
<svg class="w-5 h-5 text-green-500 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path></svg>
|
|
1 team member
|
|
</li>
|
|
</ul>
|
|
<a href="/contact" class="block w-full text-center bg-gray-100 dark:bg-gray-800 text-gray-900 dark:text-white px-6 py-3 rounded-xl font-semibold hover:bg-gray-200 dark:hover:bg-gray-700 transition-colors">
|
|
Start Free Trial
|
|
</a>
|
|
</div>
|
|
|
|
{# Professional - Highlighted #}
|
|
<div class="bg-blue-600 rounded-2xl p-8 shadow-xl relative transform lg:scale-105">
|
|
<div class="absolute -top-4 left-1/2 -translate-x-1/2 bg-orange-500 text-white text-xs font-bold px-3 py-1 rounded-full">
|
|
MOST POPULAR
|
|
</div>
|
|
<h3 class="text-lg font-bold text-white mb-2">Professional</h3>
|
|
<p class="text-blue-200 text-sm mb-4">For growing multi-channel sellers</p>
|
|
<div class="mb-6">
|
|
<span class="text-4xl font-bold text-white">EUR 99</span>
|
|
<span class="text-blue-200">/month</span>
|
|
</div>
|
|
<ul class="space-y-3 mb-8 text-sm">
|
|
<li class="flex items-center text-blue-100">
|
|
<svg class="w-5 h-5 text-green-400 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path></svg>
|
|
500 orders/month
|
|
</li>
|
|
<li class="flex items-center text-blue-100">
|
|
<svg class="w-5 h-5 text-green-400 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path></svg>
|
|
Unlimited products
|
|
</li>
|
|
<li class="flex items-center text-blue-100">
|
|
<svg class="w-5 h-5 text-green-400 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path></svg>
|
|
<strong>EU VAT invoices</strong>
|
|
</li>
|
|
<li class="flex items-center text-blue-100">
|
|
<svg class="w-5 h-5 text-green-400 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path></svg>
|
|
Product locations
|
|
</li>
|
|
<li class="flex items-center text-blue-100">
|
|
<svg class="w-5 h-5 text-green-400 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path></svg>
|
|
Purchase orders
|
|
</li>
|
|
<li class="flex items-center text-blue-100">
|
|
<svg class="w-5 h-5 text-green-400 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path></svg>
|
|
Customer export
|
|
</li>
|
|
<li class="flex items-center text-blue-100">
|
|
<svg class="w-5 h-5 text-green-400 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path></svg>
|
|
3 team members
|
|
</li>
|
|
</ul>
|
|
<a href="/contact" class="block w-full text-center bg-white text-blue-600 px-6 py-3 rounded-xl font-bold hover:bg-blue-50 transition-colors">
|
|
Start Free Trial
|
|
</a>
|
|
</div>
|
|
|
|
{# Business #}
|
|
<div class="bg-white dark:bg-gray-900 rounded-2xl p-8 shadow-sm border border-gray-200 dark:border-gray-700">
|
|
<h3 class="text-lg font-bold text-gray-900 dark:text-white mb-2">Business</h3>
|
|
<p class="text-gray-500 dark:text-gray-400 text-sm mb-4">For high-volume operations</p>
|
|
<div class="mb-6">
|
|
<span class="text-4xl font-bold text-gray-900 dark:text-white">EUR 199</span>
|
|
<span class="text-gray-500 dark:text-gray-400">/month</span>
|
|
</div>
|
|
<ul class="space-y-3 mb-8 text-sm">
|
|
<li class="flex items-center text-gray-600 dark:text-gray-400">
|
|
<svg class="w-5 h-5 text-green-500 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path></svg>
|
|
2,000 orders/month
|
|
</li>
|
|
<li class="flex items-center text-gray-600 dark:text-gray-400">
|
|
<svg class="w-5 h-5 text-green-500 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path></svg>
|
|
Everything in Professional
|
|
</li>
|
|
<li class="flex items-center text-gray-600 dark:text-gray-400">
|
|
<svg class="w-5 h-5 text-green-500 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path></svg>
|
|
<strong>Analytics dashboard</strong>
|
|
</li>
|
|
<li class="flex items-center text-gray-600 dark:text-gray-400">
|
|
<svg class="w-5 h-5 text-green-500 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path></svg>
|
|
<strong>API access</strong>
|
|
</li>
|
|
<li class="flex items-center text-gray-600 dark:text-gray-400">
|
|
<svg class="w-5 h-5 text-green-500 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path></svg>
|
|
Accounting export
|
|
</li>
|
|
<li class="flex items-center text-gray-600 dark:text-gray-400">
|
|
<svg class="w-5 h-5 text-green-500 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path></svg>
|
|
10 team members
|
|
</li>
|
|
</ul>
|
|
<a href="/contact" class="block w-full text-center bg-gray-100 dark:bg-gray-800 text-gray-900 dark:text-white px-6 py-3 rounded-xl font-semibold hover:bg-gray-200 dark:hover:bg-gray-700 transition-colors">
|
|
Start Free Trial
|
|
</a>
|
|
</div>
|
|
|
|
{# Enterprise #}
|
|
<div class="bg-white dark:bg-gray-900 rounded-2xl p-8 shadow-sm border border-gray-200 dark:border-gray-700">
|
|
<h3 class="text-lg font-bold text-gray-900 dark:text-white mb-2">Enterprise</h3>
|
|
<p class="text-gray-500 dark:text-gray-400 text-sm mb-4">For large operations & agencies</p>
|
|
<div class="mb-6">
|
|
<span class="text-4xl font-bold text-gray-900 dark:text-white">EUR 399+</span>
|
|
<span class="text-gray-500 dark:text-gray-400">/month</span>
|
|
</div>
|
|
<ul class="space-y-3 mb-8 text-sm">
|
|
<li class="flex items-center text-gray-600 dark:text-gray-400">
|
|
<svg class="w-5 h-5 text-green-500 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path></svg>
|
|
Unlimited orders
|
|
</li>
|
|
<li class="flex items-center text-gray-600 dark:text-gray-400">
|
|
<svg class="w-5 h-5 text-green-500 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path></svg>
|
|
Everything in Business
|
|
</li>
|
|
<li class="flex items-center text-gray-600 dark:text-gray-400">
|
|
<svg class="w-5 h-5 text-green-500 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path></svg>
|
|
<strong>White-label option</strong>
|
|
</li>
|
|
<li class="flex items-center text-gray-600 dark:text-gray-400">
|
|
<svg class="w-5 h-5 text-green-500 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path></svg>
|
|
Custom integrations
|
|
</li>
|
|
<li class="flex items-center text-gray-600 dark:text-gray-400">
|
|
<svg class="w-5 h-5 text-green-500 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path></svg>
|
|
99.9% SLA
|
|
</li>
|
|
<li class="flex items-center text-gray-600 dark:text-gray-400">
|
|
<svg class="w-5 h-5 text-green-500 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path></svg>
|
|
Dedicated support
|
|
</li>
|
|
</ul>
|
|
<a href="/contact" class="block w-full text-center bg-gray-100 dark:bg-gray-800 text-gray-900 dark:text-white px-6 py-3 rounded-xl font-semibold hover:bg-gray-200 dark:hover:bg-gray-700 transition-colors">
|
|
Contact Sales
|
|
</a>
|
|
</div>
|
|
</div>
|
|
|
|
<p class="text-center text-gray-500 dark:text-gray-400 mt-8">
|
|
All plans include a 14-day free trial. No credit card required.
|
|
</p>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- ═══════════════════════════════════════════════════════════════ -->
|
|
<!-- TESTIMONIAL / SOCIAL PROOF -->
|
|
<!-- ═══════════════════════════════════════════════════════════════ -->
|
|
<section class="py-20 bg-white dark:bg-gray-900">
|
|
<div class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 text-center">
|
|
<div class="inline-block px-4 py-2 bg-yellow-100 dark:bg-yellow-900/30 text-yellow-600 dark:text-yellow-400 rounded-full text-sm font-semibold mb-8">
|
|
Built for Luxembourg
|
|
</div>
|
|
|
|
<blockquote class="text-2xl md:text-3xl font-medium text-gray-900 dark:text-white mb-8 leading-relaxed">
|
|
"Finally, a tool that understands what Letzshop sellers actually need. No more spreadsheets, no more VAT headaches."
|
|
</blockquote>
|
|
|
|
<div class="flex items-center justify-center gap-4">
|
|
<div class="w-12 h-12 bg-gray-200 dark:bg-gray-700 rounded-full flex items-center justify-center text-xl">
|
|
👩
|
|
</div>
|
|
<div class="text-left">
|
|
<div class="font-semibold text-gray-900 dark:text-white">Marie L.</div>
|
|
<div class="text-gray-500 dark:text-gray-400 text-sm">Letzshop Vendor, Luxembourg City</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- ═══════════════════════════════════════════════════════════════ -->
|
|
<!-- FINAL CTA -->
|
|
<!-- ═══════════════════════════════════════════════════════════════ -->
|
|
<section class="py-20 bg-gray-900 text-white">
|
|
<div class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 text-center">
|
|
<h2 class="text-3xl md:text-4xl font-bold mb-6">
|
|
Ready to Take Control of Your Letzshop Business?
|
|
</h2>
|
|
<p class="text-xl text-gray-300 mb-10">
|
|
Join Luxembourg vendors who've stopped fighting spreadsheets and started growing their business.
|
|
</p>
|
|
|
|
<div class="flex flex-col sm:flex-row gap-4 justify-center">
|
|
<a href="/contact"
|
|
class="inline-flex items-center justify-center bg-blue-500 hover:bg-blue-600 text-white px-8 py-4 rounded-xl font-bold transition-all duration-200 shadow-lg">
|
|
<span>Start Your 14-Day Free Trial</span>
|
|
<svg class="w-5 h-5 ml-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 7l5 5m0 0l-5 5m5-5H6"></path>
|
|
</svg>
|
|
</a>
|
|
</div>
|
|
|
|
<p class="mt-8 text-sm text-gray-400">
|
|
No credit card required. Setup in 5 minutes. Full Professional features during trial.
|
|
</p>
|
|
</div>
|
|
</section>
|
|
{% endblock %}
|