👟Nike Incubator Partnership
Case Study

E-commerce Platform for
Apparel Rental & Purchase

Built a B2C proof-of-concept platform for a workout clothing rental service, combining short-term rentals, subscriptions, and direct purchases in a single seamless experience.

👤Role: Lead Full-Stack Developer
🎯Type: Rapid POC Development
🚀Outcome: Successful Launch & Handover
React.jsNode.jsMongoDBEzRentOut APIStripeKlaviyoSegment
FlyClub Platform - Desktop and Mobile
Project Overview
Business Goals

The Vision Behind the Platform

The incubator wanted to explore a new way to help customers access premium workout clothing without committing to full-price purchases upfront.

1

Try Before You Buy

Let customers test new products in real life before deciding to purchase—reducing purchase anxiety and returns.

2

Convenient Travel Solutions

Help frequent travelers pack light while still being able to work out in quality gear at their destination.

3

Sales Driver

Use rentals as a low-friction entry point that drives full-price purchases of new items users fall in love with.

Product Experience

Create Your Kit Flow

The core experience was a guided "Create Your Kit" flow where users could build a complete workout outfit by mixing and matching items.

👟

Mix & Match

Browse and select shoes, shirts, shorts, and accessories by style and size to create the perfect workout kit.

📅

Rental Dates

Select rental period, check real-time inventory availability, and get appropriate pricing based on subscription status.

💝

Keep What You Love

After the rental period, return items or purchase new versions of anything you want to keep.

Desktop Experience
Home Page & How It Works
FlyClub Home Page
How It Works Page
Kit Builder

Intuitive Product Selection

Users can easily customize their kits and save favorite combinations for future rentals, making reordering fast and simple.

Mobile Experience

Thumb-Friendly Multi-Step Wizard

The same kit-building flow reworked into a focused, mobile-optimized UI preserving full functionality in a lighter experience.

My Role

End-to-End Delivery

As lead full-stack developer, I owned the complete delivery of the platform—from architecture decisions to production deployment.

🏗️

Full-Stack Development

  • Rebuilt platform from scratch after evaluating legacy codebase
  • Implemented React front-end with responsive design
  • Built Node.js + Express API layer
🗄️

Database Design

  • Modeled users, orders, and inventory in MongoDB
  • Designed reservation and availability windows
  • Implemented item state tracking system
🔌

API Integrations

  • EzRentOut API for rental management
  • Stripe for subscriptions and payments
  • Klaviyo & Segment for analytics
📦

Inventory System

  • Barcode-based workflow for operations
  • State machine for item lifecycle
  • Real-time availability tracking
📊

Analytics & Marketing

  • Event tracking for full user journey
  • Email flows and targeted campaigns
  • Conversion funnel visibility
🚀

DevOps & Handover

  • Deployment and infrastructure setup
  • Documentation for internal team
  • Clean architecture for future scaling
Architecture

The Orchestration Layer

The platform acted as the coordination hub between multiple systems that didn't natively talk to each other.

Front End

  • React.js SPA
  • Responsive design
  • Guided checkout flows
  • Account management

Back End

  • Node.js + Express
  • Centralized business logic
  • RESTful API
  • Integration handlers

Database

  • MongoDB
  • User profiles
  • Orders & histories
  • Item states & availability

Integrations

  • EzRentOut (rentals)
  • Stripe (payments)
  • Klaviyo (email)
  • Segment (analytics)
// Item state machine for inventory tracking
const itemStates = {
  AVAILABLE: 'available',
  RESERVED: 'reserved',
  OUT_FOR_DELIVERY: 'out_for_delivery',
  WITH_CUSTOMER: 'with_customer',
  IN_CLEANING: 'in_cleaning',
  BLOCKED: 'blocked'
};

// Barcode scan triggers state transition
const processBarcodeScan = async (itemId, scanType) => {
  const item = await Item.findById(itemId);
  const nextState = getNextState(item.state, scanType);
  await item.updateState(nextState);
  await syncWithEzRentOut(item);
};
Challenges

Key Problems & Solutions

Building on an early-stage rental API while keeping operations simple required creative problem-solving.

1

Early-Stage Rental API

Challenge

The EzRentOut API was still relatively immature—not all endpoints behaved as documented, and some needed features didn't exist yet.

Solution
  • Collaborated closely with EzRentOut team to clarify API behavior
  • Requested and helped spec missing endpoints
  • Built robust integration layer with error handling and retries
  • Isolated integration logic for easy future updates
2

Complex Inventory vs. Simple Operations

Challenge

Inventory needed to track time-based reservations, cleaning buffers, and delivery windows—but staff needed a process they could follow without technical knowledge.

Solution
  • Designed clear state machine for each item lifecycle
  • Implemented barcode-driven workflow for staff
  • System handles state transitions and validation automatically
  • Operations team maintains accuracy with minimal training
Results

Impact & Outcomes

The POC successfully validated the rental model and provided a foundation for the incubator's continued development.

🚀

Successful Launch

Delivered a functioning proof-of-concept platform supporting real customers across the full rental and purchase journey.

🏗️

Foundation for Growth

Provided clean architecture, integrations, and workflows that an internal team could build on as the offering grew.

Polished UX

Real-time inventory, intuitive kit-building, and seamless checkout felt like a modern e-commerce experience despite complex logic.

🤝

Smooth Handover

After validating the concept, transitioned the project to a larger development team with clear technical and product foundation.

🎯

Own the Orchestration Layer

When multiple external tools are involved, the custom application has to be the source of truth for business logic and data flow.

⚙️

Design for Users & Ops

A great customer experience depends on giving operations simple, reliable tools to keep the system's data accurate.

🏃

POCs Can Still Be Robust

Even under POC timelines, investing in clean architecture makes it much easier for future teams to scale and extend.

Project Summary