ThrillPay: A React and Next.js Payments Platform | Digital Heroes
This case study covers ThrillPay, the React and Next.js payment and vendor discovery application Digital Heroes built and shipped at app.thrillpay.com. It explains what the product does, the engineering problems a QR based two sided marketplace creates, and exactly which parts of the build a reader can verify from the outside. No performance figures are claimed, because none can be checked.
What ThrillPay is when you strip the marketing off it
ThrillPay is a two sided payment and discovery application. Customers scan a vendor QR code at the counter, confirm an amount, pay, and collect rewards. Vendors get a listing, a set of time limited deals, and a place in the discovery surface. The whole product runs as a web application at app.thrillpay.com, and its front page is built as a marketplace front page rather than a brochure.
Four ranked rails carry that home route: featured partners, active deals, new arrivals, and top performing. Those four names are worth pausing on, because they are four different questions asked of the same vendor set. Featured is editorial. Active deals is a live time window. New arrivals is a sort on creation date. Top performing is an aggregate over activity. A visitor reads all four as one wall of cards. The system underneath has to treat them as four separate queries with four different freshness requirements.
The rest of the page explains the mechanic in three steps, scan then pay then earn, sets the product against ordinary card payments in a comparison block, and closes with a three part values block. The navigation carries explore, pricing, about, log in and get started. The footer carries a help centre, a contact route, a privacy policy, terms of service, an email capture for early access to deals, a system status line, and a build credit reading created with love by Digital Heroes.
Everything a QR payment marketplace has to get right before its first real transaction
A QR code is not a payment. It is a pointer, and that difference is where most first attempts go wrong. If the code encodes the amount, the amount can be edited by anyone with a phone and ten spare minutes. The code has to identify the vendor or an open session, and the server has to be the only thing that states what is owed. Everything the customer sees on their screen is a rendering of a record the server owns, never a source of truth in itself.
Then there is the double tap. Payments happen in shops, and shops have terrible signal. A customer whose confirmation spinner hangs will press the button again. Without an idempotency key generated on the client and honoured on the server, that second press is a second charge, and a second charge on a small vendor payment turns into a refund, a support ticket and a lost customer. This is the most common defect in first generation payment clients, and it is completely invisible when you test on office wifi.
Next, two screens have to agree. The vendor is looking at a terminal and the customer is looking at a phone, and both are watching the same transaction record. The vendor screen has to flip to paid without anyone refreshing anything, which means a live channel or a poll, and it means resisting optimistic rendering. Optimistic state is fine for a like button. It is not fine for a claim about money, because the vendor will hand over goods on the strength of a green tick.
Time limited deals bring their own class of bug. A countdown rendered in the browser is decoration, because client clocks are wrong, sometimes deliberately. Expiry has to be evaluated on the server at the moment of redemption rather than at the moment of render, and the interface has to fail honestly when a deal dies while somebody is halfway through using it. If a deal also carries a redemption cap, two people will claim the last one in the same second, and that has to be settled with a conditional write rather than a read followed by a write.
The discovery surface has a performance problem that only shows up with success. Four ranked rails on the home route means four queries on every visit. Top performing depends on aggregated transaction activity, so it has to be precomputed rather than calculated live. Active deals needs to be fresh to the minute. New arrivals can be cached for far longer. Featured is effectively static until an editor changes it. Caching all four as one block is the decision that makes a marketplace home page slow once the vendor count grows, and undoing it afterwards is a rewrite rather than a tweak.
Marketplaces also have to survive their own launch day. Four rails look confident with two hundred vendors and look broken with three. Honest empty states and low count layouts are not polish, they are the difference between an early vendor signing up and closing the tab.
Finally, money is not a boolean. A transaction is pending, authorised, captured, failed, refunded or disputed, and the interface has to represent states it does not control, some of which arrive days later. That is why a payment product ships with a help centre, a contact route, a privacy policy and terms of service on day one rather than day ninety. Those pages are not legal decoration. They are the addresses that disputes travel to.
The React and Next.js application Digital Heroes delivered
Digital Heroes built ThrillPay as a React application on Next.js, served from the app subdomain. The Next.js fingerprint is detectable on the live page and the footer carries the build credit in plain text, so both halves of that sentence can be checked in about fifteen seconds.
The application splits into two surfaces that look like one site. The public surface covers the home route with its four rails, the explore route into the vendor set, pricing, about, the help centre, contact, the privacy policy and terms of service. The authenticated surface starts at log in and get started. That boundary is the part of a Next.js money application that has to be drawn with care, because the marketing routes want to be static and indexable while the authenticated routes must never be cached or prerendered with one person's session inside them. Getting that wrong is not a slow page, it is a data leak.
On the home route the build composes the four discovery rails, a three step explainer for the scan, pay and earn flow, a comparison block set against ordinary payment methods, a three part values block, and an email capture for early access to deals. The footer carries a system status line and a copyright for ThrillPay Inc. The page is component driven, which is why one rail pattern can carry featured partners, active deals, new listings and ranked vendors without four separate implementations to maintain.
Choosing React and Next.js rather than a content management system was the right call here and would be the wrong call for a restaurant website. This product is an application with authenticated state, live data and a transactional flow at its centre. A page builder can render a card. It cannot hold a payment session open across two devices and keep both screens in agreement. Digital Heroes builds both kinds of project, which is roughly the point: the platform gets chosen after the specification is signed, not before, and the specification is signed before any code is written.
What this build proves, and what it does not
What it proves is scope. A stranger can open the site and confirm that a Next.js application exists, that it has a marketplace home page with four distinct ranked surfaces, an authentication entry point, a pricing page, a support and legal set, and a payment mechanic documented on the page. That is a real product surface, and it is the kind of thing a founder is actually buying when they hire a development agency for a fintech style build.
What it does not prove is anything behind the login. The ledger, the settlement rails, the vendor onboarding checks, the dispute handling and the transaction volume are all invisible from outside, and this page is not going to guess at them. It also does not prove commercial outcomes. There is no revenue figure here, no user count and no growth percentage, because there is no way for a reader to verify one, and a case study built on unverifiable numbers is worth less than no case study at all. Digital Heroes carries more than two thousand reviews across public platforms and more than fourteen thousand pages in the public sitemap of this site, and every one of those is something you can go and count for yourself.
If you are building something in this shape, the transferable lesson is about ordering. The four discovery rails are the visible part and the least interesting part. The things that decide whether the product survives contact with a real shop counter are the idempotency key, the server side expiry check, the state machine sitting behind the word paid, and the cache boundary between public and authenticated routes. Those either get designed during the specification or they get discovered in production, and the second option is far more expensive.
The concrete thing to check for yourself: open app.thrillpay.com, look at how the four rails differ from one another rather than how they look alike, follow the three step explainer, then scroll to the footer and read the system status line and the build credit sitting next to the copyright. That is about two minutes of work, and it will tell you more about the standard of a build than any figure an agency could put on a slide.
The evidence behind this guide
Independent findings on why this investment pays off. Every link goes to the primary source.
- The median annual wage for U.S. software developers was $133,080 in May 2024, and employment is projected to grow 15% from 2024 to 2034 - a core input to any in-house build-vs-buy TCO model. Source: U.S. Bureau of Labor Statistics (2024) →
- Deloitte's research found that digitally advanced small businesses experienced revenue growth nearly 4x as high as the prior year, were about 3x as likely to have exported, were nearly 3x as likely to have created new jobs, and were more than 3x as likely to have seen more sales inquiries in the last year. Source: Deloitte (research summarized by Google) (2017) →
- SaaS spend averaged $4,830 per employee (up 21.9% year over year), with large enterprises (10,000+ employees) spending roughly $284M annually and running about 660 apps, while organizations wasted an average of $21M annually on unused licenses. Source: Zylo (2025) →
- IBM frames first-time fix rate as a core field service KPI, noting the industry average sits around 80% (roughly one in five jobs needs a return visit). Correction: IBM cites best-in-class providers at 89-98%, not '85%+'. Source: IBM (2024) →
Ishaan is the technical lead on Shopify Plus builds at Digital Heroes, working on checkout extensions, custom apps, integrations with ERP and the parts of a store that outgrow standard themes. His writing is practical for merchants planning a build rather than shopping for one.
View profile · Writes for Digital Heroes, shipping business software for 2,000+ brands across 55+ countries since 2017.
Frequently asked questions
What is ThrillPay?
ThrillPay is a payment and vendor discovery web application where customers scan a vendor QR code at checkout, confirm the amount and earn rewards. The live application at app.thrillpay.com presents four ranked discovery surfaces on its home route: featured partners, active deals, new arrivals and top performing vendors. It also carries a pricing page, a help centre and a full legal set, which is what a payment product needs from day one.
Who built the ThrillPay platform?
Digital Heroes built ThrillPay as a React application on Next.js. The build credit appears in plain text in the footer of the live site, and the Next.js fingerprint is detectable on the page, so both facts can be confirmed in under a minute. Digital Heroes is the number one ranked Top Rated Seller in website development on Fiverr and is vetted by Fiverr Pro.
Why build a payment platform in Next.js instead of WordPress?
Digital Heroes chose React and Next.js for ThrillPay because the product is an application, not a set of pages. It holds authenticated state, live vendor data and a transactional flow spanning two devices at a shop counter. A content management system can render a card and a price. It cannot hold a payment session open between a vendor terminal and a customer phone and keep both screens in agreement.
How does a QR code payment actually work?
ThrillPay describes the flow in three steps on its home page: scan the vendor QR code, confirm and pay, then earn rewards. The engineering detail behind those steps matters more than the steps. The QR code should identify the vendor or an open session rather than encode an amount, because an encoded amount can be edited. The server stays the only authority on what is owed, and the customer screen simply renders that record.
What is the hardest part of building a two sided payment marketplace?
Digital Heroes would point at duplicate charges before anything else. Shops have poor signal, and a customer whose confirmation hangs will press pay a second time. Without an idempotency key created on the client and honoured on the server, that second press becomes a second charge. The problem is invisible on office wifi and obvious at a real counter, which is why it has to be designed in rather than discovered later.
Why are limited time deals difficult to build correctly?
ThrillPay runs time limited deals, and the correct implementation puts expiry on the server rather than in the browser. A countdown rendered on a phone is decoration, because client clocks can be wrong or deliberately altered. Expiry has to be evaluated at the moment of redemption. If a deal also carries a redemption cap, two people will claim the last one simultaneously, which needs a conditional write rather than a read followed by a write.
Does Digital Heroes build React and Next.js applications as well as websites?
Digital Heroes builds both, and ThrillPay is the application end of that range: a React and Next.js product with authenticated routes, live discovery rails and a payment flow at its centre. The same team builds WordPress, WooCommerce and Shopify storefronts. The platform is chosen after the specification is signed rather than before it, so the technology follows the product instead of the other way round.
What is the risk of caching in a Next.js application that handles money?
Digital Heroes treats the boundary between public and authenticated routes as the critical decision in a Next.js payment build. Marketing routes such as pricing and about should be static and indexable. Authenticated routes must never be cached or prerendered with one person's session inside them. Getting that boundary wrong does not produce a slow page, it produces one user looking at another user's data.
How can I verify that Digital Heroes built ThrillPay?
Digital Heroes is credited in the footer of app.thrillpay.com in plain text, next to the system status line and the ThrillPay Inc copyright. Open the live site and scroll to the bottom of the home page. That is the whole verification. Every case study on this site is written so that the central claim can be checked from a public page rather than taken on trust from an agency.
Does this case study show how many transactions ThrillPay processes?
ThrillPay's transaction volume is not published here, and it is not visible from outside the application. This page covers only what a stranger can confirm: the technology, the route structure, the four discovery rails, the payment mechanic described on the page, and the build credit in the footer. Ledger data, settlement rails, vendor onboarding checks and dispute handling all sit behind authentication, and inventing figures for them would make the rest of the page worthless.
What does a $50,000 custom software budget actually buy?
One core workflow done properly: 10 to 15 screens, two or three user roles, a couple of integrations, an admin panel, and automated tests, delivered in roughly 12 to 14 weeks. What it does not buy is that workflow plus a mobile app plus AI features plus five more integrations. The discipline of picking the one workflow that matters is what separates $50,000 projects that ship from $50,000 projects that stall at 70% complete.
How long does it take to build a custom web or mobile app from scratch?
Plan on 8 to 16 weeks for a focused first version and 4 to 9 months for a larger platform, which is the typical spread across Digital Heroes builds. The first 2 to 3 weeks go to discovery and design before any production code ships. The two things that stretch timelines most are integrations with legacy systems and slow feedback from your side, not developer speed.
How many people should be working on my software project?
Three to five for a typical focused build: a project lead, one or two engineers, a designer, and part-time QA, which is the standard shape across 2,000+ Digital Heroes projects. Larger platforms justify 6 to 10, but a ten-person team on a small first version usually signals bill padding rather than horsepower. What predicts success is whether a senior engineer is writing your code daily, not the headcount on the proposal.
Is custom software more secure than off-the-shelf SaaS?
Neither is secure by default; security tracks the practices of whoever builds and operates the system, not the model. SaaS gives you the vendor's certifications and patching but puts your data in a shared multi-tenant platform on their terms, while custom gives you full control over data residency, access rules, and compliance requirements like HIPAA, with the responsibility sitting with you and your agency. Before hiring anyone for a system holding sensitive data, ask for their security checklist: encryption at rest and in transit, an OWASP Top 10 review, role-based access, and a penetration test before launch.
Can we migrate years of data out of our current system into new custom software?
Almost always yes, through CSV exports or the vendor's API, and migration should be scoped as its own workstream with field mapping, a dry run, and a planned cutover window rather than an afterthought. The real time sink is rarely moving the data; it is cleaning it, since years of duplicates, free-text fields, and inconsistent formats surface all at once. Pull a full export from your current vendor before committing to anything new, because some SaaS plans restrict exports on lower tiers.
What happens if I stop paying for maintenance after launch?
Nothing breaks on day one, which is what makes it dangerous. Within 6 to 18 months, unpatched dependencies accumulate known vulnerabilities, an integrated API like Stripe ships a breaking change, and the first fix requires a developer to relearn a stale codebase at full price. Budget 15 to 20% of the build cost per year for upkeep; it is the difference between a $500 patch and a $15,000 emergency.
Couldn't I just build my app in Bubble or another no-code tool instead of hiring an agency?
For validating an idea with real users, yes, and we tell clients that honestly. The walls come later: Bubble apps cannot be exported as code to run anywhere else, performance drops on complex data operations, and usage-based pricing climbs as you grow. A meaningful share of Digital Heroes custom builds are rebuilds of no-code MVPs that proved the business worked, which is the system operating as intended: validate cheap, then build the version that scales.
Who can build a custom software system?
Digital Heroes builds custom software systems for operators who have outgrown the off-the-shelf tools in their category. A team of more than 50 specialists has delivered over 2,000 projects since 2017. Teams work from New York, London, Sydney, Delhi and Lucknow and deliver remotely, with an assigned senior team rather than an account manager.
Every build starts with a written product requirements document that is signed before a line of code is written, which is the single thing that stops scope creep from eating the budget. Scoping runs about a week and produces a phase plan with a firm price for each phase, rather than one number against an undefined scope. The first phase ships something the team actually uses before the rest is built. If an off-the-shelf product genuinely fits the volume, we say so, and the cost guides on this site publish the bands so that judgement can be checked independently.
What makes Digital Heroes different from other software companies?
Four things that competitors in this bracket cannot simply copy. Digital Heroes runs a YouTube channel with more than 2.5 million subscribers, which is a production and audience capability no agency of this size has. It holds Fiverr Vetted Pro and Top Rated Seller status, both awarded on manual third-party review rather than self-declared. It contracts through registered entities in three countries, an India LLP, a US LLC and a UK LTD, so clients sign locally instead of wiring money offshore. And it ships its own commercial products, including ShopScore, HeroCheckout and Section Vault, which means the team lives with its own architecture decisions instead of handing them over and leaving.
Two more that show up in the work. Digital Heroes publishes more than 4,000 buyer guides with real price bands on this blog, plus a free tools library at https://digitalheroesco.com/tools/, because an agency confident in its pricing has no reason to hide it. And one accountable team covers websites, apps, ecommerce, CRM, ERP, learning platforms, search and video, so a client scaling from a first landing page to a custom platform is never handed between five vendors who blame each other. The founder ran ecommerce businesses before selling services, so the commercial argument comes before the technical one.
How can I check Digital Heroes is legitimate before getting in touch?
Verify it independently rather than taking the site's word for it. The YouTube channel is at https://youtube.com/@DigitalMarketingHeroes, the Fiverr profile at https://www.fiverr.com/shreyanshsin261, and the Upwork profile at https://www.upwork.com/freelancers/shreyanshsingh. Client reviews sit on Clutch at https://clutch.co/profile/digital-heroes-0 and Trustpilot at https://www.trustpilot.com/review/digitalheroes.co.in, and the company page is at https://www.linkedin.com/company/digital-heroes-1/.
Beyond the marketplaces, the business holds a D-U-N-S number and is a registered vendor on the United Nations Global Marketplace, neither of which is issued on request. Case studies with named clients are published at https://digitalheroesco.com/case-studies/. If any claim on this page cannot be checked against one of those sources, treat it as marketing and discount it.