unsubbed.co

Lunar

Lunar gives you modern headless e-commerce platform on your own infrastructure.

Open-source headless e-commerce for Laravel, honestly reviewed. No marketing fluff — just what you get when you self-host it.

TL;DR

  • What it is: A set of MIT-licensed Laravel packages that bring Shopify-grade e-commerce functionality (products, orders, customers, admin panel) to any Laravel application — you build the storefront, Lunar handles the backend [1][2].
  • Who it’s for: Laravel developers building custom storefronts for clients or products. Not a tool for non-technical founders — it requires PHP/Laravel proficiency to deploy and extend [2].
  • Cost savings: Shopify Basic starts at $39/mo with 2% transaction fees and climbs to $399–$2,300+/mo for Advanced and Plus tiers. Lunar self-hosted costs the price of a Laravel-capable VPS (~$10–30/mo) plus your developer time, with zero per-transaction platform fees [2].
  • Key strength: Full Eloquent model access and Laravel conventions mean there is no new DSL to learn — querying products works exactly like querying any other Laravel model [2]. Developers report dramatically faster builds for complex storefronts compared to hacking around Shopify’s API limits.
  • Key weakness: It is a developer tool, not an end-user product. There is no hosted cloud option, no one-click installer, and (as of this review) no production-ready storefront template — the Starter Kit was still listed as “Coming Soon” [2].

What is Lunar

Lunar is an open-source Laravel package (actually a monorepo of packages) that gives you the database schema, Eloquent models, pipelines, and admin panel for a full e-commerce backend — without deciding what your storefront looks like [1][2].

The project’s pitch is exactly what it says on the tin: “An open-source package that brings the power of modern headless e-commerce functionality to Laravel.” [1] You install it via Composer (composer require lunarphp/lunar), run the migrations, and you have a working product catalogue, order management system, customer database, and admin panel ready to extend [2].

The admin panel is built on Filament, the popular Laravel admin UI framework. It handles products, variants, pricing, orders, customers, media uploads, and collections out of the box, and extends through standard Filament plugins and resources [1][2].

What Lunar is not: a hosted service, a no-code platform, or a Shopify competitor in the product-manager sense. If Shopify is the iPhone — closed, polished, works for everyone — Lunar is the framework you use to build a custom Android phone. The freedom is real, but so is the engineering requirement.

As of this review: 3,459 GitHub stars [2], 2,500+ Discord members, and 150,000+ Composer installs [2]. Those install numbers are credible for a Laravel-specific package — the Laravel ecosystem is large but tightly coupled to the PHP community.


Why developers choose it

The honest case for Lunar comes down to three things, based on developer testimonials on the official site and the signals visible in the GitHub community [1][2].

First: Shopify’s API ceiling hits hard for complex stores. The moment you need multi-currency pricing with per-customer-group rules, variant-level inventory with backorder logic, or a headless storefront that doesn’t pass every product lookup through Shopify’s Storefront API rate limits, you start building workarounds. Lunar’s database lives on your server, queries run at Eloquent speed, and there are no API limits because there is no API middleman [2].

Second: Owning the data model matters. One testimonial from the website captures the practical argument: “The database structure alone would take a significant amount of time to engineer, not to mention the ready models and pipelines you can wire up to your own business logic.” [2] Building the schema for a proper multi-currency, multi-channel product catalogue with variant matrices and tiered pricing from scratch is a three-to-four week project for a senior developer. Lunar is that work, already done, MIT-licensed.

Third: It feels like Laravel, not a framework on top of Laravel. The most repeated theme in developer feedback: no cognitive dissonance between the application layer and the commerce layer. Products are Eloquent models. You eager-load variants the same way you eager-load any relationship. Cart and order processing run through standard Laravel pipelines with events you can hook into [2]. One testimonial: “The Livewire integration feels incredibly native, and the highly flexible admin panel easily adapts to complex, bespoke projects.” [2]

