<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Aubrey Macasaet</title>
    <description>The latest articles on DEV Community by Aubrey Macasaet (@aubrey_macasaet).</description>
    <link>https://dev.to/aubrey_macasaet</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3913252%2Fb066fcf0-6706-42f4-9222-a0aadf37b159.jpg</url>
      <title>DEV Community: Aubrey Macasaet</title>
      <link>https://dev.to/aubrey_macasaet</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aubrey_macasaet"/>
    <language>en</language>
    <item>
      <title>Building a Peer-to-Peer Rental Marketplace: Lessons Learned from Developing AktiveShare</title>
      <dc:creator>Aubrey Macasaet</dc:creator>
      <pubDate>Thu, 02 Jul 2026 14:07:24 +0000</pubDate>
      <link>https://dev.to/aubrey_macasaet/building-a-peer-to-peer-rental-marketplace-lessons-learned-from-developing-aktiveshare-320a</link>
      <guid>https://dev.to/aubrey_macasaet/building-a-peer-to-peer-rental-marketplace-lessons-learned-from-developing-aktiveshare-320a</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; Building a peer-to-peer marketplace is much more than creating listings and connecting buyers with sellers. You need to solve problems around trust, availability, messaging, search, notifications, and user experience. In this article, I share what I learned while building &lt;strong&gt;AktiveShare&lt;/strong&gt;, a platform designed to help people rent, borrow, lend, and sell items within their local communities.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;We've all experienced it.&lt;/p&gt;

&lt;p&gt;You need a pressure washer for one weekend.&lt;/p&gt;

&lt;p&gt;A camera for a vacation.&lt;/p&gt;

&lt;p&gt;A ladder for a few hours.&lt;/p&gt;

&lt;p&gt;A camping tent once a year.&lt;/p&gt;

&lt;p&gt;Buying these items doesn't always make financial sense, yet many of them spend most of their lives collecting dust in garages and storage rooms.&lt;/p&gt;

&lt;p&gt;At the same time, someone nearby already owns exactly what you need.&lt;/p&gt;

&lt;p&gt;That simple observation became the idea behind &lt;strong&gt;AktiveShare&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of encouraging more ownership, I wanted to encourage sharing—allowing people to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rent items&lt;/li&gt;
&lt;li&gt;Borrow from neighbors&lt;/li&gt;
&lt;li&gt;Lend unused equipment&lt;/li&gt;
&lt;li&gt;Sell items they no longer need&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The concept sounds straightforward.&lt;/p&gt;

&lt;p&gt;The implementation was anything but.&lt;/p&gt;




&lt;h2&gt;
  
  
  The First Assumption Was Wrong
&lt;/h2&gt;

&lt;p&gt;Initially, I believed building a marketplace was mostly about CRUD operations.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create Listing
      ↓
Browse Listings
      ↓
Contact Owner
      ↓
Done
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Reality quickly proved otherwise.&lt;/p&gt;

&lt;p&gt;The real complexity wasn't in creating listings.&lt;/p&gt;

&lt;p&gt;It was in managing interactions between people.&lt;/p&gt;

&lt;p&gt;Questions started appearing immediately:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What if two people try to rent the same item?&lt;/li&gt;
&lt;li&gt;How do you prevent spam?&lt;/li&gt;
&lt;li&gt;How do users know whom to trust?&lt;/li&gt;
&lt;li&gt;What happens when someone cancels?&lt;/li&gt;
&lt;li&gt;How do you notify both parties?&lt;/li&gt;
&lt;li&gt;How do you search by distance?&lt;/li&gt;
&lt;li&gt;How do you make listings discoverable?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The application became less about items and more about relationships.&lt;/p&gt;




&lt;h2&gt;
  
  
  Designing the Data Model
&lt;/h2&gt;

&lt;p&gt;One lesson I learned early:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Your database design will determine how flexible your marketplace becomes later.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Instead of only thinking about listings, I modeled the platform around several core entities.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User
 ├── Listings
 ├── Bookings
 ├── Conversations
 ├── Reviews
 ├── Notifications
 └── Favorites
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A listing belongs to a user.&lt;/p&gt;

&lt;p&gt;Bookings connect renters with owners.&lt;/p&gt;

&lt;p&gt;Messages belong to conversations.&lt;/p&gt;

&lt;p&gt;Reviews help establish trust.&lt;/p&gt;

&lt;p&gt;Notifications keep everyone informed.&lt;/p&gt;

&lt;p&gt;Separating these concerns made future features significantly easier to implement.&lt;/p&gt;




&lt;h2&gt;
  
  
  Search Is Harder Than It Looks
&lt;/h2&gt;

&lt;p&gt;Users expect search to "just work."&lt;/p&gt;

&lt;p&gt;But marketplace search is much more than matching keywords.&lt;/p&gt;

