Skip to content
CAI
Software that uses CAICheck a score

felt/geo_postgis

64.5

Adequate · 3 October 2026

789

lines of production code

Elixir

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is an Elixir library that integrates the Geo and PostGIS ecosystems with Ecto, enabling robust spatial data handling within database schemas. It provides macros for PostGIS geometry operations and distance calculations, while supporting binary WKB encoding and multi-dimensional coordinate variants (Z/M). The library manages the casting and persistence of various geometry types, ensuring compatibility with modern Elixir and database driver versions.

Features

New PostGIS geometry and distance macros

This update adds several new PostGIS functions to the Ecto query interface, including \st\_distance\_in\_meters\ for accurate metric distance calculations, \st\_dwithin\ and \st\_dwithin\_in\_meters\ for proximity checks with optional spheroid support, and geometry manipulation macros like \st\_geometric\_median\, \st\_expand\, \st\_concave\_hull\, and \st\_collect\. It also corrects a typo in the \st\_crosses\ fragment (fixing 'ST\_Crosess' to 'ST\_Crosses') and updates the module documentation links.

lib · high confidence

Behavioural changes

Migrate configuration system to Elixir 1.11+ and update test environment

The application configuration has been migrated from the deprecated \Mix.Config\ module to the modern \import Config\ syntax, requiring a minimum Elixir version of 1.11. In the test environment, the repository configuration has been updated to use \Geo.PostGIS.Test.Repo\ instead of \Geo.Ecto.Test.Repo\, and the logger level has been adjusted from \:warn\ to \:warning\ to align with current Elixir standards.

config · high confidence

PostGIS extension now uses binary WKB format and supports Z/M coordinate variants

The Postgrex extension for PostGIS has been updated to use the binary format (WKB) instead of text (WKT) for encoding and decoding geometry data, which changes the underlying storage and transmission method. This update also adds support for geometry types with Z (elevation) and M (measure) coordinates, including PointZ, PointM, PointZM, LineStringZ, LineStringM, LineStringZM, MultiLineStringZ, MultiLineStringM, MultiLineStringZM, and PolygonZ. Additionally, the extension now defaults to copying binary data during decoding rather than referencing it, and includes a new configuration module to allow users to specify a custom JSON library for GeoJSON casting.

_lib/geo\postgis · high confidence

Release v3.7.1 with Geo v4.0.0 support and modernized project configuration

This release adds support for the newly released \geo\ v4.0.0 while maintaining compatibility with v3.6.x and v3.7.x. It also introduces a \.formatter.exs\ file to standardize code formatting via \mix format\, updates the CI configuration to use GitHub Actions (replacing Travis CI) with Elixir 1.11+ and OTP 22.3, and refreshes the README to reflect current installation and usage patterns.

(repo-wide) · high confidence

Test coverage

Expanded test coverage for PostGIS geometry types and Ecto integration

Added comprehensive tests for the \Geo.PostGIS.Geometry\ cast function, verifying support for both string-keyed and atom-keyed maps for Points and GeometryCollections. The Ecto integration tests were updated to use the unified \Geo.PostGIS.Geometry\ type across all schema fields (replacing specific types like \Geo.MultiPolygon\ or \Geo.Point\) and now include explicit PostGIS extension setup. New tests were added to verify round-trip insertion and retrieval for 3D and 4D geometry types, including \PointZ\, \LineStringZ\, and \LineStringZM\, alongside existing 2D geometries.

test · high confidence

Dependencies

Major dependency upgrade and Elixir 1.11 minimum requirement

This release upgrades core dependencies to their latest major versions, including Ecto 3.13, Postgrex 0.21, Geo 4.1, and Jason 1.4, while also updating documentation tooling to ex\_doc 0.40. To support these changes, the minimum required Elixir version has been raised from 1.4 to 1.11. Users should ensure their environment meets this requirement before upgrading.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 64 → 65 (+0.6)
  • Rubric changed (rubric-2026.09.15 → rubric-2026.10.1) — scores are not directly comparable.

Lenses

  • Code Health 100 → 100 (+0.0)
  • Architecture 69 → 69 (+0.0)
  • Maturity 59 → 57 (-2.0)
  • Readiness 66 → 68 (+1.7)
  • Security 64 → 70 (+6.0)

Resolved (2)

  • Documentation: no architecture or design documentation (README.md)
  • Documentation: no usage examples (README.md)

New (1)

  • Orphaned files with no living knowledge

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

felt/geo_postgis was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 3 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit cfa62078616374d6e00d0d996efa321df83cdb4b — the exact code this score is about.
  • Scored under rubric-2026.10.1 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-24c657e50118.