Hey everyone! 👋
As an indie developer, I’ve been working on Kordhub (https://kordhub.com)—a platform designed to bridge the gap between digital content creators and seamless payment processing.
A lot of independent creators, especially those running communities on Discord and Telegram, struggle with global payouts, handling international compliance, and managing subscription tiers without spending hours on manual work.
Today, I wanted to share a quick architectural overview of how I set up the backend infrastructure to handle this smoothly using Stripe Connect.
The Tech Stack
- Frontend: JavaScript, Tailwind CSS
- Backend / Database: Supabase (Row-Level Security & Auth)
- Payments: Stripe Connect & Webhooks
The Core Challenge
Creators need instant verification when a payment succeeds so their community bots can automatically grant roles in Discord or unlock private Telegram channels. Relying solely on client-side redirects is a security risk.
The Solution: Robust Webhooks
To solve this, everything relies on secure server-to-server communication:
- Checkout Session: When a subscriber checks out via Stripe, a metadata payload containing the user's Discord/Telegram ID is attached.
-
Webhook Listener: Stripe fires an
checkout.session.completedevent to the backend endpoint. - Ledger & Fulfillment: The system records the transaction securely and triggers the automation logic to update member access.
Why Build in Public?
Building Kordhub has been an incredible journey—from setting up US corporate compliance structures to optimizing database queries and seeing those very first organic search clicks roll in from Google this week! 🚀
If you are also building SaaS tools, handling Stripe integrations, or running creator-focused platforms, I'd love to connect.
Check out the project or join our early waitlist here: https://kordhub.com
Let me know in the comments what stack you're currently using for your projects!
Top comments (1)
The server-side fulfillment boundary is a useful part of this design. I’m building XEvents, an open-source Telegram event app, with JavaScript, Workers and D1. For your ledger, how do you handle duplicate or out-of-order webhook deliveries so a retry cannot grant access twice or restore access after cancellation? I’d be interested in a follow-up on that lifecycle.