Why I rebuilt India Post tracking in Rust and WebAssembly
From an internal firm tool to a public-facing app that ranks on Google
Most side projects start from curiosity. This one started from watching a colleague copy-paste 200 tracking numbers into India Post's official portal one by one, waiting 3 seconds per lookup, for 45 minutes.
The problem was embarrassingly clear
India Post's tracking portal works fine for one consignment. For firms that ship hundreds of legal documents per week, it's unusable. There's no bulk mode, no API documentation, and the official site times out regularly. IO2i's legal team was burning hours every week on manual tracking lookups.
I initially built a quick internal scraper as a Python script. It worked, but it felt wrong to keep it internal — the problem was clearly universal. Anyone mailing important documents in India has the same frustration.
Why Rust and WASM instead of React?
The honest answer: I wanted to use Rust/Yew on a real project, and the tracking UI was simple enough to not fight the framework. A tracking app is essentially: take input, show loading state, render result. That's a perfect fit for Yew's component model.
The practical benefit: WASM binary size for this app is tiny, startup is fast, and I get compile-time state safety. No runtime exceptions, no "undefined is not a function". If it compiles, it runs. Zero JavaScript means zero JavaScript-class bugs.
The async backend was the real work
FastAPI's async capabilities made the bulk tracking feature feasible. When a firm uploads a CSV of 200 tracking numbers, the backend fans out 200 concurrent HTTPX requests to India Post's API, collects the responses, and streams results back. Doing this synchronously would take minutes. Async brings it under 10 seconds for most batches.
Connection pooling was important — we're hammering a single upstream endpoint and needed to be respectful about rate limits. HTTPX's connection pool configuration kept us from getting blocked.
The SEO play that made it worthwhile
Making it PWA-installable and ensuring server-side rendering for the landing content meant Google could index the site properly. The app now ranks organically for India Post tracking related searches — which drives genuine traffic from individuals, not just firms.
This organic traffic turned into an enterprise pipeline. Firms find the site, use it for free, hit the bulk limits, and reach out to IO2i for a proper contract. A free public tool that generates B2B leads.