Skip to content
AM
Case Study·Client project·Full Stack Engineer — Storefront & Stripe Integration

Cloud Vapours

E-Commerce Platform (Canada)

E-commerce web application featuring product catalog browsing, cart and checkout flow, Stripe payment integration, and Google authentication.

github.com/AmirMaqbool0/Cloud_vapours
Screenshot pending client submission — 1600x1000

01Context & Problem

A retail client needed a web storefront allowing customers to browse products, manage shopping carts, and complete purchases securely. The project included product catalog browsing, a cart and checkout flow, Stripe payment integration, and Google authentication.

02Engineering Ownership

What I Built

  • ▸Developed product catalog browsing with category filtering using React and Redux Toolkit.
  • ▸Built the shopping cart and checkout flow.
  • ▸Integrated Stripe payment integration for secure order processing.
  • ▸Implemented Google authentication using OAuth 2.0 (Google).

What I Did Not Build

  • ▸Worked from storefront designs provided by the client rather than producing the visual design myself.

03Stack & Rationale

React & Redux Toolkit

Client-side interface for product catalog browsing and cart state management.

Stripe

Payment integration handling secure checkout transactions.

Node.js & Express.js

REST APIs managing product catalog endpoints, carts, and order verification.

MongoDB & Mongoose

Document storage for product catalogs, customer records, and completed orders.

04System Architecture

Component topology, data flows, and authorization boundaries:

React StorefrontCatalog Filter & CartStripe CheckoutCheckout IntentNode.js Express APIOrder HandlerStripe IntegrationStripe APIStripe APIMongoDBProducts · Orders

05Authentication & Authorization

Authentication supports Google authentication, issuing a JWT on login, which auth middleware verifies on every protected route. Authorisation is enforced by role-based access control middleware that separates standard user access from admin access. If I were rebuilding this now I would move token storage to HTTP-only cookies and add automated tests around the auth middleware.

06Hard Technical Challenges & Solutions

Order Creation and Payment Verification

Problem: Orders needed to reflect confirmed payments through Stripe before being marked as paid.

Solution: The Node.js backend checked payment status with Stripe via REST APIs before updating order records in MongoDB.

Securing Checkout and Account Data

Problem: Customer cart and checkout routes required distinct access rules between anonymous shoppers and authenticated accounts.

Solution: Express.js middleware handled authentication checks, verifying JWT tokens for registered accounts while allowing public catalog browsing and checkout submission.

07What I Would Do Differently Now

Engineering Retrospective & Critical Critique

If I were building this platform today, I would set up automated testing for the cart, checkout, and Stripe integration flows. I would also containerize the application with Docker and use CI/CD with GitHub Actions to automate verification on each release.