uzpay
2024Payment integration for Uzbekistan providers (Payme, Click, Paynet). Zero dependencies, runtime-agnostic.
- Role
- Solo author
- Stack
- TypeScript Hono Zero-dependency
Problem
Uzbekistan’s payment market is fragmented across three dominant providers (Payme, Click, Paynet) with inconsistent APIs, different signing schemes, and no unified TypeScript client. Every local e-commerce project rebuilds the same glue code from scratch.
Approach
- Zero runtime dependencies — works in Node, Bun, Deno, Cloudflare Workers, and the browser
- One surface API across providers, with per-provider adapters behind a consistent interface
- Runtime-agnostic crypto (Web Crypto API only, no Node-specific modules)
- Strongly typed with Zod-backed response parsing
Outcome
- Published to npm, ~80 weekly downloads
- Used in production by multiple Uzbek e-commerce projects
- Zero-dep constraint eliminates supply-chain concerns — auditors love it
What I learned
- Runtime-agnostic is harder than cross-platform but much cheaper to maintain
- Zero-dependency is a feature — it sells itself to security teams
- Small, focused libraries outlast frameworks; uzpay’s API has been stable since v1