The project is split into many small subprojects based on dependencies. For example code related to loading of configuration files via PureConfig lives in subproject named sst-pureconfig and code related to http4s server implemented using Blaze lives in subproject named sst-http4s-server-blaze.

There are also subprojects that implement interoperability between usually two dependencies. For example we want to configure our HTTP server using PureConfig so definition of implicit ConfigReader instances lives in subproject named sst-http4s-server-blaze-pureconfig. Or to give another example, monitoring of HTTP server using Micrometer lives in subproject named sst-http4s-server-micrometer. Note that such subproject depends on APIs of both http4s server and Micrometer but it does not depend on concrete implementation which allows you to choose any http4s implementation (Blaze, …) and any Micrometer implementation (JMX, StatsD, …).