PROJ is a generic coordinate transformation library that converts coordinates between different coordinate reference systems (CRS). It includes a comprehensive catalog of map projections (over 190), datum shifts (grid-based, Helmert, TIN), and time-dependent deformation models. The library provides both a C API and a C++ ISO19111-compliant object model, along with command-line tools (proj, cs2cs, cct, projinfo, geod, gie, projsync). The architecture is a core transformation engine that dispatches through function pointers, with a pipeline system for chaining operations. The library relies on a bundled SQLite database (proj.db) containing EPSG definitions, and supports grid files for high-accuracy transformations. It is heavily used in geospatial software (e.g., GDAL, QGIS) and compiles on Linux, macOS, Windows, and WebAssembly through Emscripten.