Skip to content
Case studySaaS
RoboSiteBuilder

Capture any public webpage and preview it, on a job queue that survives the slow ones.

Year
2025
Vertical
SaaS

The challenge

Capturing a live page properly means running a real browser, and a real browser is slow, memory-hungry and occasionally hangs. Doing that inside a web request is how the whole service goes down.

What we built

01Page capture and preview pipeline driven by Playwright
02Background job processing on BullMQ and Redis
03PostgreSQL storage with a Prisma schema
04Next.js App Router front end over a TypeScript Express API

Outcomes

Queued
Captures run off the request cycle
Playwright
Real browser rendering

How we shipped it

01

Browsers belong on a queue

Every capture is a job on BullMQ rather than work done inside the request. A page that takes thirty seconds, or never finishes, costs one worker instead of the whole API.

02

A schema for something unstructured

Captured pages are messy by nature. Prisma over PostgreSQL keeps the metadata — jobs, versions, assets — in a typed schema so the unstructured part stays contained.

03

Split front end and API

The Next.js App Router front end talks to a TypeScript Express service, which means the capture workers scale on their own without dragging the web tier along with them.

Stack

Next.js
TypeScript
Express
PostgreSQL
Prisma
BullMQ
Redis
Playwright
Live · accepting briefs/lat 25.20 lon 55.27
Get started

Aprojectlikethis?

One-page brief, two-week sprint, real exit ramps.

Now booking
2 slots open
Aug '26

next kickoff · week 34

Availability · next 6 weeks
W32
W33
W34
W35
W36
W37
First reply< 24h
median · last 30d4h 12m
24hFirst reply
40+Platforms shipped
4.9★Client rating
SOC 2Ready