All projects

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.

Visit WebsiteClient work under NDA
Role
Full Stack Developer
Team
NeoFinity product team
Timeline
Status
Completed
neofinity.in
NeoFinity, Desktop Homepage1 / 4

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