DEV3 Shopnest – Single-Vendor Store Laravel Script with Flutter Customer & Owner Apps

Self-hosted single-store e-commerce on Laravel 12 and Filament 4 with a 3D storefront, multi-warehouse stock, flash sales, gift cards, loyalty, returns and refunds, a REST API, and Flutter customer and store-owner apps.

by DEV3 TechnologiesVerified Author(0) 0 sales 0 viewsUpdated 04 Nov 2026

Video tour. Pick a section below to browse 109 screenshots in 34 sections.

Shopnest is a single-store e-commerce script you host yourself: one business, one catalogue, one admin team. It is built by DEV3 Technologies on Laravel 12 and Filament 4, with a Blade storefront, a REST API and two Flutter apps: a customer app and a store-owner app. The download includes a demo shop called Verdalune Goods (fictional brand, people and data) so you can click through every screen before you replace it with your own catalogue.

No live demo: the grouped screenshots and the video tours above show the storefront, every admin module and both apps. Install it with the demo data to try each staff role on your own server.

Storefront

  • A home page with a 3D product shelf in the hero (three.js, loaded lazily, with a still poster for browsers that ask for reduced motion), bestseller rails, a flash-sale countdown with claimed meters, and a scroll-driven story section.
  • Shop and category pages with category, brand, price, colour, size, rating and stock filters, shareable URLs, search with suggestions, and a deals page for flash sales and automatic offers.
  • Product pages with a gallery, a variant picker with live price and stock, a 3D and 360 viewer, reviews with verified-buyer badges and helpful votes, back-in-stock requests, bundles, wishlist and compare (up to four products).
  • A bag drawer and cart page with free-shipping progress, coupons, gift cards and loyalty points; a stepped checkout with saved addresses; guest order tracking by number and email, and a delivery map drawn in code.
  • Light and dark themes, and English plus Arabic with a right-to-left layout.

Catalogue and stock

  • Four product types: physical, digital, bundle and gift card. Variants carry their own SKU, barcode, price, compare-at price and weight. Attributes feed the storefront filters.
  • Stock per warehouse: on-hand, reserved and reorder-point levels, adjustments, transfers and a read-only movement trail. Each order is fulfilled from the highest-priority warehouse that has the stock.
  • A bundle's stock is worked out from its parts.

Pricing, offers and rewards

  • Coupons: percent, fixed or free shipping, with segment, category and first-order rules.
  • Promotions: automatic discounts, buy-X-get-Y, tiered spend-and-save and timed flash sales with unit caps. Customer segments are rule-based and also limit who can use a coupon.
  • Gift cards are bought on the site as a digital item and issued only once money has been received. They behave like cash: automatic promotions never discount them, they earn no points and they do not count towards coupon minimums or free shipping.
  • Loyalty: tiers with spend thresholds and point multipliers, a points wallet and a store-credit wallet. Gift-card balances, points and credit all sit in the same ledger as the tax and wallet tables, so they can be audited.
  • Checkout accepts a card, cash on delivery, store credit, a gift card and points in one order.

Orders, returns and refunds

  • An order moves from pending through confirmed, processing, packed, shipped and out for delivery to delivered and completed, with a timeline of every event. Invoices and credit notes are numbered and download as PDF.
  • Customers request a return per order. Staff approve it, receive it with optional restocking, and refund to the original payment, to a gift card or to store credit. The refund order is gateway first, then gift card, then store credit.
  • Unpaid card orders expire after 30 minutes by default and give back their stock, coupon use and tenders. A payment that lands on a cancelled order, or a second payment on a paid one, is refunded automatically.
  • Abandoned carts: idle carts that have an email address get a recovery message with a link that restores the cart, and recovered orders appear in the reports.

Admin panel

