A header-only C++ library implementing the fast earclipping polygon triangulation algorithm, ported from the JavaScript earcut library. It provides a simple API (`mapbox::earcut`) that takes a polygon (with holes) and returns triangle indices, with an optional Delaunay refinement post-pass (`mapbox::refine`). The library is heavily optimized for real-time triangulation of vector tile geometries, using z-order curve hashing, custom memory allocation (object pool), and a block bounding-box index for efficient hole bridging. It targets C++14 for the public header and C++17 for tests/benchmarks. The repository also includes comprehensive test fixtures loaded at runtime from the upstream JS repository, benchmarks comparing against libtess2, and an interactive OpenGL visualizer.
A full-stack personal running activity dashboard that syncs workout data from over a dozen platforms (Strava, Garmin, Nike, Keep, Coros, etc.) via Python scripts, stores it in SQLite, and renders interactive web visualizations (React + Mapbox) and SVG posters (grid, heatmap, year summaries). It also includes a terminal UI (Textual) and an optional AI-powered share image generator. The architecture is a hybrid monolith: a shared SQLite database backs both the frontend (exported as JSON) and SVG generation. The frontend is themeable with two built-in themes (classic, dashboard). While the sync scripts are tightly coupled to each provider's API, the SVG poster drawer library and the terminal UI's data aggregation layer are well-isolated and potentially reusable. The project is actively maintained with frequent commits, CI/CD pipelines, and Docker support, though it carries moderate technical drift due to many unpinned dependencies and reliance on third-party APIs that may change.
This is a minimal Node.js library for converting geographic bounding boxes into centerpoint/zoom pairs for static map images, and vice versa. It wraps the @mapbox/sphericalmercator library to perform Mercator projection calculations, caching SphericalMercator instances by tile size and antimeridian flag for performance. The library exposes two functions: 'viewport' computes the center and zoom that best fits a bounding box within given pixel dimensions, and 'bounds' computes the bounding box from a centerpoint, zoom, and dimensions. It supports adjustable tile sizes (default 256) and optional float zooms. The code is well-structured and covered by tests, but the library is simple and does not contain independently reusable subcomponents. It is currently in a stale maintenance state with no recent updates.