{"adoption": {"forks": 131, "observed_at": "2026-08-28T04:06:53.320891+00:00", "stars": 2458}, "canonical_url": "https://ross.abutalabs.com/products/openlib", "card": {"archived": false, "artifact_type": "application", "description": "An Open source app to download and read books from shadow library (Anna’s Archive)", "domain": ["files", "education", "cross-platform"], "enriched": true, "function": ["http-client", "parser", "pdf-viewer", "search-engine"], "health_score": 75, "homepage": null, "language": "Dart", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "experimental", "member_repos": ["dstark5/Openlib"], "name": "dstark5/Openlib", "platform": [], "pushed_at": "2026-01-18T12:54:54+00:00", "repo": "dstark5/Openlib", "stars": 2458, "tags": ["ebook-reader", "shadow-library", "annas-archive", "epub", "book-downloader", "zlibrary", "library-genesis", "android", "flutter", "mobile"], "topics": ["annas-archive", "books", "ebook-reader", "flutter", "open-source", "shadow-library", "android", "epub", "library-genesis", "pdf", "zlibrary", "openlib", "openlibrary", "hacktoberfest"], "urls": [], "use_cases": ["download free books from anna's archive on android", "read epub and pdf books with a built-in reader", "search and filter trending books from a shadow library", "open downloaded books in my favorite ebook reader app", "f-droid app to download ebooks from z-library and libgen mirrors"], "what_it_is": "Openlib is an open-source Flutter app for searching, downloading, and reading books from Anna's Archive, a shadow library. It includes a built-in reader supporting EPUB and PDF formats and works by scraping Anna's Archive responses since no official API exists.", "when_to_avoid": ["you need iOS, desktop, or web support - it targets Android", "you require production stability - the app is in beta with known bugs", "you need formats beyond EPUB and PDF, such as CBZ or AZW3, which are not yet supported", "publishing or using such an app may violate local laws or store policies"], "when_to_choose": ["you want an open-source, ad-free mobile app to access Anna's Archive books", "you need offline reading of EPUB and PDF books on Android", "you prefer installing from F-Droid or IzzyOnDroid rather than Play Store"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/openlib", "repo": "dstark5/Openlib", "role": "main", "score": 63}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.320891+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:30:00.321452+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0bca333ed9cf609bd60514ae63c6ef079da6bf3ecbd83cf1ca3bb15276a9a892", "fetched_at": "2026-08-28T04:06:53.320891+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dstark5/Openlib"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.320891+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:30:00.321452+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0bca333ed9cf609bd60514ae63c6ef079da6bf3ecbd83cf1ca3bb15276a9a892", "fetched_at": "2026-08-28T04:06:53.320891+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dstark5/Openlib"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:30:00.321452+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0bca333ed9cf609bd60514ae63c6ef079da6bf3ecbd83cf1ca3bb15276a9a892", "fetched_at": "2026-08-28T04:06:53.320891+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dstark5/Openlib"}], "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:06:53.320891+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.320891+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.320891+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:30:00.321452+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0bca333ed9cf609bd60514ae63c6ef079da6bf3ecbd83cf1ca3bb15276a9a892", "fetched_at": "2026-08-28T04:06:53.320891+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dstark5/Openlib"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.320891+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.320891+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:30:00.321452+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0bca333ed9cf609bd60514ae63c6ef079da6bf3ecbd83cf1ca3bb15276a9a892", "fetched_at": "2026-08-28T04:06:53.320891+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dstark5/Openlib"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.320891+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.320891+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.320891+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:30:00.321452+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0bca333ed9cf609bd60514ae63c6ef079da6bf3ecbd83cf1ca3bb15276a9a892", "fetched_at": "2026-08-28T04:06:53.320891+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dstark5/Openlib"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.320891+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.320891+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:30:00.321452+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0bca333ed9cf609bd60514ae63c6ef079da6bf3ecbd83cf1ca3bb15276a9a892", "fetched_at": "2026-08-28T04:06:53.320891+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dstark5/Openlib"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:30:00.321452+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0bca333ed9cf609bd60514ae63c6ef079da6bf3ecbd83cf1ca3bb15276a9a892", "fetched_at": "2026-08-28T04:06:53.320891+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dstark5/Openlib"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:30:00.321452+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0bca333ed9cf609bd60514ae63c6ef079da6bf3ecbd83cf1ca3bb15276a9a892", "fetched_at": "2026-08-28T04:06:53.320891+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dstark5/Openlib"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:30:00.321452+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0bca333ed9cf609bd60514ae63c6ef079da6bf3ecbd83cf1ca3bb15276a9a892", "fetched_at": "2026-08-28T04:06:53.320891+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dstark5/Openlib"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 63, "longevity": 79, "rhythm": 54}, "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": 1119, "days_push": 227, "days_rel": 227, "gap_med": 70.5, "n_releases_24m": 5}, "score": 63, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}