{"adoption": {"forks": 420, "observed_at": "2026-08-28T04:04:39.152846+00:00", "stars": 1412}, "canonical_url": "https://ross.abutalabs.com/products/engineercms", "card": {"archived": false, "artifact_type": "application", "description": "工程师知识管理系统：基于golang语言（beego框架），支持分布式文件存储minio集群部署。engineercms为土木工程师基于web的知识管理系统。管理个人、工程项目资料，业主—设计—监理—施工方均从平台获得资料。支持提取码分享文件、onlyoffice实时文档协作，在线利用mindoc创作你的书籍，阅览PDF文件。手机端配套小程序，微信搜索“设计与管理”即可呼出小程序。", "domain": ["cms", "web-development", "developer-tools", "files"], "enriched": true, "function": ["web-framework", "file-upload", "search-engine", "documentation", "pdf"], "health_score": 95, "homepage": "https://www.zsj123.net/", "language": "Go", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["3xxx/engineercms"], "name": "3xxx/engineercms", "platform": ["windows", "cross-platform", "self-hosted"], "pushed_at": "2026-07-20T17:53:11+00:00", "repo": "3xxx/engineercms", "stars": 1412, "tags": ["knowledge-management", "beego", "minio", "onlyoffice", "wechat-mini-program", "civil-engineering", "project-management", "document-sharing", "linux", "web-server"], "topics": ["engineers", "cms", "projectmanage", "engineer-management", "hydraulic-informatization", "ipad"], "urls": [], "use_cases": ["manage engineering project documents online", "share files with extraction codes", "collaborate on documents in real time with OnlyOffice", "deploy distributed file storage with MinIO cluster", "read and review PDF files in the browser", "give owners, designers, supervisors and contractors access to project files", "write and publish books online with Mindoc"], "what_it_is": "EngineerCMS is a self-hosted web-based knowledge management system for engineers, built in Go on the Beego framework. It manages personal and engineering project documents with distributed MinIO file storage, extraction-code file sharing, OnlyOffice real-time collaboration, online book authoring via Mindoc, PDF viewing, and a companion WeChat mini program.", "when_to_avoid": ["you need a general-purpose CMS for blogging or e-commerce", "you require a modern stack or large contributor community", "you don't want to maintain a Go/Beego application yourself"], "when_to_choose": ["you are a civil/hydraulic engineer needing a self-hosted document management platform", "your team needs role-based access to project files across organizations", "you want OnlyOffice collaboration and MinIO storage in one system"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/engineercms", "repo": "3xxx/engineercms", "role": "main", "score": 80}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.152846+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:38:18.562211+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1715b1d819d39312bdee112d53e6d84abd8efa4305e36c4caf3a7291fe2928d2", "fetched_at": "2026-08-28T04:04:39.152846+00:00", "kind": "readme", "missing": false, "url": "https://github.com/3xxx/engineercms"}, {"content_hash": "c31ad3a692521ff50e47a18b8d48d0d005bc9fa252d5291294c358fbf33e612a", "fetched_at": "2026-08-29T11:51:19.712109+00:00", "kind": "homepage", "missing": false, "url": "https://www.zsj123.net/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.152846+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:38:18.562211+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1715b1d819d39312bdee112d53e6d84abd8efa4305e36c4caf3a7291fe2928d2", "fetched_at": "2026-08-28T04:04:39.152846+00:00", "kind": "readme", "missing": false, "url": "https://github.com/3xxx/engineercms"}, {"content_hash": "c31ad3a692521ff50e47a18b8d48d0d005bc9fa252d5291294c358fbf33e612a", "fetched_at": "2026-08-29T11:51:19.712109+00:00", "kind": "homepage", "missing": false, "url": "https://www.zsj123.net/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:38:18.562211+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1715b1d819d39312bdee112d53e6d84abd8efa4305e36c4caf3a7291fe2928d2", "fetched_at": "2026-08-28T04:04:39.152846+00:00", "kind": "readme", "missing": false, "url": "https://github.com/3xxx/engineercms"}, {"content_hash": "c31ad3a692521ff50e47a18b8d48d0d005bc9fa252d5291294c358fbf33e612a", "fetched_at": "2026-08-29T11:51:19.712109+00:00", "kind": "homepage", "missing": false, "url": "https://www.zsj123.net/"}], "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:04:39.152846+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.152846+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.152846+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:38:18.562211+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1715b1d819d39312bdee112d53e6d84abd8efa4305e36c4caf3a7291fe2928d2", "fetched_at": "2026-08-28T04:04:39.152846+00:00", "kind": "readme", "missing": false, "url": "https://github.com/3xxx/engineercms"}, {"content_hash": "c31ad3a692521ff50e47a18b8d48d0d005bc9fa252d5291294c358fbf33e612a", "fetched_at": "2026-08-29T11:51:19.712109+00:00", "kind": "homepage", "missing": false, "url": "https://www.zsj123.net/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.152846+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.152846+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:38:18.562211+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1715b1d819d39312bdee112d53e6d84abd8efa4305e36c4caf3a7291fe2928d2", "fetched_at": "2026-08-28T04:04:39.152846+00:00", "kind": "readme", "missing": false, "url": "https://github.com/3xxx/engineercms"}, {"content_hash": "c31ad3a692521ff50e47a18b8d48d0d005bc9fa252d5291294c358fbf33e612a", "fetched_at": "2026-08-29T11:51:19.712109+00:00", "kind": "homepage", "missing": false, "url": "https://www.zsj123.net/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.152846+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.152846+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.152846+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:38:18.562211+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1715b1d819d39312bdee112d53e6d84abd8efa4305e36c4caf3a7291fe2928d2", "fetched_at": "2026-08-28T04:04:39.152846+00:00", "kind": "readme", "missing": false, "url": "https://github.com/3xxx/engineercms"}, {"content_hash": "c31ad3a692521ff50e47a18b8d48d0d005bc9fa252d5291294c358fbf33e612a", "fetched_at": "2026-08-29T11:51:19.712109+00:00", "kind": "homepage", "missing": false, "url": "https://www.zsj123.net/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.152846+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.152846+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:38:18.562211+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1715b1d819d39312bdee112d53e6d84abd8efa4305e36c4caf3a7291fe2928d2", "fetched_at": "2026-08-28T04:04:39.152846+00:00", "kind": "readme", "missing": false, "url": "https://github.com/3xxx/engineercms"}, {"content_hash": "c31ad3a692521ff50e47a18b8d48d0d005bc9fa252d5291294c358fbf33e612a", "fetched_at": "2026-08-29T11:51:19.712109+00:00", "kind": "homepage", "missing": false, "url": "https://www.zsj123.net/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:38:18.562211+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1715b1d819d39312bdee112d53e6d84abd8efa4305e36c4caf3a7291fe2928d2", "fetched_at": "2026-08-28T04:04:39.152846+00:00", "kind": "readme", "missing": false, "url": "https://github.com/3xxx/engineercms"}, {"content_hash": "c31ad3a692521ff50e47a18b8d48d0d005bc9fa252d5291294c358fbf33e612a", "fetched_at": "2026-08-29T11:51:19.712109+00:00", "kind": "homepage", "missing": false, "url": "https://www.zsj123.net/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:38:18.562211+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1715b1d819d39312bdee112d53e6d84abd8efa4305e36c4caf3a7291fe2928d2", "fetched_at": "2026-08-28T04:04:39.152846+00:00", "kind": "readme", "missing": false, "url": "https://github.com/3xxx/engineercms"}, {"content_hash": "c31ad3a692521ff50e47a18b8d48d0d005bc9fa252d5291294c358fbf33e612a", "fetched_at": "2026-08-29T11:51:19.712109+00:00", "kind": "homepage", "missing": false, "url": "https://www.zsj123.net/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:38:18.562211+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1715b1d819d39312bdee112d53e6d84abd8efa4305e36c4caf3a7291fe2928d2", "fetched_at": "2026-08-28T04:04:39.152846+00:00", "kind": "readme", "missing": false, "url": "https://github.com/3xxx/engineercms"}, {"content_hash": "c31ad3a692521ff50e47a18b8d48d0d005bc9fa252d5291294c358fbf33e612a", "fetched_at": "2026-08-29T11:51:19.712109+00:00", "kind": "homepage", "missing": false, "url": "https://www.zsj123.net/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 93, "longevity": 100, "rhythm": 52}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3560, "days_push": 44, "days_rel": 108, "gap_med": null, "n_releases_24m": 1}, "score": 80, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}