Skip to main content
Service Web application development · Next.js + MERN + AWS · UK

Web application development for the Tuesday spike. not the brochure.

A web app isn’t a website. It has to stay up under load, render in 800ms, hold customer data without leaking, and ship without a Friday outage. We build edge-rendered, observable web apps on Next.js + MongoDB + Node.js + AWS.

800msLCP at p75
99.95%uptime SLO
62web apps shipped since 2019
(Why founders sign)

Web apps that hold under the spike. Sixty-two shipped. Zero Black Friday outages in 2025.

A web app is a system that has to operate, not a brochure that has to convert. We build for the Tuesday your marketing team finally got the campaign right.

0

<800ms

0

The founder this page is for09:13 down · 47 min · £280K dropped

Tom’s Black Friday email went out at 09:00. By 09:13 the site was down.

01

By 09:17, the queue of dropped transactions had passed £42K. By 10:00 it was £280K. 47 minutes of downtime at the worst possible 47 minutes of his year.

02

The web app worked perfectly, for 200 concurrent users. The database connection pool was set to 20. The Stripe checkout call ran synchronously. Nobody had tested at 4,000 concurrent. Why would they? They’d never had 4,000 concurrent.

03

The marketing team had spent four months earning that hour. The engineering had been built for the brochure version of the business, not the actual version. This page is for founders who’d like to skip the post-mortem.

Load-tested to 5× peak since 2019
The category mistake

A marketing site is not a web app.

The difference is the cost of getting it wrong.

Type AMarketing site

Designed to convertmostly static

What it is
  • Mostly static content, low write volume
  • Lives behind a CDN almost entirely
  • One CMS, one webform, maybe a search
  • Failure mode: a 404, a missing image
  • Stack: Framer, Webflow, Astro, Next static
  • Right scope: a 6-page launch site
Type BWeb application

Designed to operatestateful

What it is
  • Stateful, authenticated, per-user data
  • Hot path goes through DB + queue + worker
  • Per-action audit, error budget, P99 target
  • Failure mode: a dropped transaction at £280K
  • Stack: Next.js + MERN + AWS + Stripe + queues
  • Right scope: products where users do things
Edge rendering economics

The edge ladder

Edge isn’t a religion. It’s an economics question. What to push to the edge, in what order. Each rung halves median latency or cuts cost.

Rung 01

Static assets & images

Day-one CDN. Cloudflare + S3 + CloudFront. 95% cache hit. Zero infra to manage.

Rung 02

Public read pages

Marketing pages, public dashboards, blog. ISR + edge cache. Sub-100ms TTFB globally.

Rung 03

Authenticated read paths

Per-user data with short TTL at the edge. Personalisation without a DB hit.

Rung 04

API rate limits + auth at the edge

Reject unauthorised requests before they touch your origin. Cuts attack surface dramatically.

Rung 05

Edge functions for light compute

Form validation, A/B routing, geo redirects. Faster than origin, cheaper than a Lambda.

Rung 06

Stop, the rest is origin

Writes, complex queries, anything with state. Edge for reads, origin for writes.

The eight web-app pains we hear in every audit

The web-app pain. The day-1 answer.