A Filament 4 panel at /admin with a dashboard (KPIs, sales chart, orders by status, top products, low stock, a 3D live-orders globe), orders, invoices, returns, products, categories, brands, attributes, warehouses, stock, customers, segments, abandoned carts, reviews (approve, reject, reply), coupons, promotions, gift cards, loyalty tiers, shipping zones and rates, pages, banners, an SEO panel with redirects, reports with CSV export, settings, roles, an audit log, system health and backups. Five staff roles come ready: admin, manager, fulfilment, support and marketing.

Mobile apps and API

  • Customer app (Flutter): browsing, search, product pages with a spinning 360 view, wishlist, cart, checkout, orders, tracking, invoices, returns, loyalty and gift cards, English and Arabic, light and dark, tablet layouts.
  • Owner app (Flutter, for admins and managers): a sales dashboard with period switching, orders and status actions including a ship sheet, stock alerts, returns, review moderation and a profile.
  • Both apps run in an offline demo mode by default and switch to your server with a build flag. The API lives under /api/v1 with Sanctum tokens and a reference at /api/docs.

What is in the download

The Laravel application (shopnest/, with Composer packages and compiled assets included, so Node.js is not needed to run it), the two Flutter apps, the vendored Flutter core package, an HTML guide, the API reference and a licence file. A web installer at /install checks the server, connects MySQL or SQLite, creates the admin account and loads either the demo store or an empty install.

Quality checks

On the packaged build: static analysis clean (Larastan level 6 with 0 errors, Pint clean, 471 PHP files linted), 207 Pest tests with 2,799 assertions, 55 pages checked in a headless browser, the public JavaScript and CSS at 53.7 KB gzipped, and a fresh unzip installed through the web wizard and signed in as admin. On mobile, Lighthouse scored 85 or more with gzip enabled (home 90, shop 92, product 90).

Good to know

  • Payments: the default gateway is a simulated one. Stripe, PayPal and Razorpay drivers are included but were never tested against live accounts; test each in its sandbox before you take real money.
  • SMS and push: one-time codes and SMS go to the log until you configure Twilio or Vonage, and push is simulated until you add FCM or APNs keys. Neither was tested with a live account.
  • Mobile apps: the apps have not been tested on physical devices. The card web view, tel: links and PDF or download links were not exercised inside the apps, and the real-backend checks cover the main shopping flow rather than every edge case (COD refunds, late-payment refunds, order expiry and download locks are covered by the Laravel tests, not by the app smoke test). Guest flows in the app are covered by widget tests against the built-in mock only.
  • Delivery map: the live courier map uses simulated GPS. There is no courier integration.
  • Languages and currency: Arabic covers the interface only; catalogue text stays in the language you entered it. There is one store currency and no currency display switcher.
  • No exchanges: a return can be refunded to the original payment or to store credit; exchanges are not built, so the customer reorders.
  • Cron is required: without the scheduler, unpaid card orders are not cancelled and keep their stock reserved, and cart recovery messages are not sent.
  • Demo mode wipes data: never leave DEMO_MODE=true on a live store; it reloads the demo data nightly.
  • Performance: the Lighthouse figures above hold with gzip or brotli turned on in your web server; without compression the home page scored 69 in our run.
  • Single store only: one merchant, one currency, no vendor accounts. The sneaker 3D model is the weakest of the product models.
  • Flutter apps need the Flutter SDK to build; the download contains source, not store-ready binaries.

How it's built

Architecture, stack, key decisions and the quality gates DEV3 Shopnest passed before release.

The engineering behind Shopnest, the DEV3 single-store script: Laravel 12 and Filament 4 on a shared core, money held in one ledger for points, credit and gift cards, stock reserved per warehouse, refunds in a fixed order, and Flutter apps that talk to the same API.

The problem it solves

A single-store shop looks simple until the money moves. One order can be paid with part card, part gift card, part store credit and part loyalty points. A gift card must never be discounted or earn points on its own purchase. A card payment can land after the shopper has cancelled. Stock has to be held while a card order is unpaid and released if it never is, and fulfilment has to pick the right warehouse. Returns must go back to the right tender, and a cash-on-delivery order has no gateway payment to refund at all. On top of that the owner wants to watch the shop from a phone, so the same rules have to be reachable through an API, not just the admin panel.

