Track My Post
India Post consignment tracking — rebuilt for everyone
Single + Bulk CSV
Tracking modes
Rust + WASM
Frontend
200 reqs / ~10s
Bulk throughput
PWA + Google SEO
Distribution
Project overview
Started as an internal tool inside IO2i's firm systems. Rebuilt from scratch as a full public-facing web app — anyone can track India Post consignments instantly, for free. Single tracking, bulk CSV upload, PWA-installable, Google-indexed.
The problem
India Post's official tracking portal is slow, unreliable, and completely unusable for firms that need to track hundreds of consignments simultaneously. IO2i's legal team was manually copy-pasting tracking numbers one by one, burning 45+ minutes per batch.
The solution
I rebuilt the tracker as a standalone public web app with two modes: a single-number lookup for individuals, and a CSV bulk upload for firms. The FastAPI backend handles concurrent upstream requests to India Post's API asynchronously using HTTPX, returning results far faster than the official portal. Making it public added SEO value and created an organic enterprise pipeline.
Platform Internals

Single Tracking — Live at trackmypost.in
Architecture
The frontend is written in Rust using the Yew framework and compiled to WebAssembly — giving the UI near-native execution speed in the browser with zero JavaScript runtime. The FastAPI backend manages HTTPX connection pooling and fans out async requests to India Post's API concurrently. Nginx serves the WASM bundle and proxies API calls. The whole stack ships in Docker with a single compose file.
Engineering Deep Dive
Challenges Faced
India Post rate limits aggressive IPs and drops connections randomly. Furthermore, tracking 200 items synchronously via standard HTTP requests would block the server thread for minutes, leading to gateway timeouts.
Techniques Used
I utilized HTTPX connection pooling and `asyncio.gather` in FastAPI to fan out 200 concurrent requests without blocking the event loop. I also built a fallback retry loop with exponential backoff (`poll_until_ready`), wrapping requests in safe polling cycles that automatically recover from dropped upstream connections.
Why This Technology?
FastAPI was chosen specifically because Python's `asyncio` is perfect for high-concurrency network I/O. Rust/Yew was chosen for the frontend because handling 200 complex row states in React can cause noticeable VDOM lag; WASM executes near-natively with zero runtime exceptions.
Technical deep-dive
Choosing Rust/WASM for a tracking UI was a deliberate bet: the Yew component model gives strong compile-time guarantees on state management, and WASM startup time on modern browsers is negligible for an app of this size. The real win is zero runtime exceptions — if it compiles, it runs. For bulk mode, FastAPI's async capabilities made the fan-out feasible. When a firm uploads 200 tracking numbers, the backend uses asyncio.gather() to fire 200 concurrent HTTPX requests, collecting and streaming results back as they arrive.
What was built
Live at trackmypost.in — open to everyone, no account required
Single tracking tab for instant one-click consignment lookup
Bulk tracking tab for firms uploading high-volume CSV batches
Installable as a PWA directly from the browser
FastAPI async backend — fans out 200 concurrent HTTPX requests in under 10 seconds
Rust/Yew frontend compiled to WebAssembly — near-native browser execution speed
Google SEO optimised — ranks organically for India Post tracking searches
Enterprise enquiry channel for bulk processing via IO2i
Outcome
The app is publicly live, Google-indexed, and ranks organically for India Post tracking searches. Enterprise firms contact IO2i directly for bulk processing contracts. The tool eliminated a manual workflow that cost the team 45+ minutes per batch.