The ecommerce layer was the wrong place to differentiate
OpenCart could keep being patched, but it was not built for a supermarket catalogue, POS-led pricing or the operational rhythm of a fresh produce business.
An independent grocer, properly online.
A multi-year build covering three things. The store moved off OpenCart onto MyFoodLink with NATPOS at the centre. A new Next.js marketing site replaced the old front. A Railway service does the work MyFoodLink leaves on the floor.

Arnold's chose in 2023 to leave OpenCart and SiteNStore. MyFoodLink replaced the storefront in April 2024 with NATPOS as the source of truth for the catalogue. A Next.js marketing site followed in October 2024. Operational pipelines on Railway stitch MyFoodLink to everything around it.

The problem was not one website. It was a set of old and new systems that needed to behave like one retail operation.
OpenCart could keep being patched, but it was not built for a supermarket catalogue, POS-led pricing or the operational rhythm of a fresh produce business.
MyFoodLink could run transactions, but it was never going to carry the Arnold's story, local delivery pages or the organic search surface the business needed.
MyFoodLink did not expose the data needed for specials, merchant feeds or delivery-zone pages. Those gaps had to be worked around without asking staff to duplicate work.
Two tracks running in parallel. Get the transactional move right. Build the things the platform does not.
Spent the back end of 2023 walking the OpenCart estate with Ben. No patch made supermarket sense for this trade. MyFoodLink with NATPOS already running on the till was the obvious answer.
MyFoodLink went live in April 2024. NATPOS feeds it stock and pricing on the same sheet the registers run. Click-and-collect ships from one source of truth.
Next.js and Prismic replaced the legacy front in October 2024. The site owns the brand voice. It owns the organic search surface MyFoodLink will not rank for.
Arnold's traces back to J.G. Arnold, born in South Australia in 1854. The fruit market opens in 1892. Five generations are mapped into a Prismic-driven timeline. Visitors browse by century or by year. Each generation gets its own family page.

The visible site is only part of it. The real work is the connective tissue around the platforms.
A Railway service runs Playwright scrapers on a schedule. It pulls the live product list with name, weight, unit and photography, then gives staff a portal to price and publish specials.
The same service powers Google Merchant Centre and Local Inventory Ads feeds from the data MyFoodLink exposes indirectly.
MyFoodLink holds the delivery timetable on one shared page. The Railway service scrapes that page. It writes a row per zone into Supabase. Each zone gets a Prismic-editable page with live timetable windows. Local search that one shared URL could never carry now lives one URL deep.
No vanity scoreboard. Just the practical capabilities the business now has.
NATPOS became the source of truth for the till and the online store, reducing the split-brain catalogue problem.
Prismic gives the business control over its story, heritage content and local landing pages without trying to make the ecommerce platform do brand work.
Railway services handle specials, product extraction, merchant feeds and delivery-zone publishing where MyFoodLink does not provide an API.
Delivery-zone pages now exist as individual, editable URLs instead of hiding every zone inside one shared timetable page.