SmsApp rents virtual phone numbers so people can receive a one-time verification code for WhatsApp, Telegram, Gmail and 150+ other services, or keep a number for a month. Customers top up a prepaid wallet, and resellers automate everything through a REST API.
My role
Lead developer since February 2026. My first big change was moving the backend from Firestore to MySQL. Since then I've written about 99% of the code changes.
What I built
A prepaid wallet that can't go negative, with refunds paid exactly once
Automatic refunds when no code arrives, safe across crashes
Card and two crypto payment providers with verified webhooks
Supplier routing by delivery rate, price and stock, with failing suppliers switched off automatically
Monthly rentals, shared numbers and a receive-only email inbox per rental
Pre-rendered SEO pages in 24 languages, including right-to-left Arabic and Hebrew
Hard problems
Payments you can't fake: one provider's callbacks are unsigned, so they are only a hint and are re-checked against the provider's API before any credit
Background jobs that can't double-pay: the refund job uses a lock that frees itself if a run hangs, and every refund is claimed atomically
Results
24 interface languages
Numbers in 150+ countries
4,700+ pages in its 24 language sitemaps
4,000+ automated tests across server, web and mobile
Check the Live Sitemap Before Signing Off the Release
A sitemap can export correctly while the live website still serves an older URL list. The task needs a check at the public sitemap address after deployment.
That check should compare the published file with the pages the team agreed to include.
Imagine an export containing 200 URLs. The public sitemap also contains 200, but it still lists a retired service page and omits the new replacement. The totals match. The contents do not.
Before closing the task, check:
• The production sitemap address returns the expected XML.
• Its complete URL list matches the agreed inventory.
• Each intended page type is represented, including a newly published page.
• Deliberately excluded pages remain absent.
• Someone owns the process that keeps the file current.
Start with the sitemap already on the site. It may be an index pointing to several smaller files. Include those files in the comparison so a working index does not hide an outdated section underneath it.
Keep the inventory decision explicit: which service pages, locations, articles or products belong in this release? A crawler's export tells you what it discovered. Compare that list with the pages the site was supposed to publish.
Open a sample of the listed URLs as well. Check that they reach the intended production pages and use the preferred addresses. If the sitemap includes modification dates, those dates should reflect significant page updates; exporting the file again does not make every page newly updated.
For a site that publishes regularly, document how new pages enter the sitemap and how retired pages leave it. An automated generator still needs clear inclusion rules and a check when those rules change.
Keep the public address, inventory comparison and update owner in the release notes. Make the sitemap discoverable through Search Console or robots.txt, and check for retrieval or processing errors. Submission does not guarantee that every listed page will be crawled or indexed.
Solid checklist. I'd add lastmod: if every release stamps today's date on every URL, Google learns to ignore it. It should only change when the page content changes. Also worth confirming every sitemap URL returns a direct 200, not a redirect.
Built a highly responsive web application prototype focusing on smooth user interfaces and swift database connectivity. Optimized web performance to ensure rapid load times and cross-platform compatibility.
Scroll → a camera flies through a watch gallery → zooms into the dial → you pick a dial colour → add to cart.
That's the homepage of AUREL, a luxury watch store I designed and built as a portfolio project. ⌚
Under the hood:
• 3D scroll story with React Three Fiber, GSAP and custom shaders
• Full shop flow: filters, product variants, cart, 4-step checkout
• Mobile CSS 3D fallback + reduced-motion layout
• Accessible, fast, and ready to plug into Shopify
I'm a web developer (React · WordPress · PHP, 6+ years) looking for remote frontend or WordPress roles. Recruiters and hiring managers, my DMs are open.