Skip to content
usman()
case study 03

ADV App

A multi-tenant SaaS platform for booking, scheduling and managing digital billboard ad campaigns, covering the full lifecycle from slot booking to broadcast.

1. wireframe2. components3. production
Client
Digital billboard advertising platform, Canada
Year
2025
Category
Web app
Role
Systems architecture, full-stack build
Stack
NestJS 10 · Next.js 14 · PostgreSQL · Prisma · AWS S3 + Aurora · BullMQ · Razorpay
the challenge

Billboard campaign booking was a phone-calls-and-spreadsheets business. The platform had to handle media uploads, slot scheduling, payments and role-based access for four kinds of users, reliably and at production scale.

the approach

A modular NestJS backend of 13 feature modules covering auth, campaigns, slots, schedules, payments, broadcasts and more, on PostgreSQL via Prisma, with AWS S3 for media and Aurora RDS with IAM token auth. BullMQ handles async jobs, cron drives campaign scheduling, Razorpay processes INR payments.

the result

The complete campaign lifecycle runs through one platform: advertisers book and pay, managers approve, screens broadcast on schedule. Four-role RBAC and refresh-token rotation keep every route locked to exactly who should touch it.

backend modules powering the full campaign lifecycle

design details

The analytics dashboard answers an advertiser's only real question, 'is my money working?', with campaign performance charts front and center.

under the hood

Aurora RDS connections authenticate with 15-minute IAM tokens; an automated refresh script regenerates them before every server start. No long-lived database passwords anywhere.

next case studyScraperHub →