WORK

A collection of projects, products, and case studies. Each represents real problems solved, things shipped, and lessons learned.

More projects in progress. Building in the open.

VIEW ON GITHUB

HOW THEY WERE BUILT

reTypingTest.com

ASTRO · CLOUDFLARE PAGES · TYPESCRIPT

THE PROBLEM

Urdu-speaking students preparing for Pakistani government exams (NTS, FPSC, PPSC) had no dedicated typing test platform. English-only tests don't measure what matters for their specific exams. Existing tools were slow, ad-heavy, or required sign-up.

THE SOLUTION

A multi-language typing test platform with dedicated government exam practice modes. Real-time WPM tracking, accuracy measurement, and practice passages drawn from actual exam material. Built on Astro for 100 Lighthouse score. Deployed to Cloudflare Pages in under 30 seconds per update.

KEY TECHNICAL DECISIONS

  • → Static-first: every test page prerendered for instant load
  • → Urdu rendering via system fonts — no external CDN requests
  • → WPM calculation handles both LTR and RTL text correctly
  • → Zero JavaScript shipped until the test actually starts

OUTCOME

Live at retypingtest.com. Serves students across Pakistan preparing for government employment exams. Lighthouse scores: 100 Performance, 100 Accessibility, 100 Best Practices, 100 SEO.

Game Name Generators

ASTRO · GEMINI AI · CLOUDFLARE D1 · CLOUDFLARE WORKERS

THE PROBLEM

Tabletop RPG players and game masters need character and place names quickly. Existing generators either served random gibberish or required a slow API call per generation. Neither is acceptable mid-session.

THE SOLUTION

A dual-engine architecture: static precomputed name lists for instant results under 50ms, with optional Gemini AI enrichment for more contextual suggestions. 14 generator types covering fantasy races, RPG classes, locations, and factions. AI results are cached in Cloudflare D1 (SQLite) to minimize API costs.

KEY TECHNICAL DECISIONS

  • → AI enhances but never blocks — static results always available
  • → D1 cache means repeated requests for the same prompt cost nothing
  • → Prompt engineering for structured JSON output, not freeform text
  • → Cloudflare Worker handles AI proxy — keeps API key server-side

OUTCOME

Live at gamenamegenerators.com. Operates entirely on Cloudflare's free tier. Sub-50ms response for static generators. AI suggestions delivered in under 2 seconds with D1 cache hit rate above 60% after initial warm-up period.

eBay & Amazon Chrome Extensions

CHROME MV3 · VANILLA JS · CLOUDFLARE WORKER

THE PROBLEM

eBay resellers making sourcing decisions from Amazon need to see max order quantities and sales velocity data without leaving the listing page or running manual lookups. Existing tools required CSV exports and separate spreadsheet analysis.

THE SOLUTION

Three extensions that inject analytics directly onto eBay and Amazon pages. SalesBar shows 7/15/30-day sales history on eBay listing pages. The Amazon extension overlays max order quantities on product cards across search results. The variation counter aggregates sold counts by product variant with proportional charts — across 15 eBay regional domains.

KEY TECHNICAL DECISIONS

  • → MutationObserver for SPA navigation — works on dynamically loaded content
  • → In-memory + localStorage + Cloudflare Worker cache hierarchy
  • → MV3 service workers for background API requests
  • → Regex-based DOM parsing across 15 eBay regional domains

OUTCOME

Three extensions shipped to the Chrome Web Store. Used daily by eBay resellers sourcing products at scale. Built without any third-party libraries — pure DOM APIs and the Chrome Extensions API.