E-commerceAntino Labs
NeoZAP E-commerce Platform
Full-stack developer on NeoFinity's product team for 18 months. Built NeoZAP's marketing site and storefront, the pre-launch waitlist, and a payment layer that let us change gateway twice without reintegrating.
01
The problem
I was placed at NeoFinity through Antino Labs as the full-stack developer on the product team, and NeoZAP was the product I was given: a marketing site, a storefront and a pre-launch waitlist, handed to me as Figma designs to implement with the logic behind them. The constraint that shaped the work was that payment approvals had not cleared yet, so the checkout had to be finished and ready before anyone knew which gateway we would be allowed to use.
02
The approach
One Next.js app: ISR for marketing pages, SSR for the storefront, WordPress as a headless content source. Payments went behind a provider-agnostic interface with its own status polling, so the integration was finished before the business decision was. Heavy multi-step forms ran on react-hook-form, and section motion used Lottie tied to scroll position.
Overview
- 3
- payment providers, one interface
- 18
- months on the NeoFinity product
- 13
- technologies
03
Key decisions
ISR
over full SSR
Marketing pages changed weekly, not per request. Incremental regeneration kept them effectively static, fast first byte, no rebuild pipeline to babysit, while the storefront stayed server-rendered where freshness actually mattered.
A provider-agnostic payment interface
over Integrating whichever gateway got approved
Gateway approval was pending and the launch date was not. One shared contract with each provider behind it meant the checkout was finished before the business decision was. That turned out to matter more than expected: we ran Razorpay first, then Paytm, then Cashfree, and each move was a route switch rather than a reintegration.
Polling with explicit cleanup
over trusting the redirect callback
Payment confirmation can land late, or the user can close the tab mid-flow. I polled for terminal status and tore the interval down on unmount and on resolution, so no orphaned timers, and no order stuck reading "processing" because a callback never arrived.
react-hook-form
over controlled component state
The waitlist and pre-booking forms had dynamic fields and cross-field validation. Controlled inputs re-rendered the whole form on every keystroke; uncontrolled refs kept large forms responsive and put validation in one schema instead of scattered handlers.
04
What I built
NeoFinity marketing site
Next.js · Tailwind · Framer Motion
Built as the full-stack developer on the product team, matched to the Figma designs, the public face of the product.
Waitlist & pre-booking flow
Next.js · react-hook-form · REST
Captured real demand before the product was live, and gave the team a launch-day contact list.
Scroll-driven Lottie motion
lottie-react · IntersectionObserver
Section animations advance with scroll position and pause off-screen, so the page stays cheap to render.
Provider-agnostic payment layer
Razorpay · Paytm · Cashfree
One interface with Razorpay, Paytm and Cashfree behind it. Switching provider was a route change, and we made that change twice.
API layer with cache tagging
Redux Toolkit · RTK Query
Dashboard and storefront data fetched through tagged queries, so a mutation invalidates exactly what it touched instead of refetching everything.
Payment status polling
Interval polling · unmount cleanup
Terminal status resolves even when a callback is late; no orphaned timers, no stuck "processing" orders.
Complex multi-step forms
react-hook-form
Dynamic fields and cross-field validation in one schema instead of scattered handlers.
Headless content layer
WordPress REST API
Marketing edits and publishes copy without waiting on a developer or a deploy.
Funnel instrumentation
GA · GTAG · Facebook Pixel
Per-step drop-off is measurable, so checkout friction is diagnosed rather than debated.
05
The outcome
Live at neofinity.in. The waitlist and pre-booking flow captured demand ahead of launch, and the payment layer earned its keep: we started on Razorpay, moved to Paytm, and finished on Cashfree, each switch a route change rather than a reintegration. Marketing publishes content without a deploy, and the funnel is instrumented end to end so drop-off is measured rather than guessed.
Stack
- Next.js
- SSR
- ISR
- Tailwind CSS
- Framer Motion
- lottie-react
- react-hook-form
- Redux Toolkit
- RTK Query
- Node.js
- WordPress API
- Razorpay
- Paytm
- Cashfree

