Skip to main content

Marketplace / Booking and Payments

Rent N Roll

A pre-launch marketplace that gives camera owners and renters one booking to follow from available dates and verification through payment, handoff, and return.

Rent N Roll browse page showing DSLR, mirrorless, camcorder, and action-camera categories.
The marketplace starts with category-led discovery so renters can narrow the equipment they want to browse.

The problem

Both people need to know what gear is available, who has been verified, what has been signed and paid, and whether the equipment is ready for handoff or return.

If any of those details disagree, the owner and renter can act on different booking information or lose sight of the next required step.

My contribution

Full-Stack Engineer

Solo project · Pre-launch

Built the owner and renter journeys across equipment listings, discovery, booking, identity verification, digital contracts, handoff confirmation, and PayMongo payments.

Replaced 24 untyped database queries with typed Supabase RPC patterns and generated types before launch.

The choices behind the work

One booking connects the listing, renter, required checks, money movement, and physical exchange so each side can see what happens next.

Fix ambiguous database calls before launch

Twenty-four untyped database queries made it easy for application code and stored data to disagree.

Move every identified query behind typed Supabase RPC patterns backed by generated types.

Make booking-data changes reviewable and catch mismatched fields before they reach an owner or renter.

Let PayMongo confirm money movement

The interface can start a payment, but it cannot prove that PayMongo completed it.

Integrate payment and deposit handling through PayMongo webhooks.

Update the booking from provider-confirmed events instead of assuming a successful button click.

Rent N Roll equipment detail page with product photos, daily price, deposit amount, booking notice, and availability calendar.
The listing view keeps product media, price, deposit information, booking constraints, and availability in one decision point.

Outcome

Moved 24 untyped database queries to typed Supabase RPC patterns so mismatched application and database assumptions can be caught earlier.

Connected listings and availability to verification, contracts, PayMongo payments and deposits, handoff confirmation, and return.

What I learned

The difficult part of rental software is not the listing page; it is keeping two people aligned through every commitment and handoff.

A payment button shows intent, but the PayMongo event must confirm whether money actually moved.

What comes next

Run the complete booking, payment, handoff, return, and exception paths with launch users before adding more marketplace scope.

Because the marketplace is pre-launch, there is no verified rental volume, user adoption, or live payment history yet.

Stack

  • Next.js
  • TypeScript
  • React
  • Tailwind CSS
  • Supabase
  • PostgreSQL
  • Zod
  • PayMongo