Products

Two sides, one schema, one deploy.

A marketplace is a store plus a second application for the people supplying it, and the hard part is that both halves write to the same rows. Stacks gives you the commerce models, the team and role system for sellers, and the queue that moves money and mail between them without a second service.

What this always turns out to involve.

The work that arrives whether you planned for it or not.

Sellers need their own app

Listings, inventory, orders, and payouts are a whole product, and it has to see exactly the slice of data that belongs to that seller.

Money moves twice

A buyer pays the platform and the platform pays a seller, on different schedules, with fees in between.

Trust is a feature

Reviews, reports, and moderation queues are launch requirements, not a phase two.

Search decides the experience

A catalogue nobody wrote is a catalogue nobody can filter unless indexing is automatic.

What is already in the box.

All of it in the same install, typed against the rest of your application.

Scoped ownership

Teams, roles, and gates scope every query to a seller, so a seller dashboard is the same actions with a policy in front.

Commerce primitives

Products, orders, coupons, and payments already exist; the marketplace part is the ownership column and the payout job.

Payout workflows

Scheduled jobs, batches, and retries move ledgers on a cadence, with failures visible in the dashboard rather than in a log file.

Moderation surfaces

The commentable and likeable traits plus dashboard model views give you review and report queues without a bespoke admin.

Notifications both ways

Buyers and sellers get mail, SMS, and push from the same notification classes, routed per recipient.

Faceted search

Searchable and filterable attributes are declared on the model, so a new facet is a model edit, not an indexer rewrite.

The layers it leans on.

Every one of these ships in the same install. Follow one to see what it covers.

From the command line.

Buddy scaffolds, runs, and ships this the same way it does the rest of the app.

buddy make:model Seller buddy generate:migrations buddy queue:work

Projects of this shape usually grow into one of these.