InternalMarketplace and backoffice contribution / 2025
Problem
A group-buy marketplace needs a complete storefront plus a backoffice for sellers, products, announcements, orders, payments, refunds, notifications, and content.
Solution
Pair a Next.js storefront with Laravel APIs and a Laravel/Inertia dashboard. The backend owns auth, roles, domain services, media, order state, SATIM payments, and dashboards.
Key Features
French public marketplace shell with search, navigation, flash groups, top categories, announcements, contact, and legal pages
Customer authentication with email/password plus Google and Apple social login flows
Account area for profile, password, addresses, favorites, notifications, active orders, order history, receipts, and ratings
Announcement catalog with filters, sorting, related offers, seller rates, favorites, and order availability checks
Checkout flow for delivery address capture, order creation, payment-link generation, payment confirmation, and receipt delivery
Laravel/Inertia backoffice for users, products, announcements, categories, notifications, orders, and profile management
Role and permission layer for admin/seller/client behavior using Sanctum, Socialite, and Spatie Permission
Media pipeline for product galleries and announcement covers with Spatie Media Library
Dashboard analytics for users, orders, announcements, suppliers, commissions, and order trends
Architecture Map
Mermaid
flowchart TB
Buyer["Buyer / group participant"] --> PublicStore["Next.js marketplace"]
PublicStore --> Catalog["Announcements, flash groups, categories, search"]
PublicStore --> Account["Auth, profile, favorites, orders, addresses"]
PublicStore --> Checkout["Checkout and SATIM payment flow"]
PublicStore --> ProxyApi["Next.js route handlers"]
ProxyApi --> LaravelApi["Laravel JSON API"]
Admin["Admin / seller workspace"] --> InertiaDashboard["Laravel + Inertia dashboard"]
InertiaDashboard --> Backoffice["Users, products, announcements, orders, notifications, categories"]
LaravelApi --> Domain["Marketplace domain services"]
Backoffice --> Domain
Domain --> Products["Products and media gallery"]
Domain --> Announcements["Validated announcements and group-buy offers"]
Domain --> Orders["Order lifecycle, delivery, cancel, refund"]
Domain --> Payments["Payment records and SATIM integration"]
Domain --> Notifications["Email and in-app notifications"]
Products --> Media["Spatie Media Library"]
Domain --> Auth["Sanctum, roles, social auth"]
Domain --> Database[("SQL database")]
Payments --> Satim["SATIM payment gateway"]
Notifications --> Mail["Mail / receipt delivery"]