azavea / stac4s

a scala library with primitives to build applications using the SpatioTemporal Asset Catalogs specification

Version Matrix


CircleCI License Join the chat at Scala Steward badge

A scala project that provides types and basic functionality for working with SpatioTemporal Asset Catalogs. This library is the basis for projects like Franklin and others.


The following STAC types are covered by this library:

  • 2d- and 3d- Bounding Boxes
  • Collection
  • Asset
  • Catalog
  • Temporal and Spatial Extents
  • Item
  • License
  • Link & Link Types
  • Relations
  • Providers & Roles
  • Media Types

On its own this library does not provide much functionality; however, it can form a strong foundation for building catalogs and applications, especially when paired with libraries like GeoTrellis Server and GeoTrellis.


Contributions can be made via pull requests. You will need to fork the repository to your personal account, create a branch, update your fork, then make a pull request. Additionally, if you find a bug or have an idea for a feature/extension we would appreciate it if you opened an issue so we can work on a fix.

Deployments, Releases, and Maintenance

master signals the current unreleased, actively developed codebase. Each release will have an associated git tag is handled automatically via a CI job once a tag is pushed. Releases are handled automatically in CI. To produce a release, rotate changelog entries into a section for the version you're releasing usin chan release X.Y.Z, then make an annotated tag and push it to the repository:

git tag -s -a <version> -m "Release version <version>
git push origin --tags

After you've pushed the tag, create a GitHub release using chan gh-release X.Y.Z.

Active development and backports for a particular minor version of stac4s will be tracked and maintained on a branch for that series (e.g. series/0.1.x, series/0.2.x, etc). Pull requests to backport a fix, feature, or other change should be made to that series' respective branch.

Care will be taken to try and maintain backwards binary compatibility for all minor and bugfix releases.