All projects
Delivered kot.cash
KOT.CASH
Cryptocurrency exchange with smart routing
Instant exchange of 250+ cryptocurrencies with custom Multi-Hop and Split Swap routing, a full-featured account area, an admin panel and a 292-page SEO infrastructure.
Next.js 15React 19TypeScriptMongoDBMongooseTailwind CSSPM2Nginx

Technical architecture
- 233 TypeScript/TSX files, 60+ API routes, 17 MongoDB models
- 7 continuously running PM2 workers (Next.js server + 6 background processes)
- Nginx as a reverse proxy with SSL/TLS (Let’s Encrypt), rate limiting and server-version hiding
- A monolithic Next.js architecture with server/client separation following React 19 Server Components
Exchange Engine — three exchange modes
Integration with the Easybit API (liquidity provider).
- Simple Swap — float (1%) and fixed (1.5%) rates, 250+ coins, instant quote, QR payment, tracking via Blockchair, guest exchange without registration.
- Multi-Hop (custom implementation) — an automatic 2-step exchange through bridge wallets; a PM2 worker runs the hop1 → hop2 chain in the background, unlocking pairs that have no direct market.
- Split Swap (custom implementation) — exchanging a single amount into 2–4 coins with configurable shares, a 3–5% fee, and a dedicated execution and monitoring worker.
Account area
- Registration / login / password recovery via email tokens
- TOTP 2FA (Google Authenticator, otplib + qrcode)
- History of all exchanges (regular + multihop + split) in a single interface
- Email change with confirmation, avatar upload, referral-code linking
Admin panel
A fully featured back office at a hidden URL.
- Dashboard with statistics (all time / 30d / 7d / 24h), revenue and charts
- Transactions with filters, detail pages and CSV export
- Users, referral links with statistics, tickets and a live online chat
- IP Blacklist and TOTP-protected admin login
SEO infrastructure
- 292 static pages (EN + RU mirror): blog, 31 pair pages, 53 country pages
- hreflang, JSON-LD Schema.org, canonical, sitemap, robots.txt
- IndexNow — instant URL submission to Bing/Yandex/DuckDuckGo on publish
- URL-based i18n (EN on /, RU on /ru/), Google Analytics GA4
Security
- Content Security Policy and rate limiting at the nginx level (separate zones)
- JWT in an httpOnly cookie, bcrypt, TOTP 2FA for admin and users
- Blocking of common attacks (.php, .env, .git, wp-admin), one-year HSTS
- Validation via Zod and a custom sanitize, a worker secret for internal APIs
Integrations
| Service | Purpose |
|---|---|
| Easybit API | Liquidity, quotes, orders, status |
| Blockchair / Mempool.space | Blockchain transaction confirmations |
| CoinGecko API | Tickers / orderbook for aggregators |
| Telegram Bot API | Notifications, promo posts, /rate bot |
| Brevo (Sendinblue) | Email notifications via relay |
| geoip-lite | User geolocation |
Telegram automation
- Promo bot (@kotcashnews) — a daily post at 10:00 MSK with rates, a cat-themed tone of voice, rotating copy, ref links
- Chat bot (@kotcashchat) — interactive /rate BTC from the site widget in real time, long-polling
Design and UX
- Dark/light theme, 3D CSS animations, a live Rate Ticker and Rate Sparkline
- Styled QR codes, country flags, skeleton loading, mobile-first
- A demo worker generates a realistic stream of “completed exchanges” to showcase activity
Infrastructure
- Ubuntu Server, Nginx (SSL, rate limiting, static files)
- PM2 cluster: kot-cash + multihop / split-swap / promo / chat / news / demo workers
- MongoDB (local, ~21K rate_snapshots), email via Dovecot + Roundcube through a relay
The client hasn't left a review yet.
