Furnivo – E-commerce & Retail Software | Vibe96

E-commerce & Retail

Furnivo

Source code included

Self-hosted Laravel ecommerce for luxury furniture with Shopify-style admin, Stripe & multi-currency

Built by Buildify Updated 14 Oct 2026 62,364 lines of code

Open live demo Built withClaude Code

About this software

About Furnivo

Furnivo is a complete single-store ecommerce platform built on Laravel 12, MySQL 8 and Tailwind CSS 4. It ships with a designed storefront theme (Furnivo) for furniture and lighting brands, plus a full admin panel for products, orders, customers, content and settings. The storefront supports English and Arabic (RTL), multi-currency display, guest checkout or customer accounts, Stripe card payments and cash on delivery, discount codes, product reviews with photos, stock alerts, and abandoned-cart reminders. The admin panel offers product variants, bulk CSV import/export, inventory tracking with a full movement log, partial fulfilment and refunds, returns/exchanges, draft orders, a media library with auto WebP conversion, role-based access (Owner, Manager, Orders, Content), and a visual theme customiser. All content (products, categories, brands, pages) is translatable; the theme is replaceable (resources/themes/<name>). Includes 446 automated tests, strict CSP, CSRF protection, rate limits, and encrypted credential storage.

Category: E-commerce & RetailStack: Laravel 12.69 · MySQL 8.0Built with: Claude Code Licence: Single-site, full source

Why Furnivo

What makes it better
than the alternatives

  1. 01

    Shopify-style admin with roles

  2. 02

    Translatable content in English and Arabic

  3. 03

    Inventory service with full audit trail

  4. 04

    Theme system with visual customiser

  5. 05

    Rich-text sanitiser and structured data

