All stacks

stack

Marketplace Stack

Two-sided marketplace skeleton with payouts, search, and trust signals built in

The Marketplace Stack underpins every AppLiaison product where there are two distinct user populations transacting with each other — buyers and sellers, hosts and guests, askers and providers. It bundles the parts that are tedious-but-table-stakes for any marketplace: Stripe Connect for split payments and payout schedules, a search index that's actually usable for filtered discovery, dispute resolution flows, and a moderation queue.

Architecture

Architecture variant: two-sided
Frontend
Next.js 14 (App Router)React Server Components for listingsTailwind + headless primitives
Backend
NestJS API servicePostgres 16 with full-text searchAlgolia for facet search
Data + infra
Vercel (web)Render or Fly (NestJS, workers)AWS S3 + CloudFront (media)
Integrations
Stripe Connect (Standard or Express)Stripe Identity (KYC)Twilio (verification SMS)Resend (transactional email)

When to choose this stack

  • There are two populations transacting with each other (buyers + sellers, hosts + guests)
  • Payouts need to flow to many sellers, not one merchant of record
  • Search and faceted discovery are core to the product, not nice-to-have
  • Trust and dispute resolution will need real flows, not just a contact form
  • Moderation of listings or users is part of the operating model

What's NOT included

  • Brick-and-mortar POS — see the Vertical SaaS Stack or Commerce Stack
  • On-chain settlement
  • Live auctions with sub-second bidding — auction shapes use the Realtime Mobile Stack
  • Customer-side ML ranking models (we ship rules-based ranking; ML ranking is a Pass-2 add-on)

How the pieces fit

The Next.js frontend renders listings server-side for SEO, but search and filter live on Algolia for sub-100ms faceting. The NestJS API owns the source-of-truth Postgres and reconciles listings into the search index through a BullMQ pipeline so the read path stays fast even at six-figure listing counts.

Payouts run through Stripe Connect with the platform set up as a connected-account host. Sellers complete onboarding once, then payouts schedule automatically on a daily, weekly, or per-transaction cadence — the platform never needs to touch seller bank details.

Why these choices

NestJS over a Next.js-only API: the marketplace domain has enough background work (indexing, payouts, dispute timers) that a long-running service makes sense. Splitting it from the web tier means the worker pool can scale on its own schedule.

Algolia over Postgres full-text alone: faceted filters with sub-100ms response are what makes a marketplace feel like a marketplace. Postgres handles the source of truth, Algolia handles discovery.

Stripe Connect Standard or Express over a custom payouts engine: KYC, 1099-K reporting, and disputes are problems we never want to solve ourselves.

Apps built on this stack