# Vinayak Kulkarni — full content for LLMs Generated: 2026-09-09T10:09:53.467Z # https://vinayakkulkarni.dev/ day · Lng 27.5° · Decl 4.6° · Local 59.1° Vinayak Kulkarni V i n a y a k K u l k a r n i GIS Engineer G I S E n g i n e e r View Projects GitHub About Co-Founder building the geospatial infrastructure of the future. Explore Projects From tile servers to map SDKs: tools powering millions of map views. Explore Open Source 50+ packages, 2000+ stars, and counting. Explore Articles Writing about Vue, GIS, and the modern web. Explore --- # https://vinayakkulkarni.dev/about About Building the geospatial infrastructure of the future. Co-Founder of a stealth startup focused on geospatial technology. Previously Frontend Engineering Lead, now building cutting-edge GIS tools that serve millions of map tiles daily. I specialize in the entire geospatial stack — from processing planetary-scale vector data with Planetiler and Overture Maps, to rendering interactive 3D globes with MapLibre GL and Three.js, to serving tiles at the edge via Cloudflare Workers and R2. Passionate about open source cartography and the Vue.js ecosystem. Creator of 50+ open source packages with thousands of stars on GitHub. Tech Stack Vue 3 Nuxt TypeScript MapLibre GL Planetiler PMTiles Rust Cloudflare Tailwind CSS DuckDB PostGIS Three.js --- # https://vinayakkulkarni.dev/projects Projects What I'm Building tileserver-rs High-performance Rust tile server for PMTiles, MBTiles, PostGIS, and Cloud Optimized GeoTIFFs Rust 54 3 v-maplibre 50+ Vue 3 components for MapLibre GL — deck.gl, LiDAR, COG, spatial indexing, and more Vue 69 3 nxui Beautiful animated components for Vue. Built with Tailwind CSS and motion-v. Vue 174 8 vue-nuxt-best-practices Vue and Nuxt best practices for Claude Code and AI agents TypeScript 40 2 v-mapkit 18 Vue 3 components for Apple MapKit JS — annotations, overlays, Look Around, search & geocoding, and more Vue 12 3 maplibre-gl-compare Swipe-style map comparison control for MapLibre GL JS with theme support TypeScript 5 1 All Repositories vinayakkulkarni 2 today vinayakkulkarni.dev My Portfolio Website 4 Vue today v-spotlight Vue 3 spotlight overlay component for product tours, feature highlights, onboarding flows, and contextual walkthroughs. TypeScript ESM. 11 TypeScript today v-github-icon Vue 3 component for rendering GitHub Octicons (1,800+ icons) with full TypeScript types and tree-shakable ESM output. 7 TypeScript today v-offline Vue 3 component and composable for detecting online and offline network status with reactive state and customizable polling. 380 TypeScript today v-image Vue 3 file input component with image preview, drag-and-drop upload, and reactive validation. TypeScript-native ESM. 42 TypeScript today v-intl Native Intl-based i18n components for Vue 3 — number, date, currency, relative time, and list formatting with zero runtime overhead. 15 TypeScript today v-vectors Vue 3 SVG icon component with on-demand rendering, ARIA labels, sizing presets, and full TypeScript support. 3 TypeScript 2d ago v-tweakpane Vue 3 wrapper for Tweakpane — build floating GUI panels for tweaking values, debugging generative art, and design tools. 43 TypeScript 2d ago v-clappr Vue 3 wrapper for the Clappr media player with HLS adaptive streaming, custom plugins, and TypeScript-native ESM exports. 29 Vue 2d ago vue-identify-network Vue 3 component and composable for detecting network speed, connection type (4G, wifi, 2g, 3g), data saver, and Network Information API. 70 TypeScript 2d ago better-helium Give the Helium browser the DRM playback it ships without — Netflix, Hotstar, Disney+, Spotify. Pure bash, zero deps. 2 Shell 2w ago dashboard :vulcan_salute: Dashboard for GeoSpoc using Leaflet.js, Chart.js & Vue.js 5 JavaScript 1mo ago v-pip Vue 3 wrapper for the native Picture-in-Picture (PiP) Web API — floating video, document PiP, and TypeScript-first composables. 35 TypeScript 1mo ago shadscan-vue Find the UI fundamentals your shadcn-vue app forgot. Deterministic audits for shadcn-vue & shadcn-nuxt apps. Vue port of shadscan. 2 TypeScript 1mo ago mapbox-gl-interpolate-heatmap (IDW) Interpolated Heatmap Layer for mapbox-gl 30 TypeScript 1mo ago v-player Vue 3 HTML5 video player with glassmorphism UI, custom controls, keyboard shortcuts, and TypeScript-native ESM exports. 1 Vue 1mo ago v-canvas Canvas Store & Canvas Module for Nuxt 4 ✨ 2 TypeScript 3mo ago s-offline 🔌 Simple Svelte component to detect offline & online changes. 68 JavaScript 5mo ago v-mapbox Vue 3 wrapper for Mapbox GL & MapLibre GL JS with declarative component API. 187 Vue 5mo ago jobify :page_with_curl: Job Board Playground with Laravel / VueJS 2.x :zap: 11 PHP 6mo ago oxfmt-template-literal-repro Reproduction: oxfmt non-idempotent formatting of template literals in Vue SFC with vueIndentScriptAndStyle Vue 6mo ago v-tree [WIP] Bare clone of `vue-treeview` with support for tailwind css 7 Vue 6mo ago nuxt-cloudflare-imports-bug Minimal repro: Nitro cloudflare dev plugin fails to resolve #imports with compatibilityVersion 5 + compatibilityDate latest TypeScript 7mo ago v-kong-dashboard Kong Dashboard built from scratch with Nuxt 3 🎉 6 Vue 1y ago canvas-nuxt-boilerplate DSCVR Canvas w/ Nuxt 4 2 TypeScript 1y ago cluster V-Mapbox Demo :: Clusters 2 Vue 2y ago --- # https://vinayakkulkarni.dev/open-source Open Source I Love Open Source 0 GitHub Stars 0 Open Source Packages 0 npm Downloads 0 Contributions Contribution Activity --- # https://vinayakkulkarni.dev/articles Writing on GIS, maps, and shipping from zero to one. Writing on GIS, MapLibre, vector tiles, PMTiles, and building with Vue.js, from an engineer taking geospatial products from zero to one. Subscribe via RSS cloudflare Jul 27, 2026 TIL: Cloudflare was prepending Disallow rules above my robots.txt I authored a robots.txt that explicitly invited AI crawlers. Production served a Cloudflare-managed block above it that disallowed eight of them. The repo never showed it, no API can turn it off, and RFC 9309 group-merging is the only thing standing between your allowlist and invisibility. cloudflare robots-txt ai-crawlers seo aeo rfc-9309 nuxt Jul 20, 2026 Making a Nuxt site agent-ready: from Level 1 to Level 4 on isitagentready.com AI agents are starting to operate websites, not just cite them. What it took to move a production Nuxt site on Cloudflare Workers from a score of 21 to Level 4 on the isitagentready scanner: markdown negotiation, API catalogs, agent-skills indexes, WebMCP, and the traps nobody documents. nuxt cloudflare agents mcp webmcp seo geo cloudflare Jul 13, 2026 Workers Cache on an authenticated tile API: the split-entrypoint pattern How to enable Cloudflare Workers Cache on an API that must authenticate and meter every request, using an uncached gateway entrypoint in front of a cached origin entrypoint. Warm viewport hit rate went from 10% to 100% and median warm tile latency dropped from 874ms to under 100ms. cloudflare workers cache pmtiles nitro gis gis Jul 12, 2026 Encoding elevation into pixels: DEM terrain tiles in Rust How tileserver-rs turns raw GDAL elevation rasters into Terrarium and Mapbox-RGB terrain tiles that MapLibre renders as 3D terrain. The math, the classic 1-LSB encoding bug, and why the alpha channel will betray you. rust gis maplibre dem terrain gdal cloudflare Jul 7, 2026 How I cut a $35 Supabase bill to $0 with Cloudflare D1 Moving a live multi-tenant SaaS off Supabase Postgres onto Cloudflare D1 with zero downtime. The schema rewrite was the easy part. The date-coercion bug, the PostGIS audit, and the break-even math were not. cloudflare d1 supabase sqlite drizzle nuxt migration nuxt Jul 6, 2026 TIL: Shiki multi-theme highlighting does not switch the code-block background Shiki multi-theme mode swaps token colours per colour scheme but leaves the pre background variable empty, so light-theme text can land on a dark block. You have to theme the container yourself. nuxt shiki nuxt-content dark-mode cloudflare Jul 6, 2026 Generating dynamic Open Graph images on Cloudflare Workers Rendering per-page and per-article social cards at the edge with Satori and @cf-wasm/og: how the route works, what Satori refuses to render, and the cold-versus-warm numbers. cloudflare workers open-graph satori nuxt cloudflare Jul 6, 2026 Migrating a Nuxt site from Cloudflare Pages to Workers The full path from the cloudflare-pages preset to a cloudflare_module Worker: the config changes, the custom-domain cutover that no deploy step handles for you, and the gotchas that only show up in CI. cloudflare workers nuxt nitro devops css Jul 6, 2026 TIL: Tailwind v4 mask utilities need the webkit prefix in plain CSS Porting a Tailwind mask-composite utility to scoped CSS quietly breaks in Chrome and Safari unless you also write the -webkit-mask-* properties, because Tailwind was emitting them for you. tailwind css webkit cloudflare Jul 6, 2026 TIL: Enabling Workers Cache through Nitro without a native option Nitro forwards arbitrary keys into the generated wrangler config, so you can turn on Cloudflare Workers Cache with a single line even though there is no dedicated Nitro option for it. cloudflare workers nitro nuxt vue Jul 4, 2022 Build & Publish Vue 3 Components using Rollup.js Let's build a reusable Vue 3 component using rollup vue 3 rollup