Product engineer. I build products end to end, from the first sketch to the deploy,
and I care about the parts people feel before they notice them.
kanakkholwal.eu.org • X • LinkedIn • Medium • contact@kanak.eu.org • Book a call
Open to founding engineer roles at early-stage teams.
| Project | What it is |
|---|---|
| Baby UI · site | Animated, accessible components for React and Svelte. One spec, two hand-written ports, installed with the shadcn CLI as source you own. My portfolio runs on it. |
| Recast · site | An agentic screen recorder and editor: real cursor smoothing, automatic zoom, Rust and FFmpeg under a Tauri app. |
| GlyphTeX · site | The LaTeX editor Overleaf should have been. The engine runs as WebAssembly in your browser, so your papers never leave your machine. |
| Docvia · site | A framework-agnostic documentation engine. Parse markdown once, then render it with React, Svelte or anything else. |
| Orbit · site | A free, offline PDF toolkit that runs on your device with WASM. Merge, split and compress without uploading a thing. |
| College Ecosystem · site | An open-source platform for NIT Hamirpur: results and rankings, campus tools, polls and communities. 1.8M+ visits. |
nexo-mdx: a headless, plugin-based markdown editor for React that picks up your Tailwind or shadcn theme.nexo-editor: a lightweight rich text editor for React on TipTap.custom-domain-sdk: bring-your-own-domain for multi-tenant apps, on Cloudflare Custom Hostnames with a strict lifecycle.remark-plugins: a collection of remark plugins for markdown processing.@docvia/*: the Docvia compiler, renderers and plugins, plus thedocviaCLI.
Download and star counts are live on kanakkholwal.eu.org/stats.
- Bruno: an open-source IDE for exploring and testing APIs.
- Optexity: custom browser agents with AI-powered automation.
Earlier work
- Mailing system: a type-safe, portable email service on TypeScript, React Email and Nodemailer.
- NexoNauts · site: an ecosystem for developers, on Next.js and MongoDB.
- Muse: AI-powered fashion discovery.
TypeScript and React or Svelte on the front, Node, Bun, Go or Rust behind it, Postgres or Mongo for data, and Docker on Cloudflare, GCP or Azure to ship it.
- 🎉 Merged PR #21 in kanakkholwal/docvia
About this repo: it's also the source for kanakkholwal.eu.org
The portfolio is a TanStack Start app on Cloudflare Workers, built on my own component library.
- UI: Baby UI components and tokens, installed with the shadcn CLI into
src/components/{ui,blocks,charts,text}. Geist, Geist Mono and Geist Pixel. Solar and Simple Icons, generated fromsrc/components/icons/icons.json. - Motion: CSS only, on Baby UI's motion tokens. Page changes use the View Transitions API; text uses Baby UI's text effects.
- Content: MDX through fumadocs. Projects in
src/resume/projects, work insrc/resume/work, writing incontent/. - Data: GitHub (GraphQL), npm, Medium, Google Analytics (Data API) and PostHog (HogQL), fetched on the server only and cached across Worker isolates with the Cache API.
- OG images: rendered with takumi in
src/og.
bun install
bun dev # http://portfolio.localhost via portless
bun run dev:app # plain vite dev
bun run build && bun run preview| Script | Does |
|---|---|
bun run typecheck |
TypeScript |
bunx biome check . |
Lint and format |
bun run lint:comments |
Comment gate: comments stay short and earn their place |
bun run icons |
Regenerates icons from icons.json |
bun run deploy |
Builds and deploys the Worker |
Environment variables are listed in .env.example. Running and deploying are covered in DEPLOYMENT.md.




