whoami

Developer tools that do more with less.

I'm Sayak Mukherjee — a developer working on static prerendering and AI infrastructure. Both of my public projects follow one rule: no unnecessary runtime, no framework tax, no stack you don't need.

GitHub stars
15
npm downloads / week
978
Contributions / year
1,025

01

Projects

01 Developer tooling / static prerendering

snappy-prerender

An alternative to react-snap for current toolchains. It prerenders every route of a single-page app to static HTML at build time and checks hydration per route.

The problem
react-snap's last npm release was 2018, and React 18/19 compatibility has been open since 2023. Client-rendered SPAs still ship an empty shell to Google and to LLM crawlers that never execute JavaScript.
The solution
snappy-prerender runs after your normal build. It serves the output on loopback, renders every route with Playwright, and writes the settled DOM as static HTML. Crawlers get the page immediately; the client hydrates from the same markup. The build also generates llms.txt, sitemap.xml, robots.txt, per-route metadata and social tags, then adds critical CSS, minification, preloads, CSP, locales and hreflang. Later builds reuse unchanged routes, revalidate API and vendored assets, and keep the cache locked and pruned. Third-party assets are localized with SRI and host, size and redirect checks. Audit, drift and hydration reports are included. The package ships as a Vite plugin, CLI, init wizard and API for React, Vue, Svelte, Preact, Angular, Solid, Lit, Ember and vanilla JavaScript.
  • JavaScript
  • Node.js
  • Playwright
  • Vite
  • CLI design

02 AI infrastructure / self-hosted gateway

SmolOrchestrator

An OpenAI-compatible AI gateway with zero runtime dependencies: one Node process, one SQLite file, one dashboard.

The problem
Running LiteLLM usually means Docker, Postgres, Redis and a Python stack. That is a lot of infrastructure for something that forwards requests, rotates keys and counts spend. The operational answers sit in provider dashboards and scripts: which route is healthy, which key is cheapest, who has exhausted their budget.
The solution
Node 22's built-in node:sqlite and the standard library. No runtime npm packages, no worker process, no cron. Requests are balanced across key pools by round-robin, least-used or cache-aware priority, filtered by declared capabilities, and failed over on 401/403 with capped backoff and active recovery probes. Costs are tracked in two layers, upstream route cost and downstream alias price, with per-key budgets from hourly to monthly, per-key timezones and FX conversion, plus LiteLLM-compatible spend headers. Deterministic requests are cached and coalesced; key pinning keeps upstream prompt caches warm. The proxy passes requests through unchanged, streaming included. Telemetry records attempts, latency and spend, with Prometheus metrics, health checks, verified SQLite backups and restore. The admin UI is HTML, CSS and ES modules with no build step. Prompts and completions are never persisted. 120 tests run against the live stack.
  • Node.js 22
  • SQLite
  • Vanilla JS
  • Streaming proxy
  • Security

02

Stack

Languages

  • JavaScript
  • PHP
  • Python
  • Java

Web & UI

  • Node.js
  • React and Vite
  • Vanilla JS and CSS
  • WordPress

Systems & operations

  • SQLite
  • Playwright
  • Linux
  • Git

Inference tooling

  • vLLM, SGLang
  • LLM, OCR, STT, TTS

03

About

Full-stack engineer. JavaScript, Node.js, PHP, and an unreasonable interest in making software do more with less.

I build products, tinker with inference infrastructure, self-host AI models, and spend an unhealthy amount of time thinking about model serving, agentic systems, and how to get useful intelligence into products without building a small data center of unnecessary abstractions.

I like software that does its job without needing an entourage of dependencies. I also have a habit of turning “this should be simpler” into a project of its own. Currently somewhere between shipping useful tools, experimenting with AI, and juggling a full-time job.