Skip to content

About beluga

Beluga was built by Rachel Binx to run ecommerce for experimental art projects: stores where the interesting part is the interface a customer uses to make the thing, not the checkout behind it. A platform charges a monthly fee for a storefront you cannot really change; Beluga is the opposite trade. You host it, you can change every pixel, and the only recurring cost is Stripe’s per-transaction fee and whatever your server costs.

It is the white whale: the third time building an ecommerce site from scratch, and the one that was open-sourced so it did not have to be built a fourth time.

Vite and React 19, an Express 5 API in TypeScript, SQLite or Postgres behind Drizzle, Stripe Checkout Sessions, and an admin that does not write to Stripe until you ask it to. Architecture shows how the pieces fit, and What Beluga is says what it deliberately leaves out.

Beluga is a framework, not a product with an admin bolted on. The admin is one consumer of a data model and an API that you are expected to build on, and the documentation is organised that way: each page says what the model is, what the API does, and what you may change. Screenshots are rare on purpose. The rules that matter are the ones that produce code which compiles, passes review, and is wrong, and those are written down on the invariants page.

The code is on GitHub. Task briefs, the roadmap and the conventions are in the repository and summarised under Conventions and contributing.

If you build something on Beluga, please say so. Seeing what people make with it is most of the fun. And if it has saved you a platform fee or two, there is a coffee link. 🎷🐋