The word "ecosystem" is so worn out in the SaaS world that it has lost all meaning. We replaced it with specifics: the Netorigo ecosystem is where one admin interface (admin.netorigo.com) drives six backend modules, all in a unified tenant model. In this article we unpack what's actually under the hood, with a concrete order-flow example at the end.
The six modules
The six modules are not six microservices in the classic sense — not a "every module its own repo, its own database, its own deployment" sprawl. They are six functional boundaries inside one NestJS monorepo, each with its own database schema:
- Catalog — products, categories, attributes, media, i18n translations. The
products,product_translations,categories,tagstable family. - Sales — orders, carts, quote requests, coupons. The
sales_orders,cart_lines,quotestable family. - Inventory — stock, warehouses, receivings, reservations. The
inventory_levels,warehouses,stock_movementstable family. - Finance — invoicing, VAT filing, GL accounting. The
invoices,payments,gl_entriestable family. - Logistics — shipping, warehouse pick-pack, carrier API integrations. The
shipments,pick_lists,carrier_quotestable family. - Travelium — travel products, bookings, allotment management. The
travel_products,travel_bookings,allotmentstable family — a domain-specific extension alongside the classic ERP modules.
The sixth module already demonstrates that Netorigo is not a generic e-commerce platform but a domain-extensible ERP. Tomorrow a 7th module could be Education (courses, exams) — under the same admin, the same tenant model.
One tenant, many storefronts
The tenant is the shared legal entity (for instance "Netorigo Ltd."), which can use all six modules. Under one tenant multiple storefronts can run: netorigo.com, travelium.hu, nortinia.com, mediaorigo.hu and 9 more siblings. 13 storefronts, one tenant, six backend modules — this is the current reality.
Storefronts are CMS-editable from the admin: navigation menus, landing pages, category display order, SEO landings. But the product catalog is ONE. A SKU exists once in the Catalog module — which storefront it appears on is just a storefront_visibility flag.
Data flow: a travelium booking runs through
Concrete example. A buyer opens a "Barcelona 4 nights" product on travelium.hu and books it:
- Catalog: the product detail page reads the
travel_productstable (by slug), translations (product_translationsEN locale), stock-status placeholder. - Inventory + Travelium: queries the allotment (any free capacity on the chosen date).
- Sales: the buyer adds to cart, fills in booking data (passenger names, dates).
cart_linesgains atravel_metadataJSONB. - Checkout: price calculation (Finance module VAT logic), coupon check (Sales), payment (payment-provider integration handled by Finance).
- Sales → Inventory: the
sales_orders.confirmedevent triggers an allotment reservation in the Travelium module (travel_bookingsinsert). - Finance: the shared
invoice_generationqueue creates an invoice and submits it to the NAV filing system. - Logistics: if a
gift_voucherPDF accompanies the travel product, the Logistics queue prepares and emails it. - Travelium: 24 hours before the trip, the Travelium module's
travel_reminderscron sends a reminder email.
One customer action — a booking — touched six modules, all under one tenant, one admin interface.
The key: no silos
In the classic "ERP + e-commerce + booking system" triad you have three different pieces of software, three different contracts, three different API integrations. In the Netorigo model it's one contract, one admin, one data flow — and the 6th module can become the 7th tomorrow without rebuilding the client from scratch. That is what we actually call an ecosystem.