The flip side of this praise is its own warning: if you are not a Laravel developer, none of this is accessible to you.


Features

Based on the README and official website [1][2]:

Products & Catalogue:

  • Product types with configurable attribute sets per type (clothing vs. digital goods vs. electronics)
  • Custom attributes: text, rich text, dropdowns, toggles — no schema migrations needed to add new fields
  • Variants with independent pricing, stock, and identifiers (SKU, GTIN, MPN, EAN/UPC)
  • Hierarchical collections for navigation, promotions, and campaigns
  • Image resizing: define conversions once, all sizes available automatically
  • URL management with multi-URL support, automatic redirects, and internationalisation
  • Cross-sells, up-sells, and alternative associations for AOV optimisation

Commerce Engine:

  • Multi-currency pricing with price, compare-at, and cost-price fields
  • Tax rates and zones
  • Tiered pricing and customer-group-specific pricing
  • Inventory tracking with backorder limits and availability controls
  • Flexible shipping: built-in rates table plus custom modifier logic
  • Channels and availability scheduling — publish products to specific channels on a defined date

Orders & Customers:

  • Full order lifecycle: payments, status management, refunds, customer notifications
  • Customer accounts linked to order history
  • B2B ordering: multiple users per customer account
  • Customer groups for segmented pricing and product access

Admin Panel:

  • Built on Filament — extensible through standard Filament plugins
  • Manages all the above from a single interface
  • No custom admin framework to learn

Developer Experience:

  • Standard Eloquent models and relationships throughout
  • Pipeline-based cart and order processing (hook in anywhere)
  • Laravel Scout integration for search
  • Event-driven architecture for extending without modifying core code

What is missing or not yet shipped:

  • Starter Kit (Inertia + Vue storefront): listed as “Coming Soon” on the homepage [2]
  • Payment gateway integrations are not bundled — you bring your own Stripe, Mollie, etc.
  • No built-in carrier-rate API integrations (UPS, FedEx) — shipping is rule-based, not carrier-connected

Pricing: SaaS vs self-hosted math

Lunar has no SaaS tier. It is a package, not a service. Pricing is simple: the software is free under the MIT license [1]. Your costs are:

  • VPS or cloud server: $10–30/mo depending on traffic. A $10 DigitalOcean Droplet (2 vCPU, 2GB RAM) handles modest traffic; production stores with real load want 4–8GB RAM and a managed database.
  • Managed database (optional): $15–25/mo for a managed PostgreSQL or MySQL instance if you don’t want to manage it yourself.
  • Developer time for setup and maintenance: non-trivial — see Deployment section.

Shopify for comparison:

  • Basic: $39/mo + 2% external transaction fees (or $29/mo + 0% if you use Shopify Payments, US only)
  • Shopify: $105/mo + 1%
  • Advanced: $399/mo + 0.5%
  • Plus: starts at $2,300/mo

The per-transaction fee is where Shopify becomes painful at volume. A store doing $50,000/month in GMV on Shopify Basic (using an external payment gateway) pays $1,000/month in transaction fees alone, on top of the plan cost. Lunar charges exactly $0 in transaction fees — your payment processor (Stripe, Braintree) charges their rate, and that’s it.

Concrete math for a mid-volume store: $50K/month GMV on Shopify Basic with Stripe = ~$39 plan + ~$1,000 in Shopify transaction fees + ~$1,500 in Stripe fees = roughly $2,539/month in platform and payment costs.

Same store on Lunar + Stripe = ~$20 VPS + $1,500 in Stripe fees = **$1,520/month**. Over a year that is roughly $12,000 saved — plus you own the infrastructure and can migrate payment processors without rebuilding your frontend.

Caveat: that math assumes you have a Laravel developer either on staff or on retainer. The $12,000 savings disappear if you spend the equivalent hiring someone to maintain it. Self-hosting Lunar makes financial sense only if developer capacity already exists.


