Work

Seven products, all running. Each case says what it does and why it was built that way.

  • GemOS home page: a dark hero over a row of gemstone listings, each stone photographed on tweezers.

    GemOS

    Your gem business, digitised: inventory to shareable page in under 30 seconds.

    ProductNext.js 16, React 19, TypeScript2026 to present
  • CarWatch LK home page: median asking prices for used vehicles, with a trend line per model.

    CarWatch LK

    Used-vehicle asking price trends, collected from public marketplaces.

    Suzuki Alto prices

    ProductTanStack Start, React 19, TypeScript2026
  • LKR FX home page: reference rates for six currencies, each with buy and sell prices from a named Sri Lankan bank.

    LKR FX

    Rupee exchange rates from official and bank sources, with the source and timestamp for every number.

    USD to LKR rate

    ProductTanStack Start, React 19, TypeScript2026
  • Framegrab: a dashed drop zone for a video file, above three notes on local processing.

    Framegrab

    A local-first video frame extractor: native-resolution frames pulled entirely in the browser, nothing uploaded.

    ToolVite, React 18, TypeScript2026
  • InstaSave: a link field and a download button, with a three-step explanation below.

    InstaSave

    Paste a public Instagram link, preview it, download it. No account, no private content, no database.

    ToolNext.js 14, React 18, TypeScript2026
  • Sri Lanka Prayer Times: the next prayer in large type, today's six times, and the month's timetable beneath.

    Prayer Times LK

    Prayer times from ACJU, turned from monthly posters into dependable structured data.

    Colombo, Gampaha and Kalutara

    ProductTypeScript, Cheerio, Vite2026
  • Hajar Bakers home page: a pale celebration cake with sugar flowers beside the WhatsApp order button.

    Hajar Bakers

    The website that starts the conversation for a home bakery: found on Google, ordered on WhatsApp.

    Cakes and prices

    Client workTanStack Start, React 19, Vite2026