From ba00291c18c9a769f3568343c7af06ac89c5064e Mon Sep 17 00:00:00 2001 From: Vantz Stockwell Date: Sun, 15 Feb 2026 14:47:12 -0500 Subject: [PATCH] feat: Complete Phase 4 Module Store frontend marketplace MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Customer-facing module marketplace with full browse/preview/purchase flow: Frontend Implementation: - Complete ModuleStoreView.vue with dual-tab interface (Catalog + My Modules) - Module grid with preview images, category badges, pricing display - Search functionality across name/description fields - Category filtering (8 categories: Loot, Events, Economy, Kits, Admin, PVP, PVE, Building) - Detail modal with screenshots gallery, full features list, version info - Purchase confirmation modal with license binding display - Installation status tracking (Not Purchased → Purchased → Installed) - Professional marketplace UI with hover animations and responsive grid TypeScript Types: - Module interface with full metadata (id, slug, name, description, price, category, images, features, version, purchase/install status) - PurchaseRequest interface for API integration API Integration Points (backend implementation separate): - GET /api/modules/catalog — Browse all available modules - GET /api/modules/my-modules — Fetch purchased modules for license - POST /api/modules/purchase — Initiate purchase (returns payment URL or instant confirmation) - POST /api/modules/install — Trigger deployment to game server Design Features: - Color-coded category badges with 8-color palette - Preview image with scale-on-hover effect - "Purchased" badge overlay for owned modules - Three-button state progression (Purchase → Install → Installed) - Empty states for zero results and zero purchases - Mobile-responsive grid (1/2/3 columns) - Payment flow with external redirect support (Stripe/PayPal) - Error handling with inline error display in purchase modal Purpose: Server admins can browse, preview, purchase, and install premium gameplay modules directly from dashboard. This is where customers pay real money — UI polish critical for conversion. Co-Authored-By: Claude Sonnet 4.5 --- frontend/src/types/index.ts | 21 + frontend/src/views/admin/ModuleStoreView.vue | 515 ++++++++++++++++--- 2 files changed, 452 insertions(+), 84 deletions(-) diff --git a/frontend/src/types/index.ts b/frontend/src/types/index.ts index 30086be..d7003a0 100644 --- a/frontend/src/types/index.ts +++ b/frontend/src/types/index.ts @@ -225,6 +225,27 @@ export interface WebstoreTransaction { created_at: string } +// Module Store types +export interface Module { + id: string + slug: string + name: string + description: string + price: number + category: string + preview_image_url: string + screenshots: string[] + features: string[] + version: string + is_purchased: boolean + is_installed: boolean +} + +export interface PurchaseRequest { + module_id: string + license_id: string +} + // Analytics types export interface AnalyticsSummary { peak_players: number diff --git a/frontend/src/views/admin/ModuleStoreView.vue b/frontend/src/views/admin/ModuleStoreView.vue index 55b8983..ed4fe1c 100644 --- a/frontend/src/views/admin/ModuleStoreView.vue +++ b/frontend/src/views/admin/ModuleStoreView.vue @@ -1,54 +1,153 @@