Deployment reality check

Lunar is a Laravel package. Deploying it means deploying a Laravel application, which means the full PHP stack: a server with PHP 8.x, Composer, a database (MySQL or PostgreSQL), a queue worker (for async jobs), and a reverse proxy (nginx or Caddy) for HTTPS.

What you actually need:

  • PHP 8.1+ with standard Laravel extensions
  • MySQL 5.7+ or PostgreSQL 10+
  • A queue driver (Redis recommended for production)
  • A web server (nginx or Caddy)
  • Composer installed on the server
  • A domain and SSL certificate
  • Storage for product media (local disk or S3-compatible)

Deployment options for Laravel:

  • Laravel Forge (~$19/mo) is the standard tool for provisioning and deploying Laravel applications to any cloud VPS — it handles the server configuration, Nginx, deployments, and queue workers
  • Ploi (~$10/mo) is the budget alternative
  • Render, Railway, or Fly.io for container-based deploys

Time estimates:

  • Laravel developer with Forge experience: 2–4 hours to a working dev environment
  • Building out a production storefront: weeks to months, depending on scope
  • Non-technical founder going solo: not realistic — this is genuinely a developer prerequisite

What can go sideways:

  • No bundled payment gateway means your first significant integration is always custom. Stripe via Laravel Cashier or a Lunar-specific adapter is the common path, but it requires developer work.
  • The Starter Kit (a production-ready Inertia + Vue storefront) was “Coming Soon” as of the scraped homepage [2] — without it, you are building the frontend from scratch.
  • 3,459 GitHub stars [2] is a healthy number for a Laravel-specific package but it means the community is smaller than WooCommerce or Shopify app ecosystems. Third-party add-ons and plugins exist but the catalog is limited compared to mature platforms.

Pros and cons

Pros

  • MIT license, no strings attached. You can self-host, embed in client projects, white-label it, or build a SaaS on top of it. No “commercial use requires license” clause [1].
  • Zero platform transaction fees. Your payment processor charges their rate; Lunar charges nothing. At any meaningful GMV this is the biggest financial lever.
  • Genuine Laravel-native architecture. Not a separate framework bolted onto Laravel — it’s Eloquent models, pipelines, events, and Scout. Laravel developers can contribute, extend, and debug without learning a second paradigm [2].
  • Full data ownership. Your product catalogue, customer data, and order history live on your server. No vendor can deprecate an API version and break your store overnight.
  • Admin panel included. Filament-based, production-ready, and extensible. You are not building an admin UI from scratch [2].
  • Multi-currency, multi-channel, B2B out of the box. Features that cost real money on Shopify (B2B is Shopify Plus-only, i.e., $2,300+/mo) are in the MIT-licensed core [2].
  • 150,000+ installs and 2,500+ Discord members [2] — genuinely active community, not a dead project.

Cons

  • Requires a Laravel developer. This is a hard prerequisite, not a soft one. Non-technical founders cannot deploy or extend this without engineering help.
  • No hosted option. There is no “click to deploy” managed version. You provision the infrastructure, you maintain it.
  • No bundled storefront. The Starter Kit is “Coming Soon” [2]. Every production deployment currently requires building the customer-facing frontend from scratch.
  • No native payment gateway integrations. Stripe, Mollie, and others need to be wired in manually. This is straightforward for a Laravel developer but it is real work.
  • Small add-on ecosystem. Compared to WooCommerce (tens of thousands of plugins) or Shopify (8,000+ apps), the Lunar add-on catalog is thin. You will build custom integrations for uncommon use cases.
  • Shipping integrations are rule-based, not carrier-connected. There is no native UPS/FedEx rate API. For stores where live carrier rates matter, this is a significant gap.
  • 3,459 stars [2] suggests a solid but niche tool. The risk profile is real: it’s not Shopify-scale battle-tested, and the company behind it is small.

