All workCase study · Flagship · Live
GH Store — one store on the web, in a Mini App and in a bot
How I built and run GH Store: one catalogue, one wallet and one order history across a website, a Telegram Mini App and a bot, with payments that can't charge twice.




The goal
Digital goods — game top-ups, gift cards, subscriptions, virtual numbers — come from several suppliers, each with its own API, prices and ways to fail. Customers in the region pay in very different ways, from ShamCash to USDT to Telegram Stars, and many of them live inside Telegram rather than a browser.
What I built
- One core behind three doors: the website, a Telegram Mini App and a bot share one account, one wallet, one catalogue and one order history.
- Five suppliers behind a single catalogue, with automatic fulfilment and a price guard that pauses a package when its cost jumps.
- Four payment methods — ShamCash, USDT (BEP20), NOWPayments and Telegram Stars — feeding one audited wallet ledger.
- Money moves only inside the database: integer cents, ledger rows and idempotent orders, so retries and duplicate callbacks can't charge twice.
- Four design presets in light and dark, picked from the store's admin. This site wears the same design system.
Where it is now
GH Store is live at gh-store.me and in Telegram as @ghstore_robot. It has delivered more than 1,000 orders, and every new feature reaches all three doors at once.
Built with
- Cloudflare Workers
- Supabase Postgres
- Hyperdrive
- TypeScript
- React
- Telegram Bot API
Want something like this?
Tell me what you're building. You'll get a scope, a price and a timeline within a day.
More work
- A complete store inside one Telegram chatA client's Telegram store bot: catalogue, wallet top-ups, instant delivery from several providers, warranty and a full admin panel, on Cloudflare Workers.
- A bilingual game top-up storeA web store for game top-ups and gift cards: supplier catalogue sync, automatic fulfilment, ShamCash wallet recharge and invoices, in Arabic and English.