{"adoption": {"forks": 205, "observed_at": "2026-08-28T04:03:29.047606+00:00", "stars": 1074}, "canonical_url": "https://ross.abutalabs.com/products/scala-pet-store", "card": {"archived": false, "artifact_type": "learning-resource", "description": "An implementation of the java pet store using FP techniques in scala", "domain": ["web-development", "developer-tools", "tutorials", "programming-languages"], "enriched": true, "function": ["web-framework", "http-server", "serialization", "database-driver", "testing"], "health_score": 66, "homepage": null, "language": "Scala", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["pauljamescleary/scala-pet-store"], "name": "pauljamescleary/scala-pet-store", "platform": ["jvm"], "pushed_at": "2026-04-13T16:45:33+00:00", "repo": "pauljamescleary/scala-pet-store", "stars": 1074, "tags": ["scala", "tagless-final", "typelevel", "http4s", "doobie", "circe", "cats", "functional-programming", "reference-application", "rest-api"], "topics": ["scala", "tagless-final", "reference", "circe", "http4s", "rest", "doobie", "typelevel", "rest-api", "cats", "tagless", "final", "finally-tagless", "example", "sample", "project"], "urls": [], "use_cases": ["learn how to build a REST API in Scala with functional programming", "see a real example of tagless final architecture in Scala", "understand how to wire http4s, doobie, and circe together in one app", "migrate from Java/Spring to idiomatic Scala", "find a starting template for a Typelevel-based Scala web service", "study property-based testing setup with ScalaCheck in a real project"], "what_it_is": "A reference implementation of the classic Java pet store built with functional programming techniques in Scala, using the Typelevel stack (http4s, Doobie, Circe, Cats) and the tagless final pattern. It serves as an educational example for developers, especially those coming from Java/Spring, who want to see how a cohesive FP Scala application is assembled.", "when_to_avoid": ["you need a production-ready pet store or e-commerce backend", "you want a framework or library to depend on rather than study", "you need a frontend - the ScalaJS React front end is not built yet"], "when_to_choose": ["you are an OO or Java developer learning functional Scala end to end", "you want a reference for the Typelevel stack (http4s, cats, doobie, circe)", "you need a concrete example of tagless final in a full application"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/scala-pet-store", "repo": "pauljamescleary/scala-pet-store", "role": "main", "score": 67}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:29.047606+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:53:32.840318+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "144993e7a9d20b8f55ff588e8637768182b607a93da601beb4e7a1ee98522ed6", "fetched_at": "2026-08-28T04:03:29.047606+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pauljamescleary/scala-pet-store"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:29.047606+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:53:32.840318+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "144993e7a9d20b8f55ff588e8637768182b607a93da601beb4e7a1ee98522ed6", "fetched_at": "2026-08-28T04:03:29.047606+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pauljamescleary/scala-pet-store"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:53:32.840318+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "144993e7a9d20b8f55ff588e8637768182b607a93da601beb4e7a1ee98522ed6", "fetched_at": "2026-08-28T04:03:29.047606+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pauljamescleary/scala-pet-store"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:29.047606+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:29.047606+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:29.047606+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:53:32.840318+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "144993e7a9d20b8f55ff588e8637768182b607a93da601beb4e7a1ee98522ed6", "fetched_at": "2026-08-28T04:03:29.047606+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pauljamescleary/scala-pet-store"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:29.047606+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:29.047606+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:53:32.840318+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "144993e7a9d20b8f55ff588e8637768182b607a93da601beb4e7a1ee98522ed6", "fetched_at": "2026-08-28T04:03:29.047606+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pauljamescleary/scala-pet-store"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:29.047606+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:29.047606+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:29.047606+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:53:32.840318+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "144993e7a9d20b8f55ff588e8637768182b607a93da601beb4e7a1ee98522ed6", "fetched_at": "2026-08-28T04:03:29.047606+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pauljamescleary/scala-pet-store"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:29.047606+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:29.047606+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:53:32.840318+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "144993e7a9d20b8f55ff588e8637768182b607a93da601beb4e7a1ee98522ed6", "fetched_at": "2026-08-28T04:03:29.047606+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pauljamescleary/scala-pet-store"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:53:32.840318+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "144993e7a9d20b8f55ff588e8637768182b607a93da601beb4e7a1ee98522ed6", "fetched_at": "2026-08-28T04:03:29.047606+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pauljamescleary/scala-pet-store"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:53:32.840318+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "144993e7a9d20b8f55ff588e8637768182b607a93da601beb4e7a1ee98522ed6", "fetched_at": "2026-08-28T04:03:29.047606+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pauljamescleary/scala-pet-store"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:53:32.840318+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "144993e7a9d20b8f55ff588e8637768182b607a93da601beb4e7a1ee98522ed6", "fetched_at": "2026-08-28T04:03:29.047606+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pauljamescleary/scala-pet-store"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 77, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3391, "days_push": 142, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 67, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}