Who should use this / who shouldn’t

Use Lunar if:

  • You are a Laravel developer (or agency) building custom storefronts for clients and you want to stop re-engineering the product/order data model from scratch every project.
  • You have a store where Shopify’s transaction fees are a meaningful cost and your team has the PHP capacity to maintain a self-hosted stack.
  • You need features that require Shopify Plus (B2B ordering, customer group pricing, multi-currency, multi-channel) and don’t want to pay $2,300+/mo for them.
  • You need full control over the data model — custom attribute types, unusual order workflows, deep ERP integrations.

Skip it (use Shopify) if:

  • You are a non-technical founder without a Laravel developer available. Shopify’s friction is the price of not needing to deploy infrastructure.
  • You need a production store in days, not weeks. The missing Starter Kit means frontend buildout time.
  • You rely on specific Shopify apps that have no equivalent in the Laravel ecosystem.

Skip it (use WooCommerce) if:

  • Your team knows WordPress but not Laravel. The concepts are similar but the stacks are not interchangeable, and WooCommerce has a vastly larger plugin ecosystem.

Skip it (use Medusa.js or Saleor) if:

  • Your team is Node.js or Python, not PHP. Medusa (Node) and Saleor (Django) are the equivalent projects in those ecosystems and are farther along in headless storefront maturity.

Alternatives worth considering

  • WooCommerce — WordPress-based, enormous plugin ecosystem, easier for non-technical teams to extend. Less clean architecture than Lunar, but much larger community and more third-party integrations. Free core, but premium plugins add up.
  • Bagisto — Another Laravel-based open-source e-commerce platform. More opinionated and full-stack than Lunar (includes its own Vue storefront). Less developer-friendly for custom builds but faster to deploy as a complete product.
  • Medusa.js — The Node.js equivalent of Lunar. Headless, MIT-licensed, with a plugin system and growing ecosystem. Better choice if your team is JavaScript-native.
  • Saleor — Django/Python headless commerce. More mature GraphQL API, strong for enterprise use cases, more complex to self-host.
  • Sylius — Symfony/PHP headless commerce. More mature than Lunar (been around longer), enterprise-grade, steeper learning curve. Better for large teams already on Symfony.
  • Shopify — The incumbent. No engineering required, massive app store, expensive at scale. The right answer when developer capacity is the constraint.

For a Laravel agency or in-house Laravel team, the realistic shortlist is Lunar vs. Bagisto. Pick Lunar for custom builds where you want full architectural control. Pick Bagisto if you want a working storefront template faster.


Bottom line

Lunar is the right answer to a specific problem: a Laravel team that needs a production-grade e-commerce data model without spending weeks building the schema, and wants to avoid Shopify’s transaction fees and API ceilings. The MIT license, full data ownership, and genuinely Laravel-native architecture make it the strongest option in its category. The trade-offs are honest and unavoidable: no hosted option, no bundled storefront, and a hard dependency on Laravel expertise. For a non-technical founder, this is not the tool — Shopify exists precisely for that case. But for a development agency billing hourly or an engineering team running a store at any meaningful GMV, the math for self-hosting Lunar is compelling, and the 150,000+ installs suggest the community agrees.

If the deployment is the blocker, upready.dev deploys and configures self-hosted stacks for clients. One-time engagement, you own the infrastructure after.


Sources

  1. GitHub — lunarphp/lunar — Official repository, README, license, install instructions. https://github.com/lunarphp/lunar (3,459 stars, MIT license)
  2. Lunar — Official Website — Homepage features, testimonials, community stats (2,500+ Discord, 150K+ installs). https://lunarphp.com
  3. Lunar Documentation — v1.0 technical documentation referenced in README. https://docs.lunarphp.com/

Note: Third-party independent review sources were not available in the research data for this article. The analysis above is based on official documentation, community testimonials published on the project website, GitHub repository data, and comparison with competing platforms from public pricing pages.