Storefront

  • Home page with toggleable sections (hero slider
  • brand logos
  • collections
  • product rows
  • testimonials
  • scene images)
  • Collection and brand listing pages with filters (category
  • price
  • brand
  • colour
  • material) and sorting
  • Product pages with options
  • variants
  • gallery
  • reviews with photos
  • stock alerts
  • per-product delivery/returns text
  • Bag drawer
  • wishlist
  • recently viewed
  • guest checkout or customer accounts with address book
  • Multi-currency display (CurrencyService)
  • VAT-inclusive prices
  • discount codes and Buy X get Y promotions
  • Customer account: orders
  • invoices
  • returns/exchanges
  • reorder
  • address management
  • Static landing page at /landing/ (LandingController serves resources/landing/

Admin Dashboard & Analytics

  • Sales dashboard with revenue
  • orders
  • conversion rate
  • top products
  • SalesReport service: daily/weekly/monthly charts
  • year-over-year comparison
  • Funnel analytics: product views → add to bag → checkout → paid
  • Customer insights: new vs returning
  • lifetime value
  • top customers
  • Activity log (Auditable trait): who changed what and when

Product Catalog

  • Products with variants (ProductVariant)
  • options (ProductOption
  • ProductOptionValue)
  • SKU
  • barcode
  • cost
  • compare-at price
  • SaveProduct action coordinates product
  • options
  • variants
  • images and stock in one transaction
  • Bulk actions (ProductBulkActions): activate
  • deactivate
  • delete
  • change status
  • assign category
  • CSV import/export (ProductCsv
  • ProductCsvImporter
  • ProductCsvExporter
  • ProductCsvValidator uses ProductRequest rules)
  • Media library (MediaService
  • ImageProcessor): upload → WebP in 3 sizes (original
  • medium 800px
  • thumb 200px) with PHP GD
  • Categories with parent/child tree (Category::flatTree)
  • brands with logo and origin
  • Product search (ProductSearch) with facets (ProductFacets)
  • recently viewed (RecentlyViewed service)

Inventory Management

  • Stock tracking per variant (ProductVariant.track_inventory
  • stock_quantity)
  • InventoryService: adjust
  • set
  • reserve
  • release methods; only place stock changes
  • InventoryMovement log: quantity
  • reason (InventoryReason enum: restock
  • damage
  • sale
  • return
  • adjustment)
  • admin
  • note
  • timestamp
  • Low stock threshold (Settings → Inventory)
  • stock alerts sent to customers (SendStockAlerts command)
  • Inventory screen: filter by low/out of stock
  • adjust with reason and note
  • view movement history

Orders & Fulfilment

  • Order model: status (OrderStatus enum: pending
  • processing
  • shipped
  • delivered
  • cancelled)
  • payment_status (PaymentStatus enum)
  • fulfilment_status (FulfillmentStatus enum)
  • PlaceOrder action: validate
  • calculate totals (TotalsCalculator)
  • reserve stock
  • create order
  • send confirmation email
  • OrderService: updateStatus
  • addNote
  • sendEmail; FulfillmentService: ship
  • deliver
  • partial fulfilment
  • RefundService: full or partial refunds
  • stock release
  • Stripe refund API call
  • Draft orders created by staff Admin/Sales/DraftOrderController
  • invoices (PDF view)
  • timeline
  • Returns/exchanges (ReturnService
  • Return model): customer requests
  • admin approves/rejects
  • refund or exchange
  • Abandoned cart reminders (SendCartReminders command
  • CartReminder mail): sent after 24 hours if unpaid
  • Unpaid orders auto-cancelled after UNPAID_ORDER_MINUTES (ReleaseUnpaidOrders command)

Payments & Shipping

  • PaymentManager with gateways: StripeGateway (hosted checkout)
  • CashOnDeliveryGateway
  • ManualGateway
  • StripeClient wraps Stripe API; StripeWebhookHandler processes payment_intent.succeeded
  • payment_intent.payment_failed
  • ShippingService with carriers: FlatRateCarrier
  • AramexCarrier (live rates via SOAP API)
  • ShippingDestination: Country → State/Region → City addresses; UAE emirates built in (STORE_EMIRATES)
  • Tax settings: VAT rate
  • inclusive/exclusive
  • tax number displayed on invoices

Customers & Marketing

  • User model: name
  • email
  • phone
  • locale
  • is_active; addresses (Address model) with label
  • Customer screen: orders
  • lifetime value
  • last order
  • deactivate account
  • Reviews (Review model): rating
  • comment
  • photos (Media)
  • moderation (is_approved)
  • Subscribers (Subscriber model): email
  • subscribed_at; newsletter signup form
  • Enquiries (Enquiry model): custom order requests
  • contact messages
  • Discount codes (Discount model): percentage or fixed
  • minimum order
  • usage limit
  • date range
  • Promotions (Promotion model): Buy X get Y
  • free shipping
  • category/product conditions

Content & SEO

  • Pages (Page model): slug
  • title
  • content (rich text)
  • template (about
  • careers
  • faq
  • legal)
  • is_active
  • Menus (Menu model): header
  • footer; MenuRepository builds nested structure
  • Banners (Banner model): image
  • link
  • position
  • is_active; shown on home/collection pages
  • Rich text editor (Trix) with HasRichText trait: cleans HTML on save (RichText::clean allow-list)
  • renders with RichText::render
  • SEO: schema.org Product and BreadcrumbList (StructuredData service)
  • sitemap.xml (SeoController)
  • robots.txt
  • canonical URLs
  • Translatable fields (spatie/laravel-translatable): name
  • description
  • seo_title
  • seo_description in JSON columns

Settings & Configuration

  • SettingsService: rows in settings table
  • cached
  • read with setting('group.key')
  • General: store name
  • logo
  • contact details
  • social links
  • timezone
  • order number prefix
  • Currencies: base currency (STORE_CURRENCY)
  • display currencies (Currency model)
  • CurrencyService converts prices
  • Checkout: guest checkout
  • account required
  • terms & conditions page
  • Notifications: order confirmation
  • status updates
  • low stock alerts
  • cart reminders (OrderNotifier
  • OrderEmails)
  • Mail server: SMTP credentials
  • from address
  • test email (MailServerController)
  • Credentials: Stripe keys
  • Aramex account
  • reCAPTCHA (stored encrypted in settings
  • Credentials service decrypts)
  • Tracking: Google Analytics
  • Facebook Pixel
  • custom head/body scripts (CustomCode service)

Theme Customisation

  • ThemeSettings service: THEME_SECTIONS maps section keys to Blade files in storefront/home/sections/<key>.blade.php
  • Online Store → Customize: colours (primary
  • accent
  • background)
  • fonts (heading
  • body from Google Fonts)
  • announcement bar text/link
  • Homepage sections: toggle on/off
  • reorder (stored in settings.theme.sections_order
  • settings.theme.sections_disabled)
  • Custom CSS/JS: settings.theme.custom_css
  • settings.theme.custom_js injected into <head>
  • Draft preview: settings.theme.draft stores unpublished changes
  • /admin/online-store/preview shows draft
  • Publish button copies draft to live

Quality report

Manually reviewed

94/ 100

Automated audit score

✓ Passed the audit

Passed the audit and a manual review.
Audit run: 6 Oct 2026
Reviewed by Vibe96 staff, Dubai.

Security95
Code structure82
Docs & completeness100
Dependency health100
Build & deploy95
Reviewer notes (1 minor)

Strong authentication and role checks; minor ownership gaps on read endpoints. None of these stop the software from working; the developer has been told and improvements come in a future update.

Versions & updates

Release history

Current version

1.2.0
released 6 Oct 2026

Updates in the last 90 days

1
1 version · 0 patches

Buyers

0
full source, single-site licence

Updates included

1 year
free from purchase
  1. 1.2.0 Version Current6 Oct 2026 ✓ Reviewed & audited
    • New: full Arabic storefront — theme text, products, pages, menus and demo content
    • New: Country → State/Region → City addresses, with delivery countries chosen in settings
    • New: wide full-screen admin layout on large monitors
    • New: Furnivo-designed 404 page with search and collection tiles
    • New: store:demo-history — two years of sample orders and reports for demo shops
    • New: ALLOW_FRAMING_FROM — show the public pages in a marketplace's live-demo iframe; admin never framable
    • New: white logo in the admin top bar
    • Fix: language and currency dropdowns show an arrow and readable options
  2. 1.0.0 First release 4 Oct 2026 ✓ Reviewed & audited

How updates work: versions add features and go through the full AI audit and human review. Patches are small fixes, audited and checked by a reviewer before release. Buyers get every update free for 1 year and are emailed the how-to-apply steps.

What you get

  • </>Full source codeThe complete audited source, delivered as a download from your account. No obfuscation.
  • ▤DocumentationSetup guide, architecture notes, CLAUDE.md and AGENTS.md.
  • ↻One year of updatesEvery new version the builder publishes, free for 12 months.
  • ♧30 days of supportInstallation and defect support through Vibe96 tickets.
$40Single-site licence Details