{"adoption": {"forks": 233, "observed_at": "2026-08-28T04:03:26.670471+00:00", "stars": 1065}, "canonical_url": "https://ross.abutalabs.com/products/esp32-radio", "card": {"archived": false, "artifact_type": "application", "description": "Internet radio based on ESP32, VS1053 and a TFT screen.", "domain": ["embedded-systems", "iot", "hardware"], "enriched": true, "function": ["audio-processing", "http-client", "http-server", "iot"], "health_score": 20, "homepage": null, "language": "C++", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "maintenance", "member_repos": ["Edzelf/ESP32-Radio"], "name": "Edzelf/ESP32-Radio", "platform": ["embedded", "iot"], "pushed_at": "2024-10-21T09:34:05+00:00", "repo": "Edzelf/ESP32-Radio", "stars": 1065, "tags": ["esp32", "internet-radio", "vs1053", "arduino", "mqtt", "tft-display", "wifi-radio", "ota-update", "audio"], "topics": [], "urls": [], "use_cases": ["build a diy internet radio with esp32", "stream mp3 and ogg internet radio stations on embedded hardware", "play mp3 files from sd card or usb stick on a speaker", "control a wifi radio remotely via mqtt or web interface", "make an internet radio with a tft display showing station info"], "what_it_is": "An ESP32-based internet radio project that streams MP3/Ogg radio stations using a VS1053 audio decoder and displays info on a TFT screen. It is firmware for a DIY hardware build, configurable via a built-in web interface and controllable via MQTT, IR, serial, rotary encoder, or touch pins.", "when_to_avoid": ["you want the actively developed version - the author recommends ESP32Radio-V2 instead", "you need a turnkey commercial radio product rather than a hardware build", "you use audio codecs beyond MP3/Ogg or need very high bitrates"], "when_to_choose": ["you want a well-documented diy esp32 internet radio with pcb and case designs available", "you need multiple control options like web interface, mqtt, IR, and rotary encoder", "you want OTA firmware updates and configurable station presets"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/esp32-radio", "repo": "Edzelf/ESP32-Radio", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.670471+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:55:27.609277+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4c2b056a0d1e9cbb355cda6b021a8328b7cc799ac094151176bfd550fea492d7", "fetched_at": "2026-08-28T04:03:26.670471+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Edzelf/ESP32-Radio"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.670471+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:55:27.609277+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4c2b056a0d1e9cbb355cda6b021a8328b7cc799ac094151176bfd550fea492d7", "fetched_at": "2026-08-28T04:03:26.670471+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Edzelf/ESP32-Radio"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:55:27.609277+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4c2b056a0d1e9cbb355cda6b021a8328b7cc799ac094151176bfd550fea492d7", "fetched_at": "2026-08-28T04:03:26.670471+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Edzelf/ESP32-Radio"}], "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:26.670471+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.670471+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.670471+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:55:27.609277+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4c2b056a0d1e9cbb355cda6b021a8328b7cc799ac094151176bfd550fea492d7", "fetched_at": "2026-08-28T04:03:26.670471+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Edzelf/ESP32-Radio"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.670471+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.670471+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:55:27.609277+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4c2b056a0d1e9cbb355cda6b021a8328b7cc799ac094151176bfd550fea492d7", "fetched_at": "2026-08-28T04:03:26.670471+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Edzelf/ESP32-Radio"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.670471+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.670471+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.670471+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:55:27.609277+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4c2b056a0d1e9cbb355cda6b021a8328b7cc799ac094151176bfd550fea492d7", "fetched_at": "2026-08-28T04:03:26.670471+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Edzelf/ESP32-Radio"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.670471+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.670471+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:55:27.609277+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4c2b056a0d1e9cbb355cda6b021a8328b7cc799ac094151176bfd550fea492d7", "fetched_at": "2026-08-28T04:03:26.670471+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Edzelf/ESP32-Radio"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:55:27.609277+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4c2b056a0d1e9cbb355cda6b021a8328b7cc799ac094151176bfd550fea492d7", "fetched_at": "2026-08-28T04:03:26.670471+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Edzelf/ESP32-Radio"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:55:27.609277+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4c2b056a0d1e9cbb355cda6b021a8328b7cc799ac094151176bfd550fea492d7", "fetched_at": "2026-08-28T04:03:26.670471+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Edzelf/ESP32-Radio"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:55:27.609277+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4c2b056a0d1e9cbb355cda6b021a8328b7cc799ac094151176bfd550fea492d7", "fetched_at": "2026-08-28T04:03:26.670471+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Edzelf/ESP32-Radio"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "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": 3389, "days_push": 681, "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}}