Each one is a single architectural decision made on day one of our build.

  1. 01
    The spike outageDay-1 architecture

    “We broke at 4,000 concurrent users on Black Friday.”

    Edge + serverless + idempotent writes. Vercel + Cloudflare edge for reads, AWS Lambda for spike, idempotent writes through a queue. Load-tested to 5× peak. Capacity number in the runbook.

  2. 02
    Slow page = high bounceDay-1 architecture

    “Lighthouse score is 62. Bounce rate is 54%.”

    JS budget < 120KB, LCP < 800ms enforced in CI. Performance is a build-gate. JS bundle checked on every PR. Lighthouse perf above 94 is the standard.

  3. 03
    Weird, can’t reproduceDay-1 architecture

    “A customer says something broke and the engineer can’t reproduce it in dev.”

    Trace ID through every request, Sentry + Datadog. Every error gets a user, tenant, build, trace ID. On-call reads the trace and knows what happened in 60 seconds.

  4. 04
    Deploy fearDay-1 architecture

    “Every Friday deploy ends with a rollback. The team won’t ship before a weekend.”

    Atomic deploys, instant rollback, feature flags. A bad deploy rolls back in 60 seconds. Features flip behind flags without a deploy. Friday becomes ship day again.

  5. 05
    Database knee at scaleDay-1 architecture

    “Postgres pool maxed at 200 users. We can’t add a connection without breaking.”

    MongoDB Atlas or Neon serverless Postgres. A connection pool that scales itself with traffic. Tom’s pool-max outage is architecturally impossible.

  6. 06
    Security audit panicDay-1 architecture

    “Enterprise customer wants a penetration test result and we have nothing to send.”

    Threat model + CSP + rate limits + audit log on day one. Security is part of the spec. Penetration test reports become a one-pager, not a project.

  7. 07
    Hiring the next engineerDay-1 architecture

    “Our app is on a stack nobody knows and the next hire takes six months to ramp.”

    MERN + AWS, hireable on day one. The biggest engineer market in 2026. London has 14,000+ Node engineers. Your senior hire interviews fluent on day one.

  8. 08
    Mobile + desktop divergenceDay-1 architecture

    “The mobile experience is broken and the desktop experience is fine.”

    Mobile-first, design tokens, container queries. Mobile is the design floor. We don’t “adapt for mobile”, we ship mobile and grow up. Same codebase, same pipeline.

Engineered into every build

What we engineer into every web app

Five things that separate a web app that operates from a website that converts. Built in, not bolted on.

6.9x

Year-on-year revenue, Tom’s Black Friday

0x

Peak-load outages in 2025

“Year-two Black Friday hit 7,400 concurrent. The site didn’t flinch. Revenue was up 6.9×. The team had a quiet evening.”

Tom W.

CTO, UK FinTech

001

Edge + serverless resilience

Reads at the edge, spike capacity on Lambda, idempotent writes through a queue. Load-tested to 5× expected peak with a documented capacity number.

002

Sub-800ms performance budget

JS budget under 120KB, LCP under 800ms, enforced as a build-gate on every PR. Lighthouse perf above 94 is the standard, not the aspiration.

003

Observability before features

Sentry, Datadog, Mixpanel wired in week one. Trace ID on every request. On-call knows what fired and why in 60 seconds.

004

Security as part of the spec

Threat model, CSP, rate limits, audit log on day one. Penetration test reports become a one-pager, not a 6-week project.

005

A hireable MERN + AWS stack

The biggest engineer market in 2026. Your next senior hire interviews fluent on day one. No six-month ramp on a clever stack nobody knows.

Web application tech stack · MERN + AWS + edge layer

The stack we ship every web app on.

Server components cut JS by 60-80% on hot pages without losing interactivity. MERN handles 99% of the behaviour we need on day one.

T1

What we build every web app on

MERN
MongoDBExpress.jsReact + Next.jsNode.jsTypeScriptTailwindMixpanelStripeClerk / Auth.jsVitest + PlaywrightPostgreSQLGitHub Actions
T2

When your web app brief calls for it

reach when needed
PythonJavaGoGraphQLtRPCPrisma / Drizzle
T3

The infrastructure layer

AWS-default
AWSKubernetes (EKS)DockerAWS LambdaS3 + CloudFrontAWS RDS / AuroraRedisApache KafkaElasticSearchTerraformDatadog + SentryWebSockets
Results

Tom’s Black Friday,
version two, in numbers

We rebuilt the hot path on Next.js + MongoDB Atlas + AWS Lambda, cached read paths at the edge. P99 latency dropped from 2.4s to 280ms. Year-two peak hit 7,400 concurrent. The site stayed up.

Year-two Black Friday

7,400
Concurrent users held
0
Dropped transactions

Latency

2.4s280ms
P99, after rebuild
<800ms
Median LCP p75

Track record

62
Web apps since 2019
99.95%
Uptime SLO held
How we work with you