&lt;p&gt;People want to search by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Category&lt;/li&gt;
&lt;li&gt;Distance&lt;/li&gt;
&lt;li&gt;Availability&lt;/li&gt;
&lt;li&gt;Condition&lt;/li&gt;
&lt;li&gt;Price&lt;/li&gt;
&lt;li&gt;Rental or Sale&lt;/li&gt;
&lt;li&gt;Recently Added&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Soon I realized search wasn't simply:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;listings&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;title&lt;/span&gt; &lt;span class="k"&gt;LIKE&lt;/span&gt; &lt;span class="s1"&gt;'%camera%'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead it became a combination of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Full-text search&lt;/li&gt;
&lt;li&gt;Geolocation filtering&lt;/li&gt;
&lt;li&gt;Category filtering&lt;/li&gt;
&lt;li&gt;Availability checks&lt;/li&gt;
&lt;li&gt;Sorting&lt;/li&gt;
&lt;li&gt;Ranking&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The better the search experience became, the more users engaged with the platform.&lt;/p&gt;




&lt;h2&gt;
  
  
  Availability Matters More Than Listings
&lt;/h2&gt;

&lt;p&gt;Unlike traditional e-commerce, rental marketplaces have an extra dimension:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Time&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A listing can exist...&lt;/p&gt;

&lt;p&gt;…but it might not be available.&lt;/p&gt;

&lt;p&gt;That changes everything.&lt;/p&gt;

&lt;p&gt;Instead of asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Does this item exist?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The platform constantly asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Is this item available during these dates?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This affects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Booking requests&lt;/li&gt;
&lt;li&gt;Calendars&lt;/li&gt;
&lt;li&gt;Notifications&lt;/li&gt;
&lt;li&gt;Search filters&lt;/li&gt;
&lt;li&gt;Conflict prevention&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Preventing double bookings became one of the most important backend responsibilities.&lt;/p&gt;




&lt;h2&gt;
  
  
  Trust Is the Real Product
&lt;/h2&gt;

&lt;p&gt;One realization surprised me.&lt;/p&gt;

&lt;p&gt;People rarely worry about the item.&lt;/p&gt;

&lt;p&gt;They worry about the person.&lt;/p&gt;

&lt;p&gt;Questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Will they return it?&lt;/li&gt;
&lt;li&gt;Will they damage it?&lt;/li&gt;
&lt;li&gt;Will they show up?&lt;/li&gt;
&lt;li&gt;Can I trust this stranger?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This shifted development priorities.&lt;/p&gt;

&lt;p&gt;Instead of adding more marketplace features, I focused on trust-building.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Verified profiles&lt;/li&gt;
&lt;li&gt;Ratings&lt;/li&gt;
&lt;li&gt;Reviews&lt;/li&gt;
&lt;li&gt;Response time&lt;/li&gt;
&lt;li&gt;Account history&lt;/li&gt;
&lt;li&gt;Profile completeness&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Technology alone doesn't create trust.&lt;/p&gt;

&lt;p&gt;Great user experience does.&lt;/p&gt;




&lt;h2&gt;
  
  
  Messaging Changes Everything
&lt;/h2&gt;

&lt;p&gt;Originally I considered redirecting users to email.&lt;/p&gt;

&lt;p&gt;Bad idea.&lt;/p&gt;

&lt;p&gt;Keeping conversations inside the platform provided several benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Faster communication&lt;/li&gt;
&lt;li&gt;Booking context&lt;/li&gt;
&lt;li&gt;Notification integration&lt;/li&gt;
&lt;li&gt;Moderation opportunities&lt;/li&gt;
&lt;li&gt;Better user retention&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Messaging quickly became one of the platform's most-used features.&lt;/p&gt;




&lt;h2&gt;
  
  
  Notifications Keep the Marketplace Alive
&lt;/h2&gt;

&lt;p&gt;A marketplace without notifications feels empty.&lt;/p&gt;

&lt;p&gt;Users expect updates when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Someone sends a booking request&lt;/li&gt;
&lt;li&gt;A booking is accepted&lt;/li&gt;
&lt;li&gt;A booking is rejected&lt;/li&gt;
&lt;li&gt;Someone sends a message&lt;/li&gt;
&lt;li&gt;A review is received&lt;/li&gt;
&lt;li&gt;A favorite listing changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without notifications, users constantly refresh pages.&lt;/p&gt;

&lt;p&gt;With notifications, the platform feels alive.&lt;/p&gt;




&lt;h2&gt;
  
  
  Performance Lessons
&lt;/h2&gt;

&lt;p&gt;Images quickly became the largest performance bottleneck.&lt;/p&gt;

&lt;p&gt;Marketplace applications are image-heavy.&lt;/p&gt;

&lt;p&gt;Optimizations included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lazy loading&lt;/li&gt;
&lt;li&gt;Responsive image sizes&lt;/li&gt;
&lt;li&gt;Compression&lt;/li&gt;
&lt;li&gt;Thumbnails&lt;/li&gt;
&lt;li&gt;CDN delivery&lt;/li&gt;
&lt;li&gt;Browser caching&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Reducing page weight dramatically improved the browsing experience.&lt;/p&gt;




