QLess — Skip the Line, Shop Smarter

About the Project


What Inspired Us

Standing in checkout lines feels outdated in a world where almost everything else is instant. Americans spend 37 billion hours per year waiting in lines, which comes out to:

$$ \frac{37 \times 10^9 \text{ hours}}{330 \times 10^6 \text{ people}} \approx 112 \text{ hours/person/year} $$

That is nearly five full days every year spent waiting.

We asked a simple question:
What if checkout didn’t exist at all?

That question led to QLess — a mobile self-checkout system that lets customers scan items, pay instantly, and leave the store with a verified QR code.


What We Learned

Technical Skills

  • React Native + Expo for cross-platform mobile development
  • Stripe PaymentIntents and webhooks for secure payments
  • MongoDB + Mongoose for scalable data modeling
  • Time-limited QR verification to prevent fraud
  • Skia graphics for modern glassmorphism UI

Business Insights

  • Self-checkout is a \$100B+ market
  • Trust and verification are critical for retailers
  • Small delays scale into major inefficiencies

How We Built It

System Architecture

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│   Mobile App    │ ─▶  │   Backend API   │ ─▶  │    MongoDB      │
│ (React Native)  │     │  (Express.js)   │     │   (Atlas)      │
└─────────────────┘     └────────┬────────┘     └─────────────────┘
                                  │
                                  ▼
                         ┌─────────────────┐
                         │     Stripe      │
                         │   (Payments)   │
                         └─────────────────┘

User Flow

  • Scan — Scan product barcodes using the phone camera
  • Cart — Items added with real-time pricing
  • Pay — Secure checkout via Stripe
  • Go — Generate a QR code validated at exit

What’s Next

  • NFC-based product scanning
  • Store analytics dashboards
  • Live inventory integration
  • Multi-language support
  • Loyalty and rewards programs

The best interface is no interface.
The best checkout is no checkout.

Built With

Share this project:

Updates