← Back to Latest News

How We Built Love in a Box: A Full-Stack Boutique Gift E-Commerce Platform

Love in a Box is a boutique gift store built around one idea: gifting should feel personal, not like clicking through a generic product grid. The client came to us with a clear brief — a custom e-commerce platform that matched the warmth and care of the brand itself, with a shopping experience that felt considered from the first page load to the order confirmation email.

Here's how the build came together, what we chose to build it on, and why those decisions mattered.

The Brief

Love in a Box sells curated gift boxes for occasions — birthdays, anniversaries, new babies, self-care, and more. The product range is carefully assembled, the presentation matters, and the brand is distinctly feminine and warm. A standard template platform wasn't going to do the job.

The client needed a storefront that felt as considered as the products themselves. Shop by category, shop by occasion, or build a custom box from scratch — all within a platform that looked beautiful on mobile and moved fast enough that customers wouldn't drop off before checkout.

Beyond the storefront, they needed a full back-office: product management, order tracking, customer management, returns, and discount codes — everything a growing gift business needs to run day-to-day without relying on third-party dashboards.

The Tech Stack

The platform is built on Next.js 16 with React 19 and TypeScript end-to-end. Next.js gives us server-side rendering out of the box, which means product pages load as fully rendered HTML — fast for customers, indexable for Google. React 19 brought the new compiler with it, which handles memoisation automatically and keeps the UI responsive without manual optimisation passes.

For the database, we chose PostgreSQL via Prisma. The data model covers products, customers, orders, cart sessions, addresses, returns, discount codes, and email logs — a proper relational schema that handles the full lifecycle of a gift order, from adding to cart through to return resolution. Prisma's type-safe query layer means every database interaction is caught at compile time, not in production.

Payments are handled by Stripe, with Stripe Elements managing card input on the frontend. Card data never touches our servers — it goes directly to Stripe's infrastructure, which keeps PCI compliance scope minimal and the security posture strong. The checkout supports guest purchases as the default path, with account creation offered after the order is placed. Forcing account creation before payment is one of the most consistent causes of checkout abandonment, and it's an easy problem to avoid by getting the order of operations right.

Transactional emails — order confirmations, shipping updates, password resets — are handled via Resend. Authentication is managed with NextAuth v5, with bcryptjs handling password security server-side. Zustand manages cart and session state on the frontend, persisting across page navigation without requiring a round-trip to the server.

Styling is Tailwind CSS v4, with GSAP handling the animated sequences on the homepage.

The Animated Hero

The first thing a visitor sees on the Love in a Box homepage is an animated gift box opening — products float out with staggered timing, emoji confetti drifts in the background, and the whole sequence loops on a delay. It sets the tone immediately: this isn't a functional-but-cold shopping experience. It's warm, playful, and deliberate.

The animation is built in GSAP, which gives frame-accurate control over timing curves, stagger sequences, and responsive scaling. The scene adapts to the viewport width so it reads correctly on mobile without requiring separate assets or logic. It's the kind of detail that takes real effort to do properly — and the kind that customers notice without necessarily knowing why.

Build Your Box

One of the core differentiators for Love in a Box is the ability for customers to assemble their own gift box. Rather than choosing from pre-configured sets, shoppers can browse individual products and build a custom selection — a feature that adds meaningful complexity to the data model and checkout flow, but significantly broadens the appeal of the store.

The Build Your Box experience connects directly to the cart and checkout, with the same Stripe payment flow and order management as standard purchases. There's no separate system to maintain or reconcile.

The Admin Panel

A storefront is only half the picture. The Love in a Box admin panel gives the client full control over everything behind the scenes — adding and editing products, managing inventory levels, viewing and processing orders, handling customer accounts, issuing and tracking discount codes, and managing returns through a full resolution workflow.

The returns system in particular is built out properly: customers can raise a return request through their account, the admin can review and approve it, refund amounts are tracked, and resolution notes are stored against the order. It's not a spreadsheet workaround — it's a purpose-built tool that matches how the business actually operates.

Order management includes tracking number input and carrier selection, so the client can update customers with shipping information without needing a separate logistics dashboard.

What a Custom Build Made Possible

The honest answer to "why not use Shopify?" is that the requirements diverged from what off-the-shelf platforms do well. The brand expression, the Build Your Box flow, the fully integrated admin, and the data model that ties it all together — these were built to fit the business, not the other way around.

A custom codebase also means the client isn't paying platform fees on every transaction or working around a plugin ecosystem to add features that should have been there from the start. The platform is theirs.

If you're planning an e-commerce project and want to figure out whether a custom build or a platform solution makes more sense for your situation, that's a conversation worth having before any decisions are made.

You can see more about how we approach e-commerce builds and get in touch from there.

Got a project in mind? Let's figure out what you need.

Start Planning →