After trying Woocommerce, Prestashop and some other carts nothing really quite fit. I needed something that regular no so highly paid hourly employees could handle and something that was flexible enough to support many customizations. I was also quite annoyed by shopping cart vendors who endlessly update stuff and break things at the worst time. Update the cart, get a call the next day about what's not working now.
I happened to stumble across a static site generator, HUGO and thought, this is cool. Kind of like what we did back in the 90's when we generated thousands of html pages because perl/cgi was such a resource hog. Problem was I'm lazy and Hugo wanted thousands of config files and fiddly stuff and it was far from being interactive since it was a static site generator.
Then it dawned on me. Use node-red to generate thousands of Hugo content files and build the site that way. For the actual cart math thingy, use node-red to add up the items and process the transaction.
Seems simple enough. First attempt worked, processed sales and integrated with stripe. Items were pulled out of files dumped from the point of sale system. Things were parsed, substituted into markdown files and html was generated. I ran the cart for about a year. It was fast, robust and easy to deal with. Unfortunately I didn't know quite what I was doing the first time, we usually don't. There were things I didn't take into account and capabilities I wanted to add.
So I gutted the system and started a rewrite. Code was cleaned up, features added, things rewritten to make them cleaner. The total code base was cut in half and organized far better.
Overall, I'm very happy. I constantly get thrown curve balls and changes and the node-red system is very flexible. I wake up one morning to find that they put youtube links in a bunch of my data. No problem. 15 minutes later those links are being turned into embedded videos on the items page. I'm told there needs to be a cap on transaction amounts, no problem. 15 minutes done. The ability to customize the system compared to other carts I have worked with is just amazing.
The typical problem with other open source carts is you fiddle with the guts and the next time they put out updates your customizations go to hell. This is no problem. No one else is mucking around with my stuff all the time "improving" it.
Security is a major issue with a lot of the shopping carts. Huge code base, huge attack surface. Nodered sits behind a proxy. Few and specific entry points are allowed in and carefully controlled. The vast majority of the site is static html.
Processing power needed is absurdly low. Wordpress on an instance twice the size melts down while this has no detectable load.
Nodered plays quite well with Hugo. I would assume it's the same for other static site generators and probably also Ghost. I'm considering using Hugo and NodeRed as a content management system where Nodered is used to edit content files that Hugo then builds into a site.
Prestashop had a massive back end and the people responsible for filling the orders were intimidated by it. Not to mention inventory updates were a mess. The back end of this cart has about 10 buttons. It does nothing but what needs to be done. Updating inventory takes about a minute and it is bone head simple.
One of the new tasks was to include all the items from a vendor which are essentially being locally drop shipped. The vendor provides a spreadsheet of prices and they have a website displaying all the items. The cart spiders the vendors website, extracts information, pulls pictures and creates a json structure for all the items for inclusion in the site. There is no database. The whole site is essentially generated from a couple excel files and a big pile of pictures. The process takes about a minute. There are now about 2000 items.
There are a lot of features the cart doesn't have. For example shipping. Because in this case items are not shipped. I have no doubt I could add in shipping capabilities if needed. At this point adding new features is actually a joy.
The amazing thing however is that I'm not much of a programmer and I have done this in my spare time. I taught myself basic javascript via function nodes. I understand pretty much how everything works and I can find anything I need. Prestashop on the other hand was a mass of tangled mess and just finding the right file to edit for customizations was a chore.