Case Study · Coupon & Referral Website Development

Building a coupon code website for 50,000+ stores

SavvyCodes is a coupon and promo code website where shoppers find working codes, deals and store-specific savings advice, and share codes with each other for rewards. We engineered the Next.js experience and the Directus headless CMS behind it, with a PostgreSQL data model and a targeted caching system designed for a large, frequently changing catalogue.

Product
SavvyCodes
Sector
Coupon codes, deals & shopping rewards
Our role
Full-stack architecture, development and CMS implementation
Status
Live and actively developed
  • 50K+store records supported by the platform
  • 3 layersNext.js, Directus and PostgreSQL
  • Targetedcache tags and webhook revalidation
  • Headlesscontent and catalogue operations

See the live platform

The platform is live, but SavvyCodes is not the client’s real brand or website. To protect the client’s privacy and keep this case study from competing with their own site in search results, it is shown here under a name used only for this case study, with a re-themed interface. Get in touch and we will show you the real platform.

Request the live demo

Shared privately, on request

Want the architecture walkthrough?

We can explain the data model, Directus workflow, cache strategy and large-catalogue SEO in more detail.

Book a walkthrough

About 30 minutes, no obligation

The brief: a coupon website like SimplyCodes

The product was inspired by SimplyCodes and the patterns it made familiar: searchable retailers, trustworthy code status, store-specific guidance and visible community activity. The engineering challenge was to turn that inspiration into an independently structured product that could support more than 50,000 stores without making each visitor wait for the full catalogue.

That meant treating content management, relational data, caching, search discovery and community interactions as one architecture. The public site needed to feel immediate; editors needed practical control; and a coupon, store or verification change needed to reach the right page without invalidating the entire application.

What a coupon or referral website needs

The same foundations serve a coupon site, a deals site or a referral code site, where members post and check each other’s codes. SavvyCodes was built on all of them:

A store and offer catalogue

Stores, categories, codes and deals as related records, so one change shows up on every page that uses it.

Proof that codes work

Shopper verifications, success rates and last-used dates, so visitors can judge a code before they reach checkout.

Community sharing and rewards

Member accounts, shared codes and tips, and rewards for contributing. This is the core of a referral code website.

Search-ready store pages at scale

A page per store with its own metadata, structured data and sitemap entry, generated from the catalogue rather than written by hand.

An admin the content team can run

A headless CMS for stores, coupons, articles, pages, media, theme and roles, with no developer needed for day-to-day changes.

Speed under a large catalogue

Pre-rendering, targeted caching and webhook revalidation, so pages stay fast as the store count grows.

Several ways into a very large catalogue

Search serves shoppers who already know the store. Categories, popular retailers, trending codes and live activity support visitors who are still exploring. The same store data is reused across these routes rather than maintained as disconnected landing pages.

A store page that explains more than the code

Store pages bring together current offers and the signals needed to judge them: shopper checks, recent activity, the best months to shop, community tips, reviews and similar stores. Dynamic metadata, breadcrumb data and structured offer markup are generated from the same records so discovery and presentation stay aligned.

Guidance that builds trust

Coupon sites live or die on whether shoppers believe the codes work. Guide and trust pages explain how to use a code, how codes are checked and why the community matters, and editors update them in the CMS like any other page.

Accounts support a real community layer

Members can contribute to code health and community activity through authenticated interactions. The account foundation includes validated signup, secure password hashing, email verification, password recovery, protected account routes and audit-aware rate limiting.

Editorial content supports the shopping journey

The blog adds durable guidance around the fast-moving offer catalogue. Directus-managed authors, categories, media and SEO fields flow into responsive Next.js templates and related-content navigation.

Directus as the operational layer

Directus sits over PostgreSQL as a headless CMS and structured administration environment. It gives editors practical controls while the Next.js frontend consumes the same relational data through a typed service layer.

A catalogue editors can operate

Directus gives the content team structured tools for the stores, categories and offers that power public discovery.

