Skip to main content
Appify - consult, develop, support
HomeCase studiesAbout usBlogResourcesGet in touch

Mobile Development

  • iPhone app development
  • Android app development
  • Native app development
  • Tablet app development
  • iPad app development
  • Cross-platform solutions

App Development

  • AI-powered development
  • AI integration services
  • Web app development
  • Enterprise app development
  • SaaS development
  • MVP development
  • Custom app development

Hire App Developers

  • Hire dedicated teams
  • Hire startup tech partners

Design Services

  • UI/UX design services
  • Mobile app design
  • Web app design
  • Website design
  • App redesign

Specialised Services

  • Development for marketing agencies
  • Technical discovery & Scoping
  • AI consulting Ireland
  • AI development consulting
  • App modernisation and code refactoring
  • App maintenance
  • QA testing services
Home
Our case studies
About Appify
Our Blog
Resources
Contact
Appify - consult, develop, support
HomeCase StudiesAI Consulting IrelandMobile App Development IrelandExplore Our BlogResourcesFAQContact us

Appify

Award Winning App Developers Ireland

Expert app developers in Ireland, building mobile apps and digital products for startups, enterprises, and well-known brands.

Schedule a meeting

Book a free initial consultation with our app development experts and let's discuss your app design and development options.

Book a Call

Business Hours

Monday - Friday:9:00 AM - 5:00 PM
Saturday - Sunday:Closed
Contact
1 800 852 307[email protected]

Head Office

Appify Ltd., Ashfield, Tullamore, Co. Offaly, Ireland. R35 KX60

View on Map
Customer Reviews
5.0(22 reviews)

Jaspal Kharbanda

"What is really impressive was a value-driven engagement with Appify. They genuinely care about delivering quality."

Stephen Gribben

"Appify have become more than just my tech partner... Their communication led to seamless collaboration."

Leave a Review

Find Us

Google MapsGet Directions
Privacy PolicyTerms & ConditionsVisit our AI sister site
LinkedInYouTubeInstagramTikTokFacebook
© Appify Digital 2026
Proof 01 · Store-to-Print Pricing EngineAppify Digital case study

Case studyFranchise pricing platformWeb

Over 2,000 stores. One print deadline. Every price had to be right.

Before each national campaign, a global franchise business prints new price displays, posters and window graphics for every one of its stores across the UK and EU. Head office suggests the prices, but each franchise owner has the final say. We built the system that gathers all of those decisions on time and hands the printers a single sheet they can trust.

Start a conversationSee how we keep it secure
From store to print, in sixty seconds · synthetic data
750+
franchise owners pricing their own stores through it
2,000+
stores pricing through it every campaign
~326,000
product prices set in every campaign
32 months
live, and still growing

01 · The problem

A price list thousands of people can change, and a printer who can't wait

Picture a campaign launch. Head office has new recommended prices for the whole range. Every store sits in a price zone, so the same product can cost a little more in a city centre than in a small town. But each franchise owner runs their own business, so they can keep the suggested price or set their own.

Somebody had to collect those decisions from every store, check them, and get them to the printers before a fixed deadline. Get one wrong and it's printed on in-store signage, in thousands of copies. Doing all of that over email and spreadsheets was slow, stressful and far too easy to get wrong.

Spring campaign · Campaign 14Store 90001 · Zone 7

Spring scoops

Sundae for twoConfirmed£6.55
Double scoop coneConfirmed£4.40
Family tubCarried over£5.10
Seasonal sorbetNew zone price£3.90
Extra toppingConfirmed£1.20

Every price on the proof knows where it came from

1wrong price×2,000+displays in print

One wrong price, copied onto every display in the run

02 · Where we came in

They brought the pain. We saw what was possible.

The client knew the problem inside out: thousands of prices gathered by email and spreadsheet, checked by hand, against a print deadline that never moved. What they asked for was a simple way to collect prices from every store.

We looked closer and saw something bigger. Those prices weren't just numbers to collect. They followed rules: price zones, bundles, prices that carry over and prices that should stop counting. So instead of a form, we designed a pricing engine that understands those rules, applies them automatically and shows exactly where every price came from. Every technical part of it is ours: the code, the hosting, every release and the security of the whole system.

