{"adoption": {"forks": 625, "observed_at": "2026-08-28T04:05:57.209526+00:00", "stars": 1938}, "canonical_url": "https://ross.abutalabs.com/products/comments-api", "card": {"archived": false, "artifact_type": "service", "description": null, "domain": ["web-development", "backend", "apis", "developer-tools"], "enriched": true, "function": ["http-server", "api-framework", "middleware", "database"], "health_score": 20, "homepage": null, "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["dev-mastery/comments-api"], "name": "dev-mastery/comments-api", "platform": ["self-hosted"], "pushed_at": "2023-02-28T10:59:06+00:00", "repo": "dev-mastery/comments-api", "stars": 1938, "tags": ["comments", "microservice", "clean-architecture", "express", "mongodb", "spam-filtering", "content-moderation", "xss-protection", "educational", "nodejs", "web-server"], "topics": [], "urls": [], "use_cases": ["add a comments section to my website", "self-host a comments API for my blog", "moderate user comments for spam and rude language", "learn clean architecture for node microservices", "filter personally identifiable information from comments", "build a microservice with express and mongodb"], "what_it_is": "A Node.js comments microservice API built with Express and MongoDB, demonstrating Clean Architecture principles. It includes XSS sanitization, spam detection via Akismet, and content moderation (profanity and PII) via Azure Content Moderator.", "when_to_avoid": ["you need a drop-in embeddable comment widget without running your own infrastructure", "you require moderation in languages other than English", "you want an actively developed production service with recent releases"], "when_to_choose": ["you need a self-hosted comments backend with built-in spam and content moderation", "you want a reference implementation of Clean Architecture in Node.js", "you use MongoDB and Express and want a ready-made comments service"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/comments-api", "repo": "dev-mastery/comments-api", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.209526+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:08:12.726053+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "69077ddaa8549d9d0962d41b0f4cb74a930c620483b174c3aecd747b3ca26be7", "fetched_at": "2026-08-28T04:05:57.209526+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dev-mastery/comments-api"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.209526+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:08:12.726053+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "69077ddaa8549d9d0962d41b0f4cb74a930c620483b174c3aecd747b3ca26be7", "fetched_at": "2026-08-28T04:05:57.209526+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dev-mastery/comments-api"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:08:12.726053+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "69077ddaa8549d9d0962d41b0f4cb74a930c620483b174c3aecd747b3ca26be7", "fetched_at": "2026-08-28T04:05:57.209526+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dev-mastery/comments-api"}], "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:05:57.209526+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.209526+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.209526+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:08:12.726053+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "69077ddaa8549d9d0962d41b0f4cb74a930c620483b174c3aecd747b3ca26be7", "fetched_at": "2026-08-28T04:05:57.209526+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dev-mastery/comments-api"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.209526+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.209526+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:08:12.726053+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "69077ddaa8549d9d0962d41b0f4cb74a930c620483b174c3aecd747b3ca26be7", "fetched_at": "2026-08-28T04:05:57.209526+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dev-mastery/comments-api"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.209526+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.209526+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.209526+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:08:12.726053+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "69077ddaa8549d9d0962d41b0f4cb74a930c620483b174c3aecd747b3ca26be7", "fetched_at": "2026-08-28T04:05:57.209526+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dev-mastery/comments-api"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.209526+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.209526+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:08:12.726053+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "69077ddaa8549d9d0962d41b0f4cb74a930c620483b174c3aecd747b3ca26be7", "fetched_at": "2026-08-28T04:05:57.209526+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dev-mastery/comments-api"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:08:12.726053+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "69077ddaa8549d9d0962d41b0f4cb74a930c620483b174c3aecd747b3ca26be7", "fetched_at": "2026-08-28T04:05:57.209526+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dev-mastery/comments-api"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:08:12.726053+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "69077ddaa8549d9d0962d41b0f4cb74a930c620483b174c3aecd747b3ca26be7", "fetched_at": "2026-08-28T04:05:57.209526+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dev-mastery/comments-api"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:08:12.726053+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "69077ddaa8549d9d0962d41b0f4cb74a930c620483b174c3aecd747b3ca26be7", "fetched_at": "2026-08-28T04:05:57.209526+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dev-mastery/comments-api"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2731, "days_push": 1282, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}