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.

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.

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