<?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: WTB.land</title>
    <description>The latest articles on DEV Community by WTB.land (@wtbland).</description>
    <link>https://dev.to/wtbland</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3870320%2F74984183-7459-4578-8431-5e829b325b2b.webp</url>
      <title>DEV Community: WTB.land</title>
      <link>https://dev.to/wtbland</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/wtbland"/>
    <language>en</language>
    <item>
      <title>Why I Built a Reverse Marketplace (and Why Traditional Marketplaces Are Broken)</title>
      <dc:creator>WTB.land</dc:creator>
      <pubDate>Thu, 09 Apr 2026 18:39:43 +0000</pubDate>
      <link>https://dev.to/wtbland/why-i-built-a-reverse-marketplace-and-why-traditional-marketplaces-are-broken-g7g</link>
      <guid>https://dev.to/wtbland/why-i-built-a-reverse-marketplace-and-why-traditional-marketplaces-are-broken-g7g</guid>
      <description>&lt;p&gt;Traditional marketplaces like eBay, Craigslist, and Facebook Marketplace all share the same fundamental design: sellers list products, and buyers hunt through thousands of listings to find what they need.&lt;/p&gt;

&lt;p&gt;After spending years as a buyer on these platforms, I realized the model is fundamentally broken - at least from the buyer's perspective. So I built something different.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem with Traditional Marketplaces
&lt;/h2&gt;

&lt;p&gt;As a buyer, the experience goes something like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;You search for what you want&lt;/strong&gt; - filtering through hundreds of irrelevant results&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You compare prices&lt;/strong&gt; - opening 20 tabs to find the best deal&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You message sellers&lt;/strong&gt; - only to find out the item is already sold, or the price is "negotiable" (meaning higher)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You repeat&lt;/strong&gt; - because the first three attempts didn't work out&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The buyer does all the work. The seller just posts a listing and waits.&lt;/p&gt;

&lt;p&gt;Now flip that around: what if &lt;strong&gt;buyers&lt;/strong&gt; posted what they wanted, and &lt;strong&gt;sellers&lt;/strong&gt; competed to offer the best deal?&lt;/p&gt;

&lt;h2&gt;
  
  
  The Reverse Marketplace Model
&lt;/h2&gt;

&lt;p&gt;That's exactly what I built with &lt;a href="https://wtb.land" rel="noopener noreferrer"&gt;WTB.land&lt;/a&gt; (WTB = "Want To Buy").&lt;/p&gt;

&lt;p&gt;Here's how it works:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Buyer posts a request&lt;/strong&gt; - "I want a MacBook Pro M3, budget $1500, good condition"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sellers see the request&lt;/strong&gt; and submit competing offers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Buyer picks the best offer&lt;/strong&gt; - based on price, condition, seller reputation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deal happens&lt;/strong&gt; through built-in chat&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The key insight: &lt;strong&gt;the person with money should have the leverage, not the person with inventory.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Works Better
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;For buyers:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No more endless scrolling through listings&lt;/li&gt;
&lt;li&gt;Sellers compete on price, so you get better deals&lt;/li&gt;
&lt;li&gt;You describe exactly what you want - no compromises&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;For sellers:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You know the buyer is serious (they posted a specific request with a budget)&lt;/li&gt;
&lt;li&gt;No need to compete for search rankings&lt;/li&gt;
&lt;li&gt;Direct access to motivated buyers&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Numbers So Far
&lt;/h2&gt;

&lt;p&gt;WTB.land launched with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;26 categories&lt;/strong&gt; (electronics, vehicles, real estate, fashion, collectibles, and more)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;5 languages&lt;/strong&gt; (English, German, Italian, Spanish, Russian)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;185+ SEO blog articles&lt;/strong&gt; driving organic traffic&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero fees&lt;/strong&gt; for everyone - buyers and sellers&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;I'm focused on growing the marketplace to critical mass. The classic chicken-and-egg problem of marketplaces applies here too - you need buyers to attract sellers, and sellers to attract buyers.&lt;/p&gt;

&lt;p&gt;My approach: focus on niches where the reverse model makes the most sense. Used electronics, collectibles, and vehicles are categories where buyers often have very specific requirements that are hard to satisfy by browsing listings.&lt;/p&gt;

