{"adoption": {"forks": 278, "observed_at": "2026-08-28T04:03:33.184612+00:00", "stars": 1092}, "canonical_url": "https://ross.abutalabs.com/products/golang-clean-architecture", "card": {"archived": false, "artifact_type": "learning-resource", "description": "Go-Lang Clean Architecture", "domain": ["backend", "web-development", "developer-tools", "apis"], "enriched": true, "function": ["web-framework", "orm", "database", "logging", "middleware", "routing", "templating"], "health_score": 43, "homepage": null, "language": "Go", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["khannedy/golang-clean-architecture"], "name": "khannedy/golang-clean-architecture", "platform": ["go", "windows", "self-hosted"], "pushed_at": "2025-08-25T14:29:11+00:00", "repo": "khannedy/golang-clean-architecture", "stars": 1092, "tags": ["clean-architecture", "go-fiber", "gorm", "kafka", "project-template", "layered-architecture", "mysql", "viper", "golang-migrate", "sarama", "boilerplate", "linux", "macos", "docker"], "topics": [], "urls": [], "use_cases": ["start a new Go backend project with clean architecture", "golang rest api project template with layered structure", "learn how to structure a Go web service with use cases and repositories", "boilerplate for Go API with MySQL and Kafka", "example of golang clean architecture with fiber and gorm", "template for separating business logic from delivery and database layers"], "what_it_is": "A Go project template implementing Clean Architecture with layered delivery, use case, repository, and gateway components. It ships with a Fiber HTTP server, GORM/MySQL persistence, Kafka worker, migrations, and configuration out of the box.", "when_to_avoid": ["you prefer a different architecture style like hexagonal or DDD with your own conventions", "you use a different stack such as Gin, Echo, PostgreSQL, or gRPC-first services", "you need a production service rather than a template you must adapt and harden"], "when_to_choose": ["you want a proven, opinionated starting point for a Go backend following clean architecture", "your stack matches Fiber, GORM, MySQL, and Kafka", "you want migrations, validation, logging, and config wired up from day one"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/golang-clean-architecture", "repo": "khannedy/golang-clean-architecture", "role": "main", "score": 49}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:33.184612+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T08:33:35.703655+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "655889e070f20874d00a02a8eb86591240a35757ef750baa795f974a2c544c0f", "fetched_at": "2026-08-28T04:03:33.184612+00:00", "kind": "readme", "missing": false, "url": "https://github.com/khannedy/golang-clean-architecture"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:33.184612+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T08:33:35.703655+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "655889e070f20874d00a02a8eb86591240a35757ef750baa795f974a2c544c0f", "fetched_at": "2026-08-28T04:03:33.184612+00:00", "kind": "readme", "missing": false, "url": "https://github.com/khannedy/golang-clean-architecture"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T08:33:35.703655+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "655889e070f20874d00a02a8eb86591240a35757ef750baa795f974a2c544c0f", "fetched_at": "2026-08-28T04:03:33.184612+00:00", "kind": "readme", "missing": false, "url": "https://github.com/khannedy/golang-clean-architecture"}], "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:33.184612+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:33.184612+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:33.184612+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T08:33:35.703655+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "655889e070f20874d00a02a8eb86591240a35757ef750baa795f974a2c544c0f", "fetched_at": "2026-08-28T04:03:33.184612+00:00", "kind": "readme", "missing": false, "url": "https://github.com/khannedy/golang-clean-architecture"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:33.184612+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:33.184612+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T08:33:35.703655+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "655889e070f20874d00a02a8eb86591240a35757ef750baa795f974a2c544c0f", "fetched_at": "2026-08-28T04:03:33.184612+00:00", "kind": "readme", "missing": false, "url": "https://github.com/khannedy/golang-clean-architecture"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:33.184612+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:33.184612+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:33.184612+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T08:33:35.703655+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "655889e070f20874d00a02a8eb86591240a35757ef750baa795f974a2c544c0f", "fetched_at": "2026-08-28T04:03:33.184612+00:00", "kind": "readme", "missing": false, "url": "https://github.com/khannedy/golang-clean-architecture"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:33.184612+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:33.184612+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T08:33:35.703655+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "655889e070f20874d00a02a8eb86591240a35757ef750baa795f974a2c544c0f", "fetched_at": "2026-08-28T04:03:33.184612+00:00", "kind": "readme", "missing": false, "url": "https://github.com/khannedy/golang-clean-architecture"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T08:33:35.703655+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "655889e070f20874d00a02a8eb86591240a35757ef750baa795f974a2c544c0f", "fetched_at": "2026-08-28T04:03:33.184612+00:00", "kind": "readme", "missing": false, "url": "https://github.com/khannedy/golang-clean-architecture"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T08:33:35.703655+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "655889e070f20874d00a02a8eb86591240a35757ef750baa795f974a2c544c0f", "fetched_at": "2026-08-28T04:03:33.184612+00:00", "kind": "readme", "missing": false, "url": "https://github.com/khannedy/golang-clean-architecture"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T08:33:35.703655+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "655889e070f20874d00a02a8eb86591240a35757ef750baa795f974a2c544c0f", "fetched_at": "2026-08-28T04:03:33.184612+00:00", "kind": "readme", "missing": false, "url": "https://github.com/khannedy/golang-clean-architecture"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 38, "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": 2135, "days_push": 373, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 49, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}