{"id":29708837,"url":"https://github.com/bnussbau/trmnl-opds-shelf","last_synced_at":"2026-02-06T13:45:19.822Z","repository":{"id":305876138,"uuid":"1024225121","full_name":"bnussbau/trmnl-opds-shelf","owner":"bnussbau","description":"Visualize an OPDS feed on a TRMNL device.","archived":false,"fork":false,"pushed_at":"2025-08-20T15:42:41.000Z","size":9,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-08T07:17:18.905Z","etag":null,"topics":["trmnl","trmnl-plugin"],"latest_commit_sha":null,"homepage":"","language":"Liquid","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bnussbau.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"custom":["https://usetrmnl.com/?ref=laravel-trmnl"],"buy_me_a_coffee":"bnussbau","github":"bnussbau"}},"created_at":"2025-07-22T11:19:18.000Z","updated_at":"2025-09-02T22:25:55.000Z","dependencies_parsed_at":"2025-07-22T13:36:51.845Z","dependency_job_id":null,"html_url":"https://github.com/bnussbau/trmnl-opds-shelf","commit_stats":null,"previous_names":["bnussbau/trmnl-opds-shelf"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bnussbau/trmnl-opds-shelf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bnussbau%2Ftrmnl-opds-shelf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bnussbau%2Ftrmnl-opds-shelf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bnussbau%2Ftrmnl-opds-shelf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bnussbau%2Ftrmnl-opds-shelf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bnussbau","download_url":"https://codeload.github.com/bnussbau/trmnl-opds-shelf/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bnussbau%2Ftrmnl-opds-shelf/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29163514,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-06T12:44:37.655Z","status":"ssl_error","status_checked_at":"2026-02-06T12:44:13.991Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["trmnl","trmnl-plugin"],"created_at":"2025-07-23T19:07:50.489Z","updated_at":"2026-02-06T13:45:19.802Z","avatar_url":"https://github.com/bnussbau.png","language":"Liquid","funding_links":["https://usetrmnl.com/?ref=laravel-trmnl","https://buymeacoffee.com/bnussbau","https://github.com/sponsors/bnussbau"],"categories":[],"sub_categories":[],"readme":"## 📚 OPDS Bookshelf for TRMNL\n\nDisplay your personal bookshelf by connecting to an OPDS feed. \n\nRemember when people kept bookshelves in their living rooms? Guests would browse the spines, spot a favorite title and suddenly you were deep in a great conversation. But now, in the age of e-readers and digital libraries, our books are invisible. No one knows what you’re reading. The bookshelf has disappeared.\n\n**OPDS Bookshelf for TRMNL brings it back.**\n\nDisplay your personal digital shelf, live from any OPDS-compatible server, directly onto your TRMNL device. It's the perfect companion for TRMNL Guest Mode, turning your living room e-ink screen into a silent conversationalist. Visitors can browse your current reads and maybe even borrow a recommendation.\n\n![image](https://github.com/user-attachments/assets/460e2723-92dc-4668-ac31-6473fc860b09)\n\nOPDS (Open Publication Distribution System) is an open standard designed to simplify and decentralize the distribution of digital publications. OPDS catalogs let users easily browse, search, and download content across compatible apps and devices.\n\n## ✨ Features\n* Connects to any OPDS-compatible server (like Calibre-Web, Calibre (Content Server), Komga, or Strump)\n* Displays shelf on your TRMNL screen\n* 3 Layouts: \n  * Cover only Grid\n  * Cover + Author \u0026 Title Grid\n  *  List View (Author + Title)\n*  Configurable for TRMNL \"Guest Mode\" (double-click the button on the back of your device, if configured as special function)\n\n### Compatibility\n\n#### Server\n* Calibre\n* Calibre Web\n* Komga\n* Strump \n* …\n\n#### Reader\n* KOReader (Kindle, Kobo, PocketBook, Android and desktop Linux)\n* …\n\nList of compatible OPDS Servers and Reader Applications: [awesome-opds](https://github.com/opds-community/awesome-opds?tab=readme-ov-file)\n\nMore Information on OPDS: [opds.io](https://opds.io/)\n\n## Example\n\n### Use with Calibre Web\n\n1. Set up Calibre Web (https://github.com/janeczku/calibre-web)\n2. Create a Shelf and add the books you want to show (select \"Share with everyone\")\n3. To expose the feed without Authentication enable \"Anonymous browsing\" (Admin \u003e Edit Basic Configuration \u003e Feature Configuration \u003e Enable Anonymous Browsing)\n4. Get your feed and set it as polling URL in the TRMNL recipe. Copy the shelf URL and prefix /shelf with /opds/shelf (e.g. https://calibre-web.example/opds/shelf/1). Note: without anonymous browsing enabled, you'll need to provide Basic Auth credentials, eg. https://User:Passw0rd@calibre-web.example/opds/shelf/1\n\n\u003cimg width=\"1328\" height=\"793\" alt=\"image\" src=\"https://github.com/user-attachments/assets/a45bda0a-294f-4603-b7a0-e9d04c4ac920\" /\u003e\n\u003cimg width=\"1328\" height=\"793\" alt=\"image\" src=\"https://github.com/user-attachments/assets/1162c8c1-b3ea-4dbe-992d-5b7556b7062f\" /\u003e\n\u003cimg width=\"1328\" height=\"793\" alt=\"image\" src=\"https://github.com/user-attachments/assets/47bf2fbb-1e38-4c6d-a58b-b50745baf501\" /\u003e\n\u003cimg width=\"1328\" height=\"793\" alt=\"image\" src=\"https://github.com/user-attachments/assets/a383495b-01cd-4e11-8373-8dcd3559cb1a\" /\u003e\n\n### Development\nCan be served via [trmnlp](https://github.com/usetrmnl/trmnlp). Install trmnlp and run\n```\ntrmnlp serve\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbnussbau%2Ftrmnl-opds-shelf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbnussbau%2Ftrmnl-opds-shelf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbnussbau%2Ftrmnl-opds-shelf/lists"}