&lt;p&gt;If you're interested in trying it out: &lt;a href="https://wtb.land" rel="noopener noreferrer"&gt;https://wtb.land&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'd love to hear your thoughts. Is the reverse marketplace model something you'd use? What categories would you find most useful?&lt;/p&gt;

</description>
      <category>entrepreneurship</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I Built a Reverse Marketplace with .NET 10, gRPC-Web, and Vanilla JS</title>
      <dc:creator>WTB.land</dc:creator>
      <pubDate>Thu, 09 Apr 2026 17:22:23 +0000</pubDate>
      <link>https://dev.to/wtbland/i-built-a-reverse-marketplace-with-net-10-grpc-web-and-vanilla-js-584k</link>
      <guid>https://dev.to/wtbland/i-built-a-reverse-marketplace-with-net-10-grpc-web-and-vanilla-js-584k</guid>
      <description>&lt;h2&gt;
  
  
  The Problem with Traditional Marketplaces
&lt;/h2&gt;

&lt;p&gt;Every marketplace works the same way: sellers list products, buyers scroll through thousands of listings hoping to find what they need at the right price.&lt;/p&gt;

&lt;p&gt;I wanted to flip this model. What if &lt;strong&gt;buyers posted what they wanted&lt;/strong&gt; and sellers competed to offer the best deal?&lt;/p&gt;

&lt;p&gt;That's &lt;a href="https://wtb.land" rel="noopener noreferrer"&gt;WTB.land&lt;/a&gt; - a reverse marketplace (WTB = Want To Buy).&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Buyer posts a request&lt;/strong&gt; - "I want a MacBook Pro M3, budget $1500, like-new condition"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sellers browse requests&lt;/strong&gt; and submit offers with price and description&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;All offers are public&lt;/strong&gt; - sellers compete, highest bid gets a TOP BID badge&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Buyer picks the best deal&lt;/strong&gt; - chat with sellers, compare offers, done&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; .NET 10 (ASP.NET Core MVC + gRPC)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database:&lt;/strong&gt; SQLite (yes, really)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Vanilla JavaScript SPA (~1800 lines, no React/Vue/Angular)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Protocol:&lt;/strong&gt; gRPC-Web over protobuf (not REST/JSON)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CSS:&lt;/strong&gt; Tailwind CSS 3.4&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deploy:&lt;/strong&gt; Single binary on a $7/month Hetzner VPS&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why gRPC-Web Instead of REST?
&lt;/h3&gt;

&lt;p&gt;Binary protobuf is ~30% smaller than JSON. I wrote a 98-line custom gRPC-Web transport that handles binary framing over XHR. No code generation on the client - protobuf.js parses the &lt;code&gt;.proto&lt;/code&gt; file at runtime.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Vanilla JS Instead of React?
&lt;/h3&gt;

&lt;p&gt;The entire SPA is 1800 lines. It does pushState routing, SSR hydration, lazy loading, and real-time chat polling. Adding React would have tripled the bundle size for zero benefit.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why SQLite?
&lt;/h3&gt;

&lt;p&gt;For a young marketplace with hundreds of requests, SQLite is perfect. Single file, zero config, instant backups.&lt;/p&gt;

&lt;h2&gt;
  
  
  SEO: The Hard Part
&lt;/h2&gt;

&lt;p&gt;A JavaScript SPA is invisible to search engines by default. My solution: &lt;strong&gt;hybrid SSR + SPA architecture&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Server renders full HTML with SEO content (meta tags, JSON-LD, Open Graph)&lt;/li&gt;
&lt;li&gt;Client JS hydrates from server-injected JSON - no duplicate API call&lt;/li&gt;
&lt;li&gt;Subsequent navigation uses pushState + gRPC calls&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Result: &lt;strong&gt;Google PageSpeed 100/100&lt;/strong&gt; on mobile and desktop.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://wtb.land" rel="noopener noreferrer"&gt;WTB.land&lt;/a&gt; is live and free. 26 categories, built-in chat, no fees. 60-90ms response times on a single-core VPS.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Have you built anything with gRPC-Web? I'd love to hear your thoughts.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>dotnetcore</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
