{"adoption": {"forks": 1024, "observed_at": "2026-08-28T04:08:55.654618+00:00", "stars": 4654}, "canonical_url": "https://ross.abutalabs.com/products/mallchat", "card": {"archived": false, "artifact_type": "application", "description": "mallchat的后端项目，是一个既能购物又能聊天的电商系统。以互联网企业级开发规范的要求来实现它，电商该有的购物车，订单，支付，推荐，搜索，拉新，促活，推送，物流，客服，它都必须有。持续更新ing。。（点个star，不迷路）", "domain": ["e-commerce", "web-development", "backend", "messaging-platforms", "developer-tools", "tutorials"], "enriched": true, "function": ["websocket", "http-server", "web-framework", "search-engine", "message-queue", "caching", "auth", "chatbot"], "health_score": 20, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["zongzibinbin/MallChat"], "name": "zongzibinbin/MallChat", "platform": ["jvm", "self-hosted"], "pushed_at": "2024-08-19T14:34:44+00:00", "repo": "zongzibinbin/MallChat", "stars": 4654, "tags": ["im", "instant-messaging", "e-commerce-system", "learning-project", "netty", "spring-boot", "shopping-cart", "order-management", "customer-service", "recommendation", "web-server", "docker"], "topics": [], "urls": [], "use_cases": ["build an e-commerce platform with integrated chat", "learn enterprise Java backend development practices", "implement websocket-based instant messaging with netty", "study shopping cart and order payment flows", "add customer service chat to an online store", "learn distributed locks and rate limiting annotations in spring", "practice building recommendation and search for products"], "what_it_is": "MallChat is a Java backend for an e-commerce system that combines shopping features (cart, orders, payments, search, recommendations, logistics, customer service) with real-time instant messaging built on Netty WebSocket. It is designed as an enterprise-grade best-practice learning project with extensive documentation and continuous updates.", "when_to_avoid": ["you need a production-ready e-commerce solution to deploy as-is", "you need a non-Java stack or a lightweight chat-only library", "you require guaranteed long-term maintenance or commercial support"], "when_to_choose": ["you want a full-featured reference implementation of e-commerce plus IM in Java", "you are learning enterprise backend patterns with detailed Chinese documentation", "you need a working demo of netty websocket chat integrated with shopping features"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/mallchat", "repo": "zongzibinbin/MallChat", "role": "main", "score": 30}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.654618+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:19:29.195982+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8293adb15e3e3c1f571ab45a662fcff75190915be4d1d122726111411441a0cd", "fetched_at": "2026-08-28T04:08:55.654618+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zongzibinbin/MallChat"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.654618+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:19:29.195982+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8293adb15e3e3c1f571ab45a662fcff75190915be4d1d122726111411441a0cd", "fetched_at": "2026-08-28T04:08:55.654618+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zongzibinbin/MallChat"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:19:29.195982+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8293adb15e3e3c1f571ab45a662fcff75190915be4d1d122726111411441a0cd", "fetched_at": "2026-08-28T04:08:55.654618+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zongzibinbin/MallChat"}], "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:08:55.654618+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.654618+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.654618+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:19:29.195982+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8293adb15e3e3c1f571ab45a662fcff75190915be4d1d122726111411441a0cd", "fetched_at": "2026-08-28T04:08:55.654618+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zongzibinbin/MallChat"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.654618+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.654618+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:19:29.195982+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8293adb15e3e3c1f571ab45a662fcff75190915be4d1d122726111411441a0cd", "fetched_at": "2026-08-28T04:08:55.654618+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zongzibinbin/MallChat"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.654618+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.654618+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.654618+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:19:29.195982+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8293adb15e3e3c1f571ab45a662fcff75190915be4d1d122726111411441a0cd", "fetched_at": "2026-08-28T04:08:55.654618+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zongzibinbin/MallChat"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.654618+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:55.654618+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:19:29.195982+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8293adb15e3e3c1f571ab45a662fcff75190915be4d1d122726111411441a0cd", "fetched_at": "2026-08-28T04:08:55.654618+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zongzibinbin/MallChat"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:19:29.195982+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8293adb15e3e3c1f571ab45a662fcff75190915be4d1d122726111411441a0cd", "fetched_at": "2026-08-28T04:08:55.654618+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zongzibinbin/MallChat"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:19:29.195982+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8293adb15e3e3c1f571ab45a662fcff75190915be4d1d122726111411441a0cd", "fetched_at": "2026-08-28T04:08:55.654618+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zongzibinbin/MallChat"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:19:29.195982+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8293adb15e3e3c1f571ab45a662fcff75190915be4d1d122726111411441a0cd", "fetched_at": "2026-08-28T04:08:55.654618+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zongzibinbin/MallChat"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 90, "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": 1266, "days_push": 744, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 30, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}