Animate Icons
An open-source library of 280+ animated SVG icons for React: tree-shakeable, RSC-ready, TypeScript-first. Selected for the Vercel Open Source Program.
I build interfaces that move with purpose, and obsess over the two percent nobody notices until it's gone.
Good interfaces don't shout. They respond: a hover that lands in forty milliseconds, an easing curve tuned by eye, a layout that breathes. I've chased that feeling through 20+ shipped products and two open-source libraries people actually use. The details aren't polish. They're the product.
Frontend SDE-1 at SellerGeni, an AI-powered Amazon advertising platform. Before that, two years freelancing, 20+ production builds end to end, every one rated five stars.
Ship real things. Sweat the easing curves. Respect reduced-motion. Performance is a feature, not a phase at the end.
Building Git Switch, a native Git client that runs your dev servers too. And keeping 280+ icons moving over at AnimateIcons.
An open-source library of 280+ animated SVG icons for React: tree-shakeable, RSC-ready, TypeScript-first. Selected for the Vercel Open Source Program.
A fast, native Git client that runs your dev servers too. Rust core, React front, VS Code-style workspace, on macOS, Windows and Linux.
One command scaffolds a Vite + React + Tailwind v4 project: no prompts you don't need, no boilerplate you'll delete.
Production apps on Fiverr: scoped, architected and shipped alone, every one rated five stars. Learned to own a project end to end.
A side project crosses 950 stars, lands in the Vercel Open Source Program, and becomes a library other people's products depend on.
Frontend SDE-1 building an AI-powered Amazon advertising platform by day. By night: a native Git client in Rust and React.
Avijit has done an outstanding job, keeping me informed at every stage and delivering a truly pixel perfect implementation from the Figma design file that I sent him. Not only that, but he also optimized the website for mobile and tablet devices without being asked, which was a great bonus. I could not recommend him enough.
Icon libraries are static. Interfaces aren't. AnimateIcons gives React developers 280+ icons where the motion is part of the icon, not an afterthought bolted on with CSS.
Published as @animateicons/react on npm: tree-shakeable, RSC-ready, TypeScript-first, with an imperative animation handle on every icon and a shadcn-style CLI registry for per-icon installs. It was selected for the Vercel Open Source Program.
Path-level animation that stays smooth at 60fps, an API that triggers on hover or programmatically without re-renders, and honoring prefers-reduced-motion on every single icon. All of it without shipping a runtime users didn't ask for.
A desktop Git client that thinks like a developer's workspace: PTY-backed terminals, a resizable panel system, split and unified diffs, and multi-repo orchestration, native on macOS, Windows and Linux.
Rust owns the core; React owns the surface. Signed auto-updates ship from GitHub Actions to all three platforms, and commit messages can write themselves, with automatic model fallback when one provider is down.
The IPC layer between Rust and React executes 25+ Git operations: every one takes array-based arguments with strict validation, so shell injection is impossible by design. Getting xterm.js, the panel system and multi-repo state to feel like one coherent app took the longest.
Every React project starts the same way: spin up Vite, wire in Tailwind, delete the boilerplate you never wanted. create-vrtw does all of it in one command.
An interactive scaffolding CLI on npm. It sets up Vite + React in JavaScript or TypeScript, wires Tailwind CSS v4 (via the official @tailwindcss/vite plugin), Bootstrap 5, or no CSS framework, and optionally drops in React Router, Redux Toolkit or Zustand, Axios, and an icon set. Then it auto-cleans the default assets so you open a fresh, production-ready workspace. Runs with npm, pnpm, yarn, or bun.
Keeping the prompt flow short while covering the real combinations: every CSS-framework and state-management choice needs its own preconfigured starter and a matching cleanup pass, so the generated project stays coherent no matter what you pick, with nothing left to delete.