Deep dives on software engineering, architecture, and the real-world decisions

This blog runs on software I wrote. Here's everything I learned doing it.

Find a time to chat with me

Latest posts

// Make sure it won't end up in production!!! const TODO = "remove before production";
TypeScript

How we made additional members possible (and why Studio is not “just a higher SKU”)

August 17, 2026

A 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.


bloghacadopolarsubscriptionmulti-user

How I Integrated Polar.sh Payments Into My SaaS With Better Auth - What the Docs Don't Tell You

May 8, 2026

When 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.


The problem: every guide assumes subscriptions belong to a user

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.

blogposttimeli.shpolar.shsubscription

Contact me

Email

dmytro@bondarchuk.me
© 2026 Dmytro BondarchukCreated usingHacado