Architecture and approach

Shopnest is a Laravel 12 application with a Filament 4 admin panel at /admin, a Blade storefront and a Sanctum-secured REST API under /api/v1. Two Flutter apps, one for customers and one for owners, use that API. All amounts are stored as integers in minor units.

One ledger for every kind of value

  • Shared core wallets. Loyalty points are a points wallet, store credit is a currency wallet, and each gift card is a wallet held by the card. Tax rates also come from the core. This keeps balances auditable and lets the admin adjust them with a recorded reason.
  • Gift cards behave as cash. They are issued only after money is received (card capture, or cash collected on delivery), are never discounted by automatic promotions, earn no points and do not count towards coupon minimums or free shipping. Cancelling a paid order revokes unspent gift cards and refuses if one was already spent.

Orders, stock and payments

  • Warehouses with priorities. Stock levels are kept per warehouse, product and variant (on hand, reserved, reorder point) with a movement record for every change. An order is fulfilled from the highest-priority warehouse that has the stock.
  • Unpaid orders expire. A scheduled command cancels unpaid card orders after a configurable time (30 minutes by default) and returns the stock, coupon use and tenders. A payment that arrives for a cancelled order, or a second attempt on a paid one, is refunded automatically.
  • Refund order. Refunds go to the gateway's refundable amount first, then the gift card, then store credit. Cash-on-delivery orders have no gateway payment, so their refund goes to store credit, and a guest COD refund is recorded as owed by hand instead of being marked as paid.

Storefront and apps

  • Blade with a lazy 3D layer. The hero shelf and the product 360 viewer are three.js scenes built from procedural models, loaded only when needed, with a still poster as fallback. The public page ships 18.7 KB of JavaScript and 35.1 KB of CSS gzipped.
  • Roles on the API. App tokens carry an app ability, and the owner API re-checks the staff role on every request.
  • Offline demo in the apps. Both Flutter apps include a built-in mock, so they run without a server; a build flag points them at a real one.

Quality gates and results

Shopnest 1.0.0 passed all seven release gates of the DEV3 Laravel suite on the packaged build:

  • Static analysis: composer validate, Pint clean, Larastan level 6 with 0 errors, and php -l on 471 files.
  • Tests: 207 Pest tests with 2,799 assertions.
  • Front-end budget: 53.7 KB gzipped on the public page against a 180 KB budget, with the three.js chunk loaded lazily.
  • Database: the demo and empty seeders run on MySQL 8 and on SQLite.
  • Browser smoke test: 55 pages checked in headless Chromium, including the storefront checkout path.
  • Installer: the packaged zip unzipped clean, ran the /install wizard with MySQL and demo data, and signed in as admin.
  • Secret scan: clean across 20,262 files.

Mobile Lighthouse scores were 90 (home), 92 (shop) and 90 (product) with gzip enabled. The payment drivers, push, SMS and the Flutter apps on real devices have not been tested live; the listing's "Good to know" section lists the limits.

Tech stack

Area Technologies
Backend Laravel 12, Filament 4 admin, Sanctum REST API, Laravel Reverb (optional), Scheduler and queue, Spatie permissions
Commerce engine Integer minor-unit money, Core wallet ledger, Warehouse stock reservation, Promotion engine, Refund service, Invoice PDFs
Storefront Blade, Tailwind CSS 4, Vite 7, three.js 3D shelf and 360, Lenis, View Transitions
Mobile Flutter (Dart 3.13), Riverpod, go_router, dio, Offline demo mode
Data MySQL 8, SQLite, Deterministic demo seeders, Audit log
Integrations Simulated gateway, Stripe driver, PayPal driver, Razorpay driver, FCM / APNs push drivers, Twilio / Vonage SMS drivers

Inside the build

Signature 3D shelf: A studio-lit shelf of real catalogue pieces turns gently and lifts each product as you point at it. Signature 3D shelf — A studio-lit shelf of real catalogue pieces turns gently and lifts each product as you point at it.

