Sabitlenmiş Tweet
Jubayer Shikder
130 posts

Jubayer Shikder
@jubayers_r
backend for vibe-coded products. TS / Node / Postgres / Stripe. not a guru, just seen things break.
Remote Katılım Eylül 2023
39 Takip Edilen26 Takipçiler
Jubayer Shikder retweetledi

@Sahil250199 Using bucketCounter % 100 makes bucketing stateful and dependent on request order. A user will flip buckets on subsequent hits. Calculate the hash deterministically: Math.abs(Objects.hash(userId, flagId)) % 100. That guarantees stateless consistency across rollouts.
English

Unearthing the unseen bug: unstable user bucketing broke rollout consistency. Priority order and environment isolation matter more than you think.
gronex.org/problems/featu… #backend

English

@harshitabuilds @antonosika @amasad @MaorShlomo The agent broke it because it lacks context on state boundaries. Don't let it touch config files directly. Explicitly isolate your backend logic behind strict API contracts (JSON schemas) so client changes cannot structurally break the server.
English

Day 6 (Extended)
Vibe coding as a non-tech founder:Prompting is the only easy part btw
✅ Shipped a better product
❌ Broke the app
📚 Learnt config.js, manifest.json, localhost & frontend ↔ backend.
Is this the normal learning curve?
@antonosika @amasad @MaorShlomo
English

@DarayuthH Treat the redirect purely as UI decoration, and let the asynchronous checkout.session.completed webhook act as the single source of truth for fulfillment.
English

@DarayuthH Relying purely on the client redirecting to the success URL to confirm state is a major vulnerability anyway. If the user closes the tab before the redirect hits your route, your database never updates.
English

@dulelicanin State transitions must explicitly validate the event timestamp or sequence ID against the current database record before committing.
English

@dulelicanin Standard state machines fail here because webhooks can arrive out of chronological order. If your backend processes an old invoice.payment_failed after a newer customer.subscription.updated (active), you lock out paying users.
English

A subscription looked like the simplest model in the app. A boolean, basically: are they paying or not.
Then a past-due customer kept full access for two weeks, and a trialing one got locked out of the exact thing the trial was meant to sell. Same root cause. Stripe moves a subscription through eight distinct states, and I'd flattened all of them into one column my code checked in a dozen places.
The rebuild had nothing to do with webhooks, which I already had. The real work was deciding, per feature, which of those states should grant access, then making the webhook the only writer of that status. No more guessing up in the UI layer.
Full breakdown of the lifecycle here:
duskolicanin.com/blog/saas-subs…

English

@IvanBalias @dulelicanin (e.g., immediate hard stops on stolen cards vs. delayed retries on temporary insufficient funds).
English

@IvanBalias @dulelicanin It triggers fraud filters immediately. Card networks flag velocity and repeat declines on the same footprint. You need an exponential backoff strategy paired with explicit decline-code routing
English

First week on here properly. Quick context: I do backend. Not the fun part people show off — the part that decides whether your app survives its first real Tuesday.
Spent today debugging a payment that charged a user twice because a retry didn't check if the first charge already went through. Five lines of code. Would've cost someone real money if it shipped.
#buildinpublic #backend #webdev
English
Jubayer Shikder retweetledi

@sanidhya_eth @amazon Oyeee kya phoda hai yrr! Congratulations!!
Indonesia


Jubayer Shikder retweetledi
Jubayer Shikder retweetledi
Jubayer Shikder retweetledi
Jubayer Shikder retweetledi
Jubayer Shikder retweetledi