&lt;h2&gt;
  
  
  Security Is More Than Authentication
&lt;/h2&gt;

&lt;p&gt;Authentication is only the beginning.&lt;/p&gt;

&lt;p&gt;A marketplace must also protect users from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Spam&lt;/li&gt;
&lt;li&gt;Fake listings&lt;/li&gt;
&lt;li&gt;Abusive messaging&lt;/li&gt;
&lt;li&gt;Fraud&lt;/li&gt;
&lt;li&gt;Malicious uploads&lt;/li&gt;
&lt;li&gt;Unauthorized actions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Important considerations include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Input validation&lt;/li&gt;
&lt;li&gt;File validation&lt;/li&gt;
&lt;li&gt;Rate limiting&lt;/li&gt;
&lt;li&gt;Permission checks&lt;/li&gt;
&lt;li&gt;Password hashing&lt;/li&gt;
&lt;li&gt;CSRF protection&lt;/li&gt;
&lt;li&gt;XSS prevention&lt;/li&gt;
&lt;li&gt;HTTPS everywhere&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Building trust also means protecting user data.&lt;/p&gt;




&lt;h2&gt;
  
  
  Features Users Requested (and the Ones They Didn't)
&lt;/h2&gt;

&lt;p&gt;One of the biggest surprises was learning that user requests don't always match user behavior.&lt;/p&gt;

&lt;p&gt;Features users appreciated included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Favorites&lt;/li&gt;
&lt;li&gt;Better search filters&lt;/li&gt;
&lt;li&gt;Easier messaging&lt;/li&gt;
&lt;li&gt;More photos&lt;/li&gt;
&lt;li&gt;Faster notifications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some ideas that seemed exciting initially generated very little engagement.&lt;/p&gt;

&lt;p&gt;That reinforced an important lesson:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Build based on user feedback—not assumptions.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  What I'd Do Differently
&lt;/h2&gt;

&lt;p&gt;If I started over today, I would:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Design for scalability earlier.&lt;/li&gt;
&lt;li&gt;Introduce feature flags from day one.&lt;/li&gt;
&lt;li&gt;Invest more heavily in observability and monitoring.&lt;/li&gt;
&lt;li&gt;Define clearer service boundaries.&lt;/li&gt;
&lt;li&gt;Add automated end-to-end testing sooner.&lt;/li&gt;
&lt;li&gt;Build analytics dashboards before adding niche features.&lt;/li&gt;
&lt;li&gt;Continuously validate ideas with real users.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these prevented progress, but addressing them earlier would have saved considerable time.&lt;/p&gt;




&lt;h2&gt;
  
  
  Building a Marketplace Is Building a Community
&lt;/h2&gt;

&lt;p&gt;The biggest lesson wasn't technical.&lt;/p&gt;

&lt;p&gt;A successful marketplace isn't defined by the number of listings.&lt;/p&gt;

&lt;p&gt;It's defined by the quality of interactions between people.&lt;/p&gt;

&lt;p&gt;Every technical decision—from search performance to messaging, booking workflows, and notifications—should make those interactions smoother, safer, and more trustworthy.&lt;/p&gt;

&lt;p&gt;That perspective fundamentally changed how I think about software development.&lt;/p&gt;

&lt;p&gt;Rather than viewing the platform as a collection of features, I now see it as infrastructure that enables meaningful real-world connections.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Building &lt;strong&gt;AktiveShare&lt;/strong&gt; has been one of the most rewarding engineering challenges I've worked on.&lt;/p&gt;

&lt;p&gt;It pushed me beyond writing CRUD APIs and into solving problems around trust, availability, communication, and user experience.&lt;/p&gt;

&lt;p&gt;There's still plenty to improve, and that's part of the excitement.&lt;/p&gt;

&lt;p&gt;Every new feature and every piece of user feedback helps shape the platform into something more useful for local communities.&lt;/p&gt;

&lt;p&gt;If you're interested in building a marketplace of your own, my advice is simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start with the user problem.&lt;/li&gt;
&lt;li&gt;Expect complexity beyond CRUD.&lt;/li&gt;
&lt;li&gt;Build trust before adding features.&lt;/li&gt;
&lt;li&gt;Listen to your users.&lt;/li&gt;
&lt;li&gt;Iterate continuously.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you'd like to see these ideas in action, check out &lt;strong&gt;AktiveShare&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://aktiveshare.com" rel="noopener noreferrer"&gt;https://aktiveshare.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'd love to hear about your experiences building marketplace applications or any lessons you've learned along the way.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Thanks for reading!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you enjoyed this article, consider leaving a ❤️, sharing it with fellow developers, or following me for more posts about building real-world web applications.&lt;/p&gt;

</description>
      <category>learning</category>
      <category>showdev</category>
      <category>sideprojects</category>
      <category>startup</category>
    </item>
  </channel>
</rss>
