GR

GrandNode

Open-source e-commerce platform built on .NET and MongoDB

E-commerce Platforms ★ 1.3k stars Hard setup GPL-3.0

GrandNode is an open-source, multi-store e-commerce platform built with ASP.NET Core and MongoDB. It supports B2B and B2C scenarios with a flexible catalog, multi-language and multi-currency, and a plugin architecture.

Key features

  • ASP.NET Core based
  • MongoDB storage
  • Multi-store support
  • Plugin architecture

Pros & cons

Strengths

  • Scalable architecture
  • B2B and B2C ready

Trade-offs

  • .NET hosting knowledge needed
  • Heavier resource footprint

GrandNode replaces

Last reviewed Sep 13, 2026 · 913 words

GrandNode makes sense for exactly one kind of operator: a shop whose developers write C# for a living and who want a multi-store, multi-currency catalogue they can extend in the language they already know. For everyone else it is a 2 GB, two-container, Hard-difficulty commitment to a stack most self-hosters have never run, and the 1,326 stars tell you how thin the crowd is if something breaks at 2 a.m. That is not a knock on the software. It is a statement about who should be holding it.

Who actually runs GrandNode

The typical GrandNode deployment I have seen is a small B2B wholesaler or a mid-sized retailer with an in-house .NET team, often coming off nopCommerce (GrandNode started as a fork of it in 2017 before moving to MongoDB and ASP.NET Core). They want per-customer price lists, multiple storefronts on one admin, and the ability to write a plugin in C# rather than learn PHP or a JavaScript framework. GPL-3.0 licensing is fine for them because they are not reselling the platform.

If you are a solo self-hoster who wants to sell 40 SKUs of something, you are not that operator. Look at the wider e-commerce category first and come back only if the .NET argument applies to you.

MongoDB is the point, and the catch

Most open-source stores sit on MySQL or PostgreSQL. GrandNode stores catalogue, orders and customers as MongoDB documents, which is why product attributes and multi-language content are flexible without migration scripts every time you add a field. The trade is that your backup and restore procedure is mongodump and mongorestore, your query tooling is Compass rather than psql, and your ops knowledge from every other self-hosted app transfers only partially.

Size the database node properly. MongoDB likes RAM for its working set, and the 2 GB minimum in the listing is for a quiet store. I would not put a live catalogue with real traffic on less than 4 GB across both containers, and I would give the Mongo volume fast storage, since document writes on a spinning disk make checkout feel slow in a way that is hard to diagnose.

Two containers, then a browser wizard

The Docker path is the sane one. The official grandnode/grandnode2 image and a mongo image are all you need, and the repository ships a compose file that wires them together. The application container listens on port 8080. On first launch you are sent to an installation page where you enter the admin credentials and the MongoDB connection string, and the wizard creates the collections and optional sample data.

Two gotchas from experience. First, the install page is only meant to run once; if the container restarts mid-install you can end up with a half-created database and a wizard that will not reappear, so drop the Mongo database and start clean rather than trying to repair it. Second, put a reverse proxy with TLS in front before you set the store URL in admin settings, because that URL is baked into emails, sitemaps and payment callbacks, and changing it later means hunting through settings.

Bare-metal installs mean the .NET runtime, a Kestrel process behind Nginx or IIS, and the same Mongo dependency. It works, but you inherit .NET patching on top of everything else.

Where it beats Saleor and Medusa, and where it doesn't

Against Saleor and Medusa, the two headless stores most self-hosters compare it to, GrandNode wins on having a real storefront out of the box. Saleor and Medusa expect you to build or adopt a Next.js frontend; GrandNode ships themed pages you can put in front of customers on day one, plus an admin that handles B2B quoting, customer groups and tiered pricing without plugins.

It loses on ecosystem breadth. Saleor and Medusa have larger communities, more third-party payment and shipping integrations, and hosting options that do not require you to think about MongoDB. Their plugin authors write TypeScript or Python, which is a much bigger talent pool than C# e-commerce developers. GrandNode's own marketplace is real but small, and several useful plugins are commercial.

Hosting cost reality

A GrandNode store that a business relies on needs, at minimum, a 4 GB VPS or a dedicated VM, Mongo backups shipped off-box nightly, and someone who can read a .NET stack trace. Budget about 20 to 40 dollars a month in compute at last check for a modest store, plus your own time. That is competitive with Shopify Basic only if you value control; if you just want to sell, the Shopify alternatives page is the more honest starting point, because the cheapest option for a tiny store is often not self-hosting at all.

What I'd do

If you have a .NET developer on staff and a B2B or multi-store requirement, run GrandNode with the official compose file, MongoDB on its own volume, 4 GB of RAM, and Caddy in front for TLS. Write your customisations as plugins so upgrades stay clean, and test every upgrade against a mongodump restore first. If you do not have that developer, pick Medusa or Saleor and accept the frontend work, or go hosted. GrandNode is a good platform for its audience, and the whole trick is knowing whether you are in it.

Compare GrandNode

24 head-to-head comparisons.

Similar e-commerce platforms apps