Bestseller rails: Favourites, new arrivals and bestsellers come straight from the live catalogue. Bestseller rails — Favourites, new arrivals and bestsellers come straight from the live catalogue.

Guides & articles

Practical guides and engineering write-ups for DEV3 Shopnest.

Running one online shop: what a store owner should expect from a script

Last updated
Running one online shop: what a store owner should expect from a script: DEV3 Shopnest

Most advice about e-commerce scripts is written for marketplaces with hundreds of sellers. If you run one shop, your questions are different: will the stock be right, can I run a Friday sale without a developer, what happens when someone pays with half a gift card, and can I check the day's orders from my phone? This guide follows one ordinary week in a single store and shows what DEV3 Shopnest does at each point. It is a Laravel 12 and Filament 4 application with two Flutter apps, and the demo shop in it is the fictional Verdalune Goods.

The Shopnest storefront: a studio-lit 3D shelf of products above the shop's search and categories

Monday: stock arrives

Goods come in at two places, so stock is kept per warehouse and per variant: on hand, reserved and a reorder point. You receive, adjust or transfer stock in the admin, and every change leaves a row in a read-only movement trail. When an order comes in, it is fulfilled from the highest-priority warehouse that has the units. Bundles do not hold stock of their own; their availability comes from their parts.

The owner app lists everything at or below its reorder point, lowest first, across all warehouses, so the Monday check fits on a phone screen.

The owner app's stock alerts: items at or below their reorder point, lowest first

Wednesday: a flash sale

A timed promotion has a price, a unit cap and a countdown. The home page and the deals page show the countdown and a claimed meter, and the sold count rises only when an order is paid. If you would rather not run a timed sale, the same promotion screen offers automatic discounts, buy-X-get-Y and tiered spend-and-save offers. Coupons can be limited to a customer segment, a category or a first order.

The promotions screen: automatic, buy-X-get-Y, tiered and timed flash sales with unit caps

Thursday: a customer pays with three things

The checkout accepts a card, cash on delivery, store credit, a gift card and loyalty points, alone or together. Points and credit live in the same ledger as the gift cards, so the totals line up with the audit trail. Gift cards are treated as cash: a gift card is never discounted, earns no points and is only issued once the money has arrived. If a card payment lands after the order was cancelled, Shopnest refunds it automatically instead of leaving it for you to find.

The bag: free-shipping progress, coupon, gift card and savings before checkout

Friday: a return

The customer starts a return from their account. You approve it, receive it, optionally put the stock back, and refund. The refund goes to the gateway first, then to the gift card, then to store credit. Cash-on-delivery orders have no gateway payment, so they are refunded to store credit. Exchanges are not built in: you refund or credit and the customer reorders.

The week as a video

The tour below runs through the storefront, a mixed-tender checkout, tracking, the admin dashboard, stock, promotions, returns and reports.

Video tour of Shopnest

Things to check in any script, including this one

  • Cron. Shopnest needs the scheduler to expire unpaid orders and send cart recovery messages. Check what your host allows.
  • Payments. The default gateway is simulated. Stripe, PayPal and Razorpay drivers are included but have not been run against live accounts, so budget time to test them in each provider's sandbox.
  • Apps. The Flutter apps are source code to build and brand, and they have not been tested on physical devices.
  • Currency and language. One store currency, and Arabic covers the interface rather than your product text.
  • Quality. Shopnest 1.0.0 ships with 207 Pest tests, Larastan level 6 with no errors and 55 pages checked in a headless browser.

The listing includes grouped screenshots of the storefront, every admin module and both apps, and the "How it's built" section covers the architecture.

Frequently asked questions

The complete source code (version 1.0.0) as a download from your account, with the setup and usage guides shown on this page. You can modify the code to suit your product.

Buying guides: Laravel scripts with Filament panels and a web installer · Next.js or Laravel for a SaaS script?

More from this author

View all

Related in Web Scripts & Software

View all