One catalog and price book
Change a product or a price once and the shelf label and the storefront update together. There is no export, no import, and no nightly job that can fail quietly.
Every competing storefront reads from a commerce database that has to agree with your shop. storeDule reads the row the till decrements and the ledger posts against, which is a consequence of the architecture rather than a feature.
storeDule is the shopper surface of grossDule and reads its catalog, pricing, promotions, and stock directly. That is why turning it on is a switch rather than a second system to run.
Change a product or a price once and the shelf label and the storefront update together. There is no export, no import, and no nightly job that can fail quietly.
Shelf and screen share the same count on every sale and every delivery, which is what stops the storefront selling the last one twice.
You set a rule once and both the till and the checkout do the same maths on the same cart. A promotion that behaves differently online is a support call waiting to happen.
Points, member prices, and offers apply the same online as at the counter, because it is one programme rather than two that reconcile.
A neighbourhood shop is not a warehouse. Collect, deliver, and pay-at-store are first-class here rather than plugins bolted onto a model built for parcels.
A fast mobile storefront with a cart, a checkout, and no app install between seeing the link and buying. Browsing follows the categories and variants your catalog already has.
Counter, storefront, and account orders converge into one order record, so the shop floor works one list rather than three screens with three statuses.
Online or on collection, every method settles onto the same books as the counter. Your processor is a choice you can change without changing your storefront.
Slots picked at checkout feed the dispatch round, so the promise made online is the one the store is planning against, not one someone has to honour by improvising.
A return is a reverse movement, not a refund and a shrug: the stock goes back to a slot, the credit note posts, and both are on the order it came from.
Collect orders drop onto the counter queue as a pick list, so a staff member picks from the same screen they serve from rather than a separate tablet.
Placed, picked, ready, collected. Status reaches the customer as it changes, so "is it ready" stops being a phone call somebody has to answer.
An online sale is a sale: the same tax treatment, the same receipt rules, and the same sealed fiscal record as one rung up at the counter.
Slots, cut-off times, and collection windows are yours to set. Delivery is a capability you switch on, not a commitment you have to make to have a storefront.
The operations core: catalog, pricing, stock, promotions, and the books everything settles into. storeDule is a surface on it rather than a system beside it.
The branded website on your own domain, reading the same catalog. Run either, or both, without maintaining two product lists.
Catalog, cart, orders, and fulfilment status are reachable over a documented HTTP API, with events so a delivery partner or a screen in the back room can react.
On the roadmap: company accounts, custom price lists, payment terms, and quotes. Named as a gap because a wholesale customer needs all four, not three of them.
On the roadmap: abandoned basket recovery and customer reviews. Both are table stakes on a hosted platform and neither is shipped here yet.
On the roadmap. Because the catalog is already model-agnostic, joining a network is a projection over an existing model rather than a second data model to maintain.
Tell us how your customers pay and collect today, and we will set the storefront up around it on the catalog you already keep.
Free during early access. Runs on your grossDule core. Your data stays yours.
The full picture, one page at a time.
The shopper side of your store, on the same catalog as your grossDule till. Your first storefront is included.