Built

The web app and the API, written from scratch.

Run

Hosting, error alerts and every one of 24 releases.

Secured

The whole system, reviewed and hardened layer by layer.

Grown

New markets, features and upgrades, campaign after campaign.

01 · ListenUnderstood the pain

How prices really moved between head office, stores and print, and where it broke.

02 · MapFound the hidden rules

Zones, bundles, carry-overs and zone changes, turned into clear logic.

03 · DesignDesigned the engine

One system that applies every rule automatically and records why.

04 · DeliverBuilt to last

Live, secure, and still growing with the business.

03 · How it works

Simple for a store manager, precise for the printers

  1. 1

    Head office sets the starting point

    Recommended prices are loaded for every product and every price zone before a campaign opens.

  2. 2

    Each store confirms or adjusts

    Store managers log in, see their suggested prices and change only what they want to. Bundle prices update themselves as they type.

  3. 3

    Reminders do the chasing

    Every manager gets one launch email, and one reminder three days before the deadline if they still haven't submitted. Never twice.

  4. 4

    The printers get one sheet

    Admins download a master spreadsheet with a price for every store and every product, each cell coloured to show where its price came from.

One sheet the printers can trust

At the end of every campaign, one sheet holds every price for every store. Hundreds of thousands of numbers could easily become a wall nobody wants to read, so we designed it to be navigated, not just stored. Every price carries a clear status colour, and one click filters the whole sheet down to exactly what you need to see. Nobody has to ring a store to double-check a number. Pick a colour to try it.

Store · zoneBundle dealSignature itemClassic itemSeasonal specialAdd-on
90001Harbour St · Zone 7£6.50£4.40£5.10£3.90£3.20
90002Mill Lane · Zone 7£6.40£4.10£5.10£3.80£3.20
90003Station Rd · Zone 12£6.40£4.30£5.30£3.90£3.30
90004Market Sq · Zone 4 · EU€7.60€5.20€6.10€4.60€3.80
90005Park Parade · Zone 9£6.60£4.50£5.20£4.00£3.30
90006Kings Row · Zone 19£6.70£4.60£5.40£4.10£3.40
90007Canal Wharf · Zone 7£6.50£4.40£5.10£3.90£3.20
90008North Gate · Zone 15 · EU€7.80€5.40€6.30€4.80€3.90
90009Castle Hill · Zone 9£6.50£4.20£5.20£4.00£3.30
90010Quay Side · Zone 4 · EU€7.90€5.30€6.20€4.70€3.90
Master sheet sample · synthetic stores and prices, real colour rules

04 · The tricky parts

Small rules that make a big difference

Rule 01

Bundles that keep up

A bundle deal is priced from the products inside it. Change the price of one of them and the bundle follows, unless the owner has already set their own bundle price. Then we leave it alone.

Try it · change a price
Cream tea bundle

£6.53

Pot of tea 4.40 + 0.6 × scone 1.80 + 0.7 × jam & cream 1.50

£6.53goes to print

Rule 02

When a store changes zone

If head office moves a store to a new price zone, a price set under the old zone shouldn't print. We record when every zone change happens and compare it with the store's last submission, so the right price wins automatically.

Try it · when did the zone change?
Owner's last price£4.60 · campaign 12Zone 7 → Zone 9new zone price £4.40Print exportcampaign 14

£4.40goes to printThe owner's price was set under the old zone, so the new zone price wins.

Rule 03

Prices that carry over

Every export pulls together around 326,000 prices. Instead of looking each one up separately, we fetch the latest price for every store and product in one database query. Hundreds of thousands of lookups became one.

ConfirmedCarried overNew zone priceCheckedSecuredPrinted on time
ConfirmedCarried overNew zone priceCheckedSecuredPrinted on time

05 · Security and data safety

Built to enterprise standards, because that's exactly what it is

