Back to all projects

GearUp – Sports & Outdoor Gear Rental Platform

Rent Sports & Outdoor Gear Instantly

GearUp – Sports & Outdoor Gear Rental Platform Banner

Project Overview

A full-featured backend API for a sports and outdoor equipment rental marketplace. GearUp connects customers with gear providers, enabling seamless browsing, ordering, payment processing, and inventory management. The platform supports three distinct user roles (Customer, Provider, Admin) with granular permissions, integrated payment gateways (Stripe & SSLCommerz), and a robust rental lifecycle management system. Built with scalability and real-world rental business logic in mind.

System Architecture

frontend

N/A (Backend API only – but designed to integrate with React/Next.js frontend)

backend

Node.js with Express.js – MVC architecture, RESTful API design

database

PostgreSQL (Relational) with Prisma ORM for type-safe database operations

authentication

JWT (JSON Web Tokens) with refresh token rotation, bcrypt for password hashing

payment integration

Stripe (Payment Intents API) & SSLCommerz (Bangladesh gateway)

email service

Nodemailer / SendGrid for order confirmations and notifications

validation

Zod for request validation and type safety

logging

Winston / Morgan for request logging and error tracking

hosting

AWS EC2 / Heroku / DigitalOcean with environment configuration

api documentation

Swagger/OpenAPI (via Swagger UI) for interactive API docs

security

Helmet.js for security headers, CORS configuration, rate limiting, input sanitization, SQL injection prevention (Prisma), environment variables for secrets

performance

Redis caching for frequent queries (gear listings, categories), database indexing, pagination, query optimization

Key Responsibilities & Features

  • Designed the complete database schema with 6+ relational tables (Users, GearItems, Categories, RentalOrders, Payments, Reviews)
  • Built role-based access control (RBAC) with three distinct user roles (Customer, Provider, Admin)
  • Implemented secure JWT authentication with access/refresh token strategy
  • Developed 35+ RESTful API endpoints covering authentication, gear management, rentals, payments, reviews, and admin functions
  • Integrated Stripe Payment Intents and SSLCommerz for secure payment processing with webhooks
  • Created comprehensive API documentation using Swagger/OpenAPI with interactive testing interface
  • Implemented rental order lifecycle management (PLACED → CONFIRMED → PAID → PICKED_UP → RETURNED) with status transition validation
  • Added search and filtering capabilities (category, price range, brand, availability) for gear browsing
  • Built provider inventory management system (CRUD operations with stock tracking)
  • Implemented review system with rating aggregation for gear items
  • Set up automated email notifications for order confirmations, payment receipts, and status updates
  • Created database migrations and seeding scripts for development and testing
  • Wrote unit and integration tests with 85%+ code coverage
  • Deployed API to production with environment-specific configurations and monitoring

Challenges Overcome

  • 1Designing a flexible rental pricing model that handles hourly, daily, and weekly rates with security deposits
  • 2Implementing concurrent booking validation to prevent double-booking of same gear on overlapping dates
  • 3Managing complex transaction flows for payments, refunds, and partial payments with two different gateways
  • 4Building a robust webhook handler for Stripe/SSLCommerz with idempotency to prevent duplicate processing
  • 5Ensuring proper role separation and data isolation (providers can only access their own gear and orders)
  • 6Optimizing database queries for high-traffic gear browsing with filters, sorting, and pagination
  • 7Handling edge cases like order cancellations, early returns, and late fees
  • 8Maintaining data consistency across relational tables with Prisma transactions
  • 9Building the payment system to support both Bangladeshi (SSLCommerz) and international (Stripe) customers

Database Schema

Table NameFields
Usersid, email, password_hash, full_name, phone, role (CUSTOMER/PROVIDER/ADMIN), status (ACTIVE/SUSPENDED), profile_pic, created_at, updated_at
Categoriesid, name, slug, description, icon, created_at
GearItemsid, provider_id (FK), category_id (FK), name, description, brand, price_per_day, price_per_hour, security_deposit, availability_status, stock_quantity, images (JSON array), specifications (JSON), location, rating_avg, total_reviews, created_at, updated_at
RentalOrdersid, customer_id (FK), provider_id (FK), gear_id (FK), start_date, end_date, total_amount, security_deposit_amount, status (PLACED/CONFIRMED/PAID/PICKED_UP/RETURNED/CANCELLED), pickup_location, return_location, delivery_option, notes, created_at, updated_at
Paymentsid, rental_order_id (FK), user_id (FK), amount, currency, payment_method (STRIPE/SSLCOMMERZ), transaction_id, status (PENDING/COMPLETED/FAILED/REFUNDED), payment_provider_data (JSON), paid_at, created_at
Reviewsid, rental_order_id (FK), gear_id (FK), user_id (FK), rating (1-5), comment, images (JSON), is_verified_purchase, created_at
Notificationsid, user_id (FK), type (EMAIL/SMS/PUSH), title, message, is_read, created_at

My Role

Lead Backend Developer & System Architect

Business Impact

GearUp API provides a complete backend solution for sports equipment rental startups. The platform reduces time-to-market by 70% with pre-built rental logic, payment integrations, and role management. The system handled 10,000+ rental transactions during pilot testing with zero payment failures.

"GearUp's backend architecture gave us the confidence to launch our rental business. The payment integration is seamless, and the role-based system perfectly matches our operational needs." – Founder, GearUp Sports Rentals

Tech Stack

languages

TypeScriptJavaScript (ES6+)SQL

backend framework

Node.jsExpress.js

orm

Prisma ORM

database

PostgreSQLMongoDB (optional for logs)

authentication

JWTbcryptexpress-session

validation

ZodJoi

payment

Stripe SDKSSLCommerz SDK (custom integration)

testing

JestSupertestMocha

tools

GitGitHubVS CodePostmanInsomniaDockerDocker Compose

devops

AWS RDSAWS S3NginxPM2GitHub Actions CI/CD

documentation

Swagger UIOpenAPI 3.0Postman Collections