README.md

June 24, 2026 · View on GitHub

Volodymyr Agafonkin's projects

Open source projects I created, maintain or significantly contributed to, with a focus on maps, computational geometry & data visualization. Most are tiny, dependency-free, and built for exceptional performance.

Highlights

ProjectRoleDescription
Leafletauthor45kThe number one JavaScript library for interactive maps.
Mapbox GL JScore dev12kJavaScript/WebGL vector maps library.
pixelmatchauthor6.9kThe fastest and smallest pixel-level image comparison library.
suncalcauthor3.4kTiny library for calculating sun/moon positions and phases.
flatbushauthor1.6kFast static spatial index for 2D rectangles and points.
rbushauthor2.8kFast dynamic R-tree-based 2D spatial index.
delaunatorauthor2.6kThe fastest JS Delaunay triangulation library for 2D points.
earcutauthor2.5kThe fastest and smallest JS polygon triangulation library.
superclusterauthor2.3kFast geospatial point clustering library.
geojson-vtauthor2kFast tile-based geospatial index for GeoJSON data.
polylabelauthor1.5kFinds the pole of inaccessibility of a polygon (for labeling).
mapbox-gl-nativecore dev4.5kOpenGL-based vector maps rendering engine (archived).

Computational geometry & geospatial algorithms

ProjectRoleDescription
kdbushauthor0.7kFast static spatial index for 2D points in JavaScript.
robust‑predicatesauthor0.3kFast robust geometric predicates (modern JS port of Shewchuk's).
concavemanauthor0.7kFast concave hull algorithm in JS.
cheap-rulerauthor0.4kFast approximations for common geographic measurements.
tiny-sdfauthor0.7kBrowser-side signed distance field generation from text.
potpackauthor0.4kA tiny and fast JS rectangle packing library (for sprite layouts).
MARTINIauthor0.7kFast terrain meshing via right-triangulated irregular networks (RTIN).
delatinauthor0.3kFast terrain meshing via Delaunay-based greedy triangulation.
d3-delaunaycore dev0.7kFast Voronoi diagram library for 2D points (based on Delaunator).
delaunator-rsauthor0.3kA port of Delaunator to Rust.
earcut.hppcore dev1kC++11 port of Earcut.
geoflatbushauthorGeographic queries for Flatbush.
geokdbushauthor0.4kGeographic kNN queries for kdbush.
rbush-knnauthorkNN search plugin for RBush.
simplify-jsauthor2.4kFast JS polyline simplification library.
lineclipauthorFast library for clipping polylines and polygons by a bbox.
linematchauthorFast algorithm for comparing polyline sets (e.g. road networks).
which-polygonauthorFast index for point-in-polygon queries (e.g. point-in-country).
dobbyscanauthorFast density-based clustering of geographic points.
icomeshauthorFast icosphere mesh generation library for WebGL visualizations.
circle-unionauthorFast union of geographic circles as coverage polygons.

Other libraries & tools

ProjectRoleDescription
pbfmaintainer0.9kLow-level, lightweight protocol buffers encoder/decoder for JS.
webgl-windauthor1.1kWebGL-powered wind particle visualization.
simpleheatauthor1kTiny JavaScript library for drawing heatmaps with Canvas.
Leaflet.heatauthor1.6kSimple, fast heatmap plugin for Leaflet.
flamebearerauthor1.7kFast flame graphs for Node & V8.
bullshit.jsauthor1.9kBookmarklet to expose bullshit on web pages.
road-orientation-mapauthor0.3kA visualization of road orientations on an interactive map.
claudefilesauthorTiny Claude Code efficiency kit (status line & guard hook).
tinyjamauthorA radically simple, zero-configuration static site generator.
yeahjsauthorA tiny, fast, modern EJS templating library.
geobufmaintainer1kCompact binary encoding for geospatial data.
vector-tile-jsmaintainer0.4kLibrary for parsing Mapbox vector tiles in JavaScript.
tinyqueueauthor0.5kSmall and simple JS priority queue.
flatqueueauthorA faster but more limited variation of tinyqueue.
quickselectauthorFast selection algorithm in JavaScript (Floyd-Rivest).
simple-statisticscore dev3.5kDescriptive, regression, and inference statistics for JS.

Archive & experiments

Older, deprecated, unfinished or experimental projects — kept as a record of past work.
ProjectRoleDescription
magic-stringcore devTool for generating source maps (earlier contributions).
kothic-jscore devFull-featured JS map rendering engine using HTML5 Canvas (earlier contributions).
dead-simple-gridauthor250-byte CSS grid framework (unmaintained).
tile-covercore devGenerates the minimum set of tiles that cover a geometry (unmaintained).
tile-reducecore devScalable vector tile geospatial analysis library for Node (unmaintained).
geojson-vt-cppcore devC++11 port of GeoJSON-VT (archived).
seidelauthorSeidel's polygon triangulation in JS (deprecated).
binary-splitmaintainerFast Node.js stream splitter.
geojson-cppauthorC++14 library for converting GeoJSON into geometry.hpp representation (archived; formerly geojson.hpp).
mbtiles-extractsauthorTool for extracting regional subsets of MBTiles files (archived).
bbtreesauthorSelf-balancing binary search tree implementations in JS (unfinished).
supercluster.hppauthorC++14 port of Supercluster (archived).
tile-decoratorauthorJS tool for optimizing vector tiles (unmaintained).
github-org-browserauthorSimple tool for browsing public repos of a GitHub organization.
kdbush.hppauthorC++11 port of KDBush (archived).
cumulative-timerauthorSimple cumulative timer for benchmarking JavaScript (archived).
Leaflet.TouchHoverauthorLeaflet plugin for hover interactions on mobile.
polysnapauthorSnap rounding a polygon with self-intersections (a work in progress).
suncalc-goauthorGo port of SunCalc (unfinished).
polyclipauthorMartinez polygon boolean operations in JS (unfinished).
pbf-splitauthorSplits a Node stream of length-prefixed protocol buffer messages (deprecated).
fannyauthorExperiments with feedforward neural networks in JS.
rollup-plugin-unassertmaintainerA Rollup plugin to remove assertion calls via Unassert.
hainauthorPort of Hain's polygon trapezoidation in JS (unfinished).

Contact