Blog
How we made additional members possible (and why Studio is not “just a higher SKU”)
Dmytro Bondarchuk|August 17, 2026|14 min read|No commentsA technical post about splitting auth from membership, treating seats as a ledger, and teaching Polar about packs of humans. Timelish is now Hacado; this is the part that actually had to be built.
When we renamed Timelish to Hacado, the public story was the name. The engineering story was Studio: a salon with five stylists, not a freelancer with a prettier checkout.
That sounds like a billing change. It was not. A “team plan” that still stores “the user” on every appointment is a lie. We had to decide what a member is, what a seat is, and what happens when Polar says you have fewer of them than people currently logged in.
This is how we did it.
How I Integrated Polar.sh Payments Into My SaaS With Better Auth - What the Docs Don't Tell You
Dmytro Bondarchuk|May 8, 2026|14 min read|No commentsWhen I added subscription billing to timeli.sh, I chose Polar.sh as the payment layer and better-auth as the auth framework. On paper, both are excellent. In practice, there was one fundamental mismatch between how Polar + better-auth expect things to work and how timeli.sh is actually structured - and I spent more time fighting it than building the feature.
This post is the write-up I wish had existed before I started.
Timeli.sh is a multi-tenant SaaS. A user creates an organization, and that organization is what subscribes. Multiple users can belong to an organization, so it would be wrong for the subscription to live on any individual user. The organization either has an active subscription or it doesn't - regardless of who's logged in.
Every better-auth example, every Polar integration guide, and every community snippet I found wires the subscription directly to the userId from the session. Something like: