{"adoption": {"forks": 772, "observed_at": "2026-08-28T04:08:16.049230+00:00", "stars": 3744}, "canonical_url": "https://ross.abutalabs.com/products/tswechat", "card": {"archived": false, "artifact_type": "application", "description": "A WeChat alternative. Written in Swift 5.", "domain": ["mobile-development", "chatbots", "messaging-platforms", "cross-platform"], "enriched": true, "function": ["ui-components", "audio-processing", "caching", "serialization", "http-client"], "health_score": 20, "homepage": null, "language": "Swift", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["lanceylai/TSWeChat"], "name": "lanceylai/TSWeChat", "platform": [], "pushed_at": "2019-07-28T08:57:46+00:00", "repo": "lanceylai/TSWeChat", "stars": 3744, "tags": ["wechat-clone", "chat-ui", "swift-5", "rxswift", "sample-app", "im", "ios", "swift", "mobile"], "topics": ["ui", "wechat", "swift-3", "keyboard", "json", "rxswift", "project", "audio", "snapkit", "alamofire"], "urls": [], "use_cases": ["build a WeChat-style chat app in Swift", "learn iOS chat UI implementation with RxSwift", "implement custom emoji and voice message keyboards", "convert wav audio to amr for cross-platform messaging", "study a full-featured Swift messaging app codebase", "implement chat image caching and upload in iOS"], "what_it_is": "TSWeChat is an open-source iOS chat application that replicates the WeChat user interface, written in Swift 5. It demonstrates rich chat features including text, image, voice messaging, custom keyboards, and audio format conversion with caching.", "when_to_avoid": ["you need a production-ready messaging backend or real server integration", "you target Android or cross-platform frameworks", "you need actively maintained code - the last release was 2019"], "when_to_choose": ["you want a reference implementation of a WeChat-like iOS chat UI", "you need working examples of voice/image messaging with caching in Swift", "you're learning RxSwift, SnapKit, and Alamofire in a real app context"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/tswechat", "repo": "lanceylai/TSWeChat", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:16.049230+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:29:04.991925+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "83d8344b09e1a783df548a46de19e6adf6e782318092db857a03aa6a8dc3982b", "fetched_at": "2026-08-28T04:08:16.049230+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lanceylai/TSWeChat"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:16.049230+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:29:04.991925+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "83d8344b09e1a783df548a46de19e6adf6e782318092db857a03aa6a8dc3982b", "fetched_at": "2026-08-28T04:08:16.049230+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lanceylai/TSWeChat"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:29:04.991925+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "83d8344b09e1a783df548a46de19e6adf6e782318092db857a03aa6a8dc3982b", "fetched_at": "2026-08-28T04:08:16.049230+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lanceylai/TSWeChat"}], "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:16.049230+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:16.049230+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:16.049230+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:29:04.991925+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "83d8344b09e1a783df548a46de19e6adf6e782318092db857a03aa6a8dc3982b", "fetched_at": "2026-08-28T04:08:16.049230+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lanceylai/TSWeChat"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:16.049230+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:16.049230+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:29:04.991925+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "83d8344b09e1a783df548a46de19e6adf6e782318092db857a03aa6a8dc3982b", "fetched_at": "2026-08-28T04:08:16.049230+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lanceylai/TSWeChat"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:16.049230+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:16.049230+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:16.049230+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:29:04.991925+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "83d8344b09e1a783df548a46de19e6adf6e782318092db857a03aa6a8dc3982b", "fetched_at": "2026-08-28T04:08:16.049230+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lanceylai/TSWeChat"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:16.049230+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:16.049230+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:29:04.991925+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "83d8344b09e1a783df548a46de19e6adf6e782318092db857a03aa6a8dc3982b", "fetched_at": "2026-08-28T04:08:16.049230+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lanceylai/TSWeChat"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:29:04.991925+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "83d8344b09e1a783df548a46de19e6adf6e782318092db857a03aa6a8dc3982b", "fetched_at": "2026-08-28T04:08:16.049230+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lanceylai/TSWeChat"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:29:04.991925+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "83d8344b09e1a783df548a46de19e6adf6e782318092db857a03aa6a8dc3982b", "fetched_at": "2026-08-28T04:08:16.049230+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lanceylai/TSWeChat"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:29:04.991925+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "83d8344b09e1a783df548a46de19e6adf6e782318092db857a03aa6a8dc3982b", "fetched_at": "2026-08-28T04:08:16.049230+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lanceylai/TSWeChat"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3840, "days_push": 2593, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}