Skip to content
aviral gupta

// WORK

Production software, with the engineering left in.

Selected work from my time as Senior Developer at Thrifty Car Rental UAE, alongside earlier enterprise engineering at Mercedes-Benz R&D India, Grid Dynamics and SIKA Interplant. The examples show the kind of software work I take on: backend architecture, full-stack applications, migrations, payments, integrations and production performance.

CARIVA2024 to 2026 · BUILD FROM SCRATCH

What does it take to build a car sales platform from an empty repository?

Cariva started as an empty repository. The brief: a consumer car sales and used-car platform for the UAE that takes real payments, owns its own catalogue, and generates its pages from the data model rather than from a page builder.

I designed and built it end to end: a Next.js front end with SSR/ISR chosen per page type, backed by six Node.js microservices, with 326 templated pages generated from the data model, of which 149 model, 100 used-car and 65 brand. Payments went through N-Genius and Adyen behind a single resolver, so a second brand adds a row of configuration rather than a branch in the checkout. The pages are indexable, canonical-clean and schema-tagged because the templates emit that by construction, not because anyone went back over them afterwards.

Nobody hand-built 326 pages. The catalogue is the data model, the templates render it, and adding a model adds a page — which is also why none of them can drift out of schema one at a time.

Line-art illustration: a sitemap tree flowing into a grid of page cards and a map with location pins.
326

pages live

149

model pages

6

Node.js microservices

2

payment gateways behind one resolver

THRIFTYDOLLAR2024 · PLATFORM MIGRATION

How do you replace a live booking platform while it keeps taking bookings?

Thrifty ran on a PHP Laravel monolith and Dollar ran a React front end on a .NET backend, both slow to change and both carrying years of accumulated traffic. I migrated Thrifty front end to Next.js and replaced the Dollar .NET backend with six Node.js microservices shared across both brands, while the platform kept taking bookings.

The unglamorous work made it safe: a complete URL inventory, a 1:1 tested 301 redirect map, metadata and schema parity verified page by page, and launch-day crawl comparisons old versus new. The result was the best possible outcome for a migration — nothing happened. Rankings held flat, bookings continued, and the new platform was faster on day one than the old one ever was.

Underneath it, the platform engineering. Six services on Cloud Run, built by Cloud Build from their own Dockerfiles, none of them publicly exposed, with a load balancer routing on path prefix and rate limiting at the Cloudflare edge. Two authentication paths by design: an API key for the front end, JWT for the internal ERP, so a key lifted from a browser cannot reach an administrative endpoint. Redis in front of the read paths, with a TTL where staleness is bounded by time and write invalidation where it is not. RabbitMQ behind booking confirmation, so the customer is confirmed immediately while the internal fan-out runs behind it. And New Relic is what found the vehicle listing endpoint sitting at three to seven seconds: the fix was a compound index first, then the query shape, then caching, in that order.

The best outcome a migration can have is that nothing happens: bookings uninterrupted, rankings flat, the new platform faster on day one. That is bought with a URL inventory, a tested redirect map and a page-by-page parity sheet.

Line-art illustration: a PHP Laravel server stack bridged by redirect arrows to a Next.js stack, under a flat green ranking line.
0

ranking positions lost

0

minutes of downtime

100%

of URLs redirect-mapped

30

days of post-launch monitoring

THRIFTY2024 to 2026 · DATA LAYER

What happens when the engineer who writes the data layer also owns what reads it?

Across three rental brands I specified, implemented and validated the complete measurement stack: GA4 with a custom ecommerce event taxonomy, GTM with documented conventions, Meta Pixel plus Conversions API with deduplication, Microsoft Clarity, and Consent Mode v2 for GDPR/UAE PDPL compliance.

Then the part that made it worth having: because the data layer was trustworthy, we built a lead and abandoned-booking recovery module directly on the same events, turning drop-offs and failed payments into cards the business teams work from. That is an application feature reading an application event stream, which is only possible when the two are specified together.

An event taxonomy is a schema. When it is specified away from the code that emits it, the numbers end up describing the tags rather than the bookings, and nobody finds out until a figure has to be defended.

Line-art illustration: a central dataLayer node connected to GA4, GTM, Pixel and Clarity nodes, with a consent shield feeding in.
4

platforms unified — GA4 · GTM · Pixel · Clarity

1

event spec across 3 brands

1

lead and abandoned-booking recovery module

v2

Consent Mode compliant (GDPR · UAE PDPL)

// THE ROLES

The roles behind this work

THRIFTY CAR RENTAL UAE01.2024 to 07.2026

Senior Developer managing the web platforms for Dollar, Thrifty and Cariva under the Head of E-commerce. Wrote the primary backend architecture, built the transactional modules behind booking, pricing and payments, and led the infrastructure and performance work across three car rental and car sales brands.

MERCEDES-BENZ R&D INDIA2022–2023

The internal platform behind vehicle type-approval documentation — cross-department data capture, multi-level sign-off with a full audit trail, analytics across live programmes. Node.js, TypeScript, MongoDB, Kafka, RabbitMQ.

GRID DYNAMICS2023

A client engagement with Google on a connected device platform: data packet handling, image upload and processing, and data integrity.

SIKA INTERPLANT2017–2021

Aerospace and defence. Built an internal online estimating tool, and managed international clients across order intake, technical questions and shipping.

Available immediately for a permanent senior engineering role, remote or on site.

// CAPABILITY MAP

Where has each capability been proven?

CapabilityProven at
Payment integrationN-Genius, Adyen, Bank of Muscat and PointsPay, behind one resolver
Idempotent payment confirmationDuplicate and concurrent webhooks, settled by a conditional write
Pricing and availabilityA pricing service isolated from a bulk ingest of three to ten minutes
Service boundariesBranch, Product, Content, User, Pricing and Booking, behind one gateway
Caching strategyRedis: a TTL where staleness is bounded by time, write invalidation where it is not
SSR/SSG/ISR architectureCariva, Thrifty, this site
Platform migrationThrifty Laravel to Next.js, with no downtime and no ranking loss
Platform engineering6 microservices on Cloud Run, with Cloud Build, Docker and CI/CD
Production AIOCR onboarding on Google Gemini
ComplianceGDPR, UAE PDPL, Consent Mode v2

// OPEN TO WORK

Have a role, project or problem worth discussing?

I'm available for permanent senior engineering roles. Tell me what you are building or what role you are hiring for, and I'll tell you whether my experience fits.