All products

Quick Store

A look at building a store that starts as a page: one platform for many sellers, checkout that pays the seller directly, and a launch scoped to what works today.
Claim Storefront
Project
An in-house Dontdoit product for independent sellers, print shops, and creators.
Ownership
Vlad: product direction, interface design, and engineering.
Status
Sign-ups open with physical products. Digital downloads, subscriptions, and the full storefront in development.
Built with
React, TypeScript, Vike, Hono, Cloudflare Workers, Postgres, Drizzle, and Stripe Connect.

The starting point

Selling online tends to come in two sizes. A marketplace gets you live fast, then keeps the customer relationship and a cut of every sale. A full store builder gives you control, then asks for a theme, a few apps, and a monthly fee before the first order.

Quick Store sits between them: a real store with a cart and checkout, set up like a profile.

Start with a page, not a theme

A new store gets a profile page at tryquick.store/s/yourname, composed from the seller's products, posts, and collections. There is no layout to design before the first sale.

The same store can grow into a full storefront on its own domain. That upgrade stays behind a flag while we build it, so the public promise stays on the page.

Treat every store as its own tenant

Quick Store runs many stores on one platform. That only works if one seller can never see another seller's data, so every store query is scoped to its store and every write checks access to that store first.

We audited for gaps and closed the ones we found: webhook and product image lookups now filter by store, and domain settings require sign-in before they touch a store. Running on Cloudflare Workers keeps the cost of one more store low.

Pay the seller directly

Checkout runs on Stripe Connect. The buyer pays through Stripe's hosted checkout, and the charge lands in the seller's own Stripe account.

When a payment clears, a webhook creates the order once, reduces inventory, and emails the buyer a link to their order. Carts are kept per store, and a guest cart merges into the buyer's account when they sign in.

Make deploys boring

In October, a deploy applied database migrations and then failed to build both Workers. The live site ran old code against the new schema until a redeploy fixed it.

Deploys now build every changed app first, migrate only after the builds pass, and ship only after the migration. A pull request also fails when it changes the schema without a migration.

Outcome

Sellers can claim a store, list physical products, publish, and take payments into their own Stripe account. The work spans multi-tenant data, payments, transactional email, and the seller dashboard.

Adoption is early. The number we are working on is how long it takes a new seller to list a first product.

Still in progress

Quick Store is in active development, and physical products are the launch focus. Digital downloads and subscriptions are built but have not been proven with a live order yet. The full storefront on a custom domain is still being built. Print-on-demand, buyer artwork uploads, and multi-currency are not part of the launch.

Have something that needs a technical owner?

Talk with Vlad about a role, a product, or a system your team depends on.