Editorial publishing and site pages

Articles and the site's own pages are managed in the same headless CMS while remaining separate content domains.

Brand, assets and data modelling

The CMS also centralises media, theme values, site-wide settings and the relational model behind the application.

Automation and access control

Directus Flows keep the public site in step with the CMS, and roles decide who can change what.

The screenshots show the platform under the SavvyCodes name and theme used for this case study. The structure, workflow and features are those of the live product.

Engineering decisions worth explaining

Cache the catalogue in useful pieces

Store records, codes, reviews, FAQs, activity, categories, navigation and settings use separate cache keys and durations. A change can invalidate the affected data without turning every request back into a database read.

Revalidate from the content event

A secret-protected webhook endpoint maps Directus changes to precise cache tags. Store, coupon and verification updates resolve the affected retailer, clear its dependent data and rebuild only its route.

Combine ISR with deliberate warming

High-value pages are pre-rendered, the long tail is generated on demand, and a resumable sitemap-driven warmer fills caches after deployment without overwhelming the application.

Build SEO from the data model

Canonical routes, metadata, breadcrumbs, offer and review schema, indexability rules and segmented sitemaps are produced from live records rather than maintained as a second content system.

Keep user-specific work out of shared caches

Session-dependent state is loaded separately from statically rendered routes, preserving safe personalisation without making the public catalogue dynamic.

Protect system content in the CMS

A custom Directus hook prevents core pages and system FAQs from being deleted accidentally while leaving ordinary editorial content flexible.

Built with

Application

  • Next.js App Router
  • React
  • TypeScript
  • Tailwind CSS
  • Server Components
  • Incremental Static Regeneration

Content & data

  • Directus headless CMS
  • PostgreSQL
  • Directus SDK
  • Directus Flows
  • Relational content modelling
  • Organised asset management

Platform services

  • Tagged data caching
  • Webhook revalidation
  • Sitemap cache warming
  • NextAuth
  • Zod validation
  • Nodemailer
  • Sharp image processing

Related services: Custom Web Applications, Business Websites, Technical Support & Maintenance.

Building a coupon website: common questions

What features does a coupon website need?

At minimum: a searchable catalogue of stores and categories, a page per store listing its codes and deals, a clear way to reveal and copy a code, and signals that show whether a code still works. SavvyCodes adds shopper verifications, live activity, community tips, reviews, member accounts and rewards, all managed from a headless CMS.

Can the same platform run a referral code website?

Yes. A referral code site has the same shape as a coupon site: stores or brands, codes submitted by members, checks on which codes work, and rewards for sharing. The store, code, verification and account models behind SavvyCodes carry over directly, so the main work is in the submission rules and how rewards are earned.

Which technology is best for building a coupon website?

For a large catalogue, a server-rendered framework with a headless CMS works well. We used Next.js for the public site, Directus as the CMS and PostgreSQL for the data. Store pages are pre-rendered and cached, editors work in Directus, and changes reach the site through webhooks without a redeploy.

How does a coupon website stay fast with tens of thousands of store pages?

By caching each kind of data separately and only refreshing what changed. In SavvyCodes, saving a store or a code triggers a Directus flow that clears that store's cache tags and rebuilds only its page. Popular pages are pre-rendered, the long tail is generated on first visit, and a cache warmer fills the rest after each deployment.

How does a coupon website rank in search?

Mostly through its store pages. Each one needs its own canonical URL, title, description, breadcrumbs and offer markup, and the sitemaps need to list every indexable store. SavvyCodes generates all of this from the store and coupon records, so a new store is search-ready the moment it is published.

Can I see the real platform behind SavvyCodes?

Yes. SavvyCodes is the name we use for this case study to protect the client's privacy. Contact us and we will arrange a private demo of the live platform.

Planning a coupon, deals or referral website?

We can build the store catalogue, code verification, member rewards, headless CMS and search foundations as one maintainable product.

Screenshot preview

Open image in a new tab