Build guides
Step-by-step walkthroughs for shipping real features with @buildbase/sdk.
51 posts · page 1 of 5
Keeping a pricing page honest against your plans
Why pricing pages drift from the plans you actually bill, and how to render the table from your catalog instead of copying it, plus what to do with the numbers you cannot render.
When you need a second pricing page, and when you need a plan version
When a second pricing group is the right call and when it is a plan version or a currency variant instead, plus what a second public pricing page costs you in attribution and in-app upgrades.
Structuring a product catalog you will not regret
How to structure a product catalog for SaaS billing: what counts as one product, why prices belong on plan versions, and why the slug is the part you cannot rename later.
Which notifications users get to turn off, and which stay on
Which notifications should be mandatory, which users may switch off, and how the opt-out is actually enforced at send time.
One auth client per environment, and what goes on each
How to split auth clients and redirect URLs across dev, staging and production, when a wildcard is safe, and why localhost does not belong on a production client.
Auth clients and redirect URLs: you want two clients, not one per environment
How many auth clients to create, and how to split redirect URLs across localhost, preview deploys and production without registering a wildcard that will be refused.
Choosing billing currencies before your first subscription
Which billing currencies to enable before your first customer: why a Stripe subscription currency is locked per customer, and what adding one later costs you.
Should you run auth on your own domain?
A custom auth domain is close to a one-way door for passkeys, and a DNS record that becomes part of your login path. Here is how to decide, and how to move before anyone signs in.
How to create a default workspace on signup in Next.js, but not for invited users
Create a default workspace on signup in Next.js without giving invited users an empty one of their own, and decide when to ask for a name instead.
How to add per-org data isolation in Next.js
Per-org data isolation in Next.js: check membership once per request, make the data layer demand that proof, and never fetch a record by its ID alone.
How to add roles and permissions per workspace in Next.js
Per-workspace roles in Next.js: hide controls with WhenPermission, check every server action with bb.workspace.can(), and know which side lags after a role change.
How to add social login in Next.js
Google, GitHub, Microsoft and LinkedIn sign-in with no OAuth routes to write. What is left is a decision: what one person becomes when they arrive through two providers.