UrbanMart

A full-stack production-style e-commerce platform with advanced filtering, cart & wishlist management, Razorpay payment integration, and a complete order lifecycle system.

Duration

2 weeks (~120+ focused development hours)

Team Size

Solo

Status

Completed

About this project

UrbanMart is a full-stack e-commerce application designed to simulate real-world online shopping platforms. It includes advanced filtering, sorting, server-side pagination, stock validation before checkout, wishlist functionality, and structured order creation. Razorpay is integrated for secure online payments with backend signature verification and order status updates. The backend is built using Node.js with Prisma ORM and PostgreSQL, ensuring a relational and scalable database design. This project helped me understand payment gateway integration, business logic implementation, and handling complex user flows like cart management and transaction states.

The Problem

Many beginner e-commerce projects focus only on UI and basic CRUD operations, lacking real-world features like stock validation, secure payment processing, structured order states, and scalable database design.

The Solution

Built a complete e-commerce system with structured relational schema, stock-aware cart logic, secure Razorpay payment integration with backend verification, order lifecycle management, server-side filtering & pagination, and clean state handling to simulate real-world business logic.

Key Features

  • Advanced product filtering and sorting
  • Server-side pagination for performance optimization
  • Stock-aware quantity selection and validation
  • Cart and wishlist management
  • Complete checkout and order creation flow
  • Razorpay payment gateway integration
  • Backend signature verification for secure payment validation
  • Structured order lifecycle (CREATED → PENDING_PAYMENT → PAID → FAILED → EXPIRED)
  • Secure authentication with JWT

Technologies Used

ReactTailwind CSSNode.jsExpress.jsPrisma ORMPostgreSQLJWT Authentication

Why I Built This

I built UrbanMart to go beyond a basic shopping website and understand how real e-commerce systems work internally. I wanted to design proper database relationships, implement secure payment verification, handle order states correctly, and build production-level backend logic instead of just focusing on UI.

Screenshots

My Role

Full Stack Developer

Built UrbanMart as a full-stack project focusing heavily on backend architecture, database schema design, and business logic implementation. Designed relational models using Prisma, implemented authentication and role-based access, and developed both customer and admin interfaces.

Team Setup

Solo

Project Duration

2 weeks (~120+ focused development hours)

Key Responsibilities

Designed relational database schema using Prisma & PostgreSQL

Developed RESTful APIs for products, cart, and orders

Implemented order lifecycle state management

Built responsive UI using React and Tailwind CSS

Implemented authentication and protected routes

Optimized queries using server-side pagination and filtering

Tested edge cases like stock mismatch and failed orders

Challenges & Learnings

Challenges Faced

  • 1

    Designing a normalized relational database schema using Prisma

  • 2

    Handling order state transitions correctly

  • 3

    Integrating Razorpay and implementing secure signature verification

  • 4

    Preventing overselling with stock validation logic

  • 5

    Managing complex cart state across multiple pages

  • 6

    Implementing pagination and filtering efficiently

Key Learnings

  • Deepened understanding of relational database modeling

  • Learned how real-world e-commerce payment systems operate

  • Gained hands-on experience integrating Razorpay payment gateway

  • Understood the importance of backend payment verification and security

  • Improved backend API structuring and modularization

  • Strengthened full-stack debugging and optimization skills

Interested in my work?

Feel free to reach out or explore more of my projects