{"id":50593699,"url":"https://github.com/janholtzhausen/readarr","last_synced_at":"2026-06-05T12:30:28.102Z","repository":{"id":345793170,"uuid":"1187408392","full_name":"janholtzhausen/readarr","owner":"janholtzhausen","description":"Maintained Readarr fork with React 19, .NET 10, improved downloads, and explicit upstream contributor credit","archived":false,"fork":false,"pushed_at":"2026-04-05T00:51:06.000Z","size":286915,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-05T01:20:04.736Z","etag":null,"topics":["audiobooks","dotnet","ebooks","react","readarr","torrent","usenet"],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/janholtzhausen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":"CLA.md"}},"created_at":"2026-03-20T17:33:28.000Z","updated_at":"2026-04-05T00:51:10.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/janholtzhausen/readarr","commit_stats":null,"previous_names":["janholtzhausen/readarr"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/janholtzhausen/readarr","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/janholtzhausen%2Freadarr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/janholtzhausen%2Freadarr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/janholtzhausen%2Freadarr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/janholtzhausen%2Freadarr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/janholtzhausen","download_url":"https://codeload.github.com/janholtzhausen/readarr/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/janholtzhausen%2Freadarr/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33942426,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-05T02:00:06.157Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audiobooks","dotnet","ebooks","react","readarr","torrent","usenet"],"created_at":"2026-06-05T12:30:26.894Z","updated_at":"2026-06-05T12:30:28.095Z","avatar_url":"https://github.com/janholtzhausen.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Readarr\n\nThis repository is a maintained derivative of\n[pennydreadful/bookshelf](https://github.com/pennydreadful/bookshelf), which\nitself derives from the original\n[Readarr](https://github.com/Readarr/Readarr) project.\n\nThis fork is the actively maintained tree in this workspace. It carries the\ncurrent frontend/runtime modernization work, container updates, download/export\nimprovements, and a number of stability fixes for the single-page app.\n\n## Highlights\n\n- Frontend updated onto the React 19 line.\n- Backend and container toolchain updated onto .NET 10.\n- Router and frontend dependency stack modernized away from older legacy\n  package combinations.\n- React 19 compatibility issues fixed across the SPA, including routing,\n  selector, layout, and component-default regressions.\n- Book detail and file download UX improved.\n- EPUB and AZW3 export/download paths added and validated.\n- Cover recovery and image backfill behavior improved.\n- Container/runtime tuned for the current Linux x64 deployment environment used\n  in this workspace.\n\n## Runtime Stack\n\nThe maintained fork now targets:\n\n- .NET 10 for the backend and container build/runtime\n- React 19 for the frontend\n- updated React Router compatibility work across the SPA\n- a modernized frontend dependency set, including replacements for stale helper\n  libraries that were causing React 19 breakage\n\nIf you are comparing this repo to older Readarr/bookshelf snapshots, assume the\ncurrent codebase is substantially newer in both runtime expectations and\nfrontend behavior.\n\n## File Download And Conversion\n\nThis fork includes explicit work around book file export and download behavior.\n\n### What users can do\n\n- Download the imported/original book file directly from the UI when that file\n  exists in the library.\n- Export a book as EPUB where the source file and conversion path support it.\n- Export a book as AZW3 where the source file and conversion path support it.\n\n### How conversion works\n\n- The application prefers serving the existing library file directly when the\n  requested format already matches the imported file.\n- When the requested output format differs, the conversion path is used instead\n  of forcing users to manually convert outside the app.\n- Conversion availability depends on the source format and the conversion\n  capabilities present in the runtime environment.\n\n### Container/runtime requirements\n\n- The container image includes `calibre` and `calibre-bin` specifically to\n  support book conversion/export flows.\n- If you remove those packages from the runtime image, direct conversion-based\n  exports will stop working even though ordinary library management may still\n  function.\n\n## Running\n\nThe application listens on port `8787` and expects a writable config volume at\n`/config`.\n\nTypical container assumptions in this maintained fork:\n\n- app data/config at `/config`\n- books/library content mounted under `/books`\n- Linux x64 runtime\n\n## What Changed In This Fork\n\nThis maintained fork currently includes work in these areas:\n\n- React 19 migration and compatibility fixes across the SPA\n- router modernization and compatibility bridging for existing screens\n- selector cleanup to remove React 19 / `reselect` regressions\n- replacement or removal of stale frontend helpers\n- improved toolbar actions and book file download/export UX\n- container/runtime updates around .NET 10\n- backend cover healing to reduce persistent missing author/book artwork\n\n## Lineage\n\n- [Readarr](https://github.com/Readarr/Readarr)\n- [pennydreadful/bookshelf](https://github.com/pennydreadful/bookshelf)\n- this maintained fork\n\n## Upstream Credit\n\nFull credit is due first to\n[pennydreadful/bookshelf](https://github.com/pennydreadful/bookshelf) as the\nimmediate source this work started from, and also to the original\n[Readarr](https://github.com/Readarr/Readarr) authors and maintainers whose\nproject bookshelf itself derives from.\n\nThis fork does not claim sole authorship of the codebase. It builds directly on\nthe work of the upstream projects and their contributors.\n\nThis repository remains a derivative work of:\n\n- [pennydreadful/bookshelf](https://github.com/pennydreadful/bookshelf)\n- [Readarr](https://github.com/Readarr/Readarr)\n- related Servarr ecosystem code where still applicable\n\n## Upstream Contributors\n\nUpstream contributor credit should remain attached to the projects this fork was\nderived from. Rather than freezing an incomplete manual list here, the canonical\ncontributor histories are:\n\n- [Readarr contributors](https://github.com/Readarr/Readarr/graphs/contributors)\n- [bookshelf contributors](https://github.com/pennydreadful/bookshelf/graphs/contributors)\n\nThose contributor graphs should be treated as the authoritative upstream\nattribution record for this fork's inherited code.\n\n## Metadata/Image Source Credit\n\nThis fork has used metadata and image source integrations originating from the\nexisting bookshelf/Readarr codebase and related source providers, including\nGoodreads-derived image URLs that are still referenced by parts of the current\nmetadata pipeline.\n\nCredit is due to:\n\n- [Goodreads](https://www.goodreads.com/) as an original metadata/image source\n  used by existing Readarr-compatible metadata flows\n- [pennydreadful/bookshelf](https://github.com/pennydreadful/bookshelf) for the\n  actual source fork this repository was derived from\n- the upstream Readarr work that bookshelf and this repository both build on\n\nThis repository does not replace or relicense third-party source material.\nApplicable upstream/source licenses and terms remain with their original\nowners/providers.\n\n## License\n\nThis repository remains under GPLv3 in line with the original Readarr project.\nSee [LICENSE.md](./LICENSE.md).\n\n## Contributor Attribution\n\nThis fork is being maintained by `janholtzhausen`, while preserving explicit\ncredit to the original Readarr/bookshelf contributors and source-provider work\nabove.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjanholtzhausen%2Freadarr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjanholtzhausen%2Freadarr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjanholtzhausen%2Freadarr/lists"}