A website with payments and a member account
A backend-and-frontend web project: a landing page that does the selling itself, with a payment flow, automatic access delivery, a member dashboard, and an admin panel — a complete commerce loop, not just a page describing a product.
No live demo is linked here — the client and the product are kept unnamed in this write-up, so we don't link to a page that would identify them.
Task
The client needed more than a page describing a product — they needed a site that does the selling itself: takes payment, opens access immediately, and gives the buyer somewhere to manage their account afterward.
That meant building three things that had to work together without gaps: a payment flow that can't double-charge or double-deliver, a member area the buyer actually uses after paying, and an admin view for handling accounts without touching the database by hand.
Solution
An Express/TypeScript backend behind a marketing landing page, backed by node:sqlite, with payments running through the Lava.top payment gateway. A webhook re-verifies the transaction status with the provider before doing anything, then hands off to an idempotent fulfillment step that grants access — so a retried or duplicated webhook call can't issue a second license or double-charge the buyer.
Sign-in runs through OAuth with region-based provider routing — Yandex for Russia, Google everywhere else — so users authenticate through the provider that fits local requirements. On top of that sits a small pricing system — 5 paid plans plus 2 free tiers — alongside an admin panel for support and account management.
What was built
Discuss a similar project →Payments and fulfillment
A payment flow built to survive retries, webhook replays, and partial failures without charging twice or losing access grants.
Accounts and admin
Everything a buyer and a support person need once the payment clears.
Backend and testing
An Express/TypeScript backend on node:sqlite, with a pricing structure and a real automated test suite behind it.
Result
The site ships as a complete commerce loop: a visitor can land on the page, pay, and get access without anyone manually flipping a switch. Fulfillment is idempotent by design, so a flaky network or a retried webhook doesn't create duplicate licenses or double charges.
To respect the client's privacy, this write-up doesn't name the product or link to a live demo — only the web engineering behind it is described here.
Another case