This system holds commercial pricing for a global brand and the accounts of hundreds of franchise owners. They need to know their data is safe, that only the right people can see it, and that everything holds up on deadline day. We treated security as part of the product from day one, and we regularly go back through the whole live system, layer by layer, from the front door to the database.

  • 01

    Access checked on every request

    We don't rely on a login token alone. Each request re-checks the person's role and status, so a blocked user is out on their very next click, not a week later.

  • 02

    Owners only see their own stores

    Every query is limited to the manager who's asking. Ask for someone else's store and you get the same answer as for one that doesn't exist.

  • 03

    Each market's data lives apart

    Every market runs on its own deployment with its own database. No stores, prices or users are shared between them.

  • 04

    Password guessing goes nowhere

    Attempts are limited per account and blocked before any password check runs. Passwords are hashed with bcrypt, and logs never keep an email address in plain text.

  • 05

    A locked-down API

    Limits on how big and complex a request can be, a fixed list of what can be searched, passwords and tokens that can never be requested, and errors that give nothing away.

  • 06

    Bots shut out early

    Automated scanners probing for weak spots are banned before they ever reach the application.

  • 07

    Uploads and content checked

    Bulk CSV uploads are validated before they reach the server, and the help pages' rich text is cleaned before anyone sees it.

  • 08

    Problems flagged straight away

    Unexpected errors send an instant alert to our team, with a cap so a sudden burst can't drown out what matters.

Every screen, store and price in this case study is synthetic. Real data never leaves the system.

06 · Growing together

Thirty-two months later, still shipping

Launch day was the start, not the finish. The client has come back again and again: a new EU market, new price zones, automatic campaign emails, smarter suggested prices and a long wishlist. We've delivered all of it across 24 releases, moved every major framework forward without a rewrite, and kept the system running through every campaign.

One system, multiple markets

New markets, without new products

When the brand took the platform into a new EU market, we didn't build it all again. The same code runs once per market, each with its own database, and simple switches turn features on or off for each one: no price zones, a different print kit, a store setup wizard or a fully translated interface. Adding the next market means a new deployment and its settings, not a rebuild.

One small touch we're fond of: if we release an update while a store manager has the page open, they're asked to refresh, so nobody submits prices from an out-of-date screen.

Try it · switch market
MARKET_SWITCHES = {priceZones: true,storeSetupWizard: false,printKit: "price displays",translatedUi: false,}

Campaign 14 · Spring range

Confirm your prices

Closes in 3 days, Thursday 18:00

Price zone
Zone 7
Signature item
£4.40
Bundle deal
£6.55 · automatic
Submit prices

Main deployment · UK & EU · price zones on

For head officePrices in on time

Every store's prices collected before the print deadline, without chasing emails and spreadsheets.

For the printersOne sheet, no guesswork

A single, colour-coded sheet they can trust.

For store ownersLess chasing, less admin

One reminder only if they haven't replied yet, and bundle prices that update themselves.

For the businessRoom to grow

New markets join the same system, with their own language and print materials.

Every monthStronger over time

Regular upgrades and security reviews keep it safe and up to date.

One small touch we're fond of: if we release an update while a store manager has the page open, they're asked to refresh, so nobody submits prices from an out-of-date screen.

Let's talk

Need software that thousands of people rely on, on a deadline?

Whether you run a chain of shops, cafés or salons, a franchise or a dealer network, we'd love to hear what you're working on.

Start a conversation[email protected]

Sound familiar?

  • A chain collecting prices from every branch before a print run
  • A franchise or dealer network where head office suggests and each location decides
  • Bundle prices that should follow the prices of their parts
  • New markets that have to run on the same system
  • A system that has to be right, every time, on deadline day
Technical summaryReact · NestJS · GraphQL · PostgreSQL · Railway
Backend
Node.js, NestJS 11, GraphQL with Apollo Server, Prisma 7 on PostgreSQL, with raw SQL where speed matters.
Web app
React 19, Vite 8, Chakra UI, Apollo Client with types generated from the API.
Files and email
ExcelJS for the master sheet, PDFKit for owners' copies, CSV bulk import, SendGrid for email.
Hosting and quality
Railway, one project per market with separate production and development environments, Jest and supertest, strict TypeScript.

The client's name, branding and industry are withheld under NDA. Products, prices and stores shown are illustrative.

End of proofappify.digital