Three ways to start. Pricing in the email back.

Pick the shape that fits and Mohit will send your real number inside 24 hours.

AStart here

Audit week + scope

5 days. We strip the brief, pick the stack, write the architecture, hand you a signed scope.

  • 5-day senior audit
  • Edge strategy + capacity target
  • Signed scope, line-item GBP
  • No commitment to build
BMost common

Web app build sprint

8 to 14 weeks of fixed-scope shipping. MERN + AWS, edge-rendered, observability built in.

  • Next.js + MERN + AWS
  • Two senior engineers
  • 30-day walk-away both ways
  • IP assigns on every commit
CRescue

Scale rescue + rebuild

Existing slow / fragile app. We rebuild the hot paths for the spike. Old app stays live until cutover.

  • Hot-path rebuild
  • Load-tested to 5× peak
  • Behind-feature-flag cutover
  • Fixed 9-14 week scope
From £35K · 8-14 weeks · load-tested to 5× peak

“Year-two Black Friday hit 7,400 concurrent. The site didn’t flinch. Revenue was up 6.9×. The team had a quiet evening.”

— Tom W., CTO, UK FinTech
Web application development · honest answers

What CTOs actually ask before signing

Pain-first, soft-second.

Because the next engineer you hire knows it. Because server components let us cut JS by 60-80% on hot pages without losing interactivity. Because MongoDB + Express + React + Node.js + AWS handles 99% of the web application development behaviour we need on day one. We’ll work in SvelteKit, Remix, Astro if you have a strong reason. Default is MERN + Next.js because that’s where we land most often.

k6 or Grafana k6 Cloud running the user journey at 5× expected peak. We hold every web app to a documented capacity number measured on real traffic-shaped load, not just “requests per second”. Capacity number ships in the runbook with what breaks first and how to scale it.

Yes. We’ll deploy to your cloud if that’s the requirement. AWS is the default because it’s 10× faster to ship and most teams don’t need a custom cloud. When you have a defensible reason (data residency, existing SOC-2, enterprise compliance), we deploy to your VPC instead. Comfortable on GCP, Azure, Cloudflare, DigitalOcean, Vercel, Fly.io.

30-day walk-away both ways. Milestone billing 25/25/25/25. UK VAT registered, listed on Companies House, shipping since 2019. You’re never more than four weeks at risk of paying for nothing.

Every web app build has two senior engineers paired, not one. Every decision goes into an ADR the same day. Mohit reviews every PR. If one engineer leaves, the other has full context the next morning. In seven years, two engineers have left mid-project. Both handovers were inside 48 hours.

We default to React because the hiring market is biggest. Vue if you already have a Vue team. SvelteKit if you’re ship-speed obsessed and the team is small. We’ll have the discussion in audit week. The honest answer is “React 70% of the time, Vue 20%, Svelte 10%”.

Yes, with 14 days’ notice. Engineers move to other projects. Spend pauses. Resume with 14 days’ notice. No cancellation fee. No restart fee.

Yes, with mutual agreement. Several of our engineers have moved in-house to client teams over the years. The contract has a clean intro fee built to make the transition friction-free, not punitive.

The web app

Fast, accessible web apps.

Sub-second loads, keyboard-complete, WCAG-aware. The web surface your users never have to think about.

app.yourproduct.com
Web app interface
Build the web app that holds on Tuesday

One paragraph. That’s it.

Tell us what the app does, who uses it, and the worst Tuesday you can imagine. Mohit replies inside 24 hours: a clear yes, a clear no, or the one question that decides it.

Write to mohit@empyrealinfotech.com Replies in 24hSub-800ms LCPLoad-tested to 5× peak
What happens after the email lands
  1. < 24h

    A personal reply.

    Yes, no, or the deciding question. Straight to your inbox.

  2. Week 1

    Audit week begins.

    Edge strategy, capacity target, observability plan, signed scope.

  3. Launch

    Holds on Tuesday.

    Load-tested to 5× peak. Capacity number in the runbook.