GearUp – Sports & Outdoor Gear Rental Platform
Rent Sports & Outdoor Gear Instantly

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 Name | Fields |
|---|---|
| Users | id, email, password_hash, full_name, phone, role (CUSTOMER/PROVIDER/ADMIN), status (ACTIVE/SUSPENDED), profile_pic, created_at, updated_at |
| Categories | id, name, slug, description, icon, created_at |
| GearItems | id, 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 |
| RentalOrders | id, 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 |
| Payments | id, 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 |
| Reviews | id, rental_order_id (FK), gear_id (FK), user_id (FK), rating (1-5), comment, images (JSON), is_verified_purchase, created_at |
| Notifications | id, 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