I Built a Reverse Marketplace with .NET 10, gRPC-Web, and Vanilla JS

Published: (April 9, 2026 at 01:22 PM EDT)
2 min read
Source: Dev.to

Source: Dev.to

The Problem with Traditional Marketplaces

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.

Reverse Marketplace Concept

I wanted to flip this model. What if buyers posted what they wanted and sellers competed to offer the best deal?
That’s WTB.land – a reverse marketplace (WTB = Want To Buy).

  • Buyer posts a request – e.g., “I want a MacBook Pro M3, budget $1500, like‑new condition.”
  • Sellers browse requests and submit offers with price and description.
  • All offers are public – sellers compete, the highest bid gets a TOP BID badge.
  • Buyer picks the best deal – chat with sellers, compare offers, done.

Tech Stack

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

Implementation Highlights

  • 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 .proto file at runtime.
  • The SPA includes pushState routing, SSR hydration, lazy loading, and real‑time chat polling. Adding React would have tripled the bundle size for zero benefit.
  • For a young marketplace with hundreds of requests, SQLite is perfect: single file, zero config, instant backups.
  • A JavaScript SPA is invisible to search engines by default. My solution: hybrid SSR + SPA architecture.
    • Server renders full HTML with SEO content (meta tags, JSON‑LD, Open Graph).
    • Client JS hydrates from server‑injected JSON – no duplicate API call.
    • Subsequent navigation uses pushState + gRPC calls.

Performance & SEO

  • Google PageSpeed: 100/100 on mobile and desktop.
  • Response times: 60‑90 ms on a single‑core VPS.

Live Demo

WTB.land is live and free. It offers 26 categories, built‑in chat, and no fees.

Call to Action

Have you built anything with gRPC‑Web? I’d love to hear your thoughts.

0 views
Back to Blog

Related posts

Read more »