{"id":13457168,"url":"https://github.com/hoarder-app/hoarder","last_synced_at":"2025-04-01T20:02:57.337Z","repository":{"id":224036308,"uuid":"753589979","full_name":"hoarder-app/hoarder","owner":"hoarder-app","description":"A self-hostable bookmark-everything app (links, notes and images) with AI-based automatic tagging and full text search","archived":false,"fork":false,"pushed_at":"2025-03-22T22:38:51.000Z","size":28795,"stargazers_count":14398,"open_issues_count":250,"forks_count":555,"subscribers_count":57,"default_branch":"main","last_synced_at":"2025-03-25T19:58:13.342Z","etag":null,"topics":["bookmark-manager","bookmarks","bookmarks-manager","nextjs","react-native","read-it-later","self-hosted"],"latest_commit_sha":null,"homepage":"https://hoarder.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hoarder-app.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"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},"funding":{"buy_me_a_coffee":"mbassem","github":"MohamedBassem"}},"created_at":"2024-02-06T12:28:31.000Z","updated_at":"2025-03-25T19:33:42.000Z","dependencies_parsed_at":"2024-03-18T21:47:44.162Z","dependency_job_id":"6fa1f6bb-4963-420b-8905-5aed6a706579","html_url":"https://github.com/hoarder-app/hoarder","commit_stats":{"total_commits":645,"total_committers":21,"mean_commits":"30.714285714285715","dds":"0.12558139534883717","last_synced_commit":"4454d635fa4936f5d6d28718bb3c35eb1fd06261"},"previous_names":["mohamedbassem/hoarder-app","hoarder-app/hoarder"],"tags_count":87,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoarder-app%2Fhoarder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoarder-app%2Fhoarder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoarder-app%2Fhoarder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoarder-app%2Fhoarder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hoarder-app","download_url":"https://codeload.github.com/hoarder-app/hoarder/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246701152,"owners_count":20820004,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["bookmark-manager","bookmarks","bookmarks-manager","nextjs","react-native","read-it-later","self-hosted"],"created_at":"2024-07-31T08:01:34.679Z","updated_at":"2025-04-01T20:02:57.313Z","avatar_url":"https://github.com/hoarder-app.png","language":"TypeScript","funding_links":["https://buymeacoffee.com/mbassem","https://github.com/sponsors/MohamedBassem","https://www.buymeacoffee.com/mbassem"],"categories":["TypeScript","Apps","HarmonyOS","self-hosted","react-native","Table of Contents"],"sub_categories":["Tools","Windows Manager","Bookmark Manager"],"readme":"\u003cdiv align=\"center\"\u003e\n    \u003ca href=\"https://github.com/hoarder-app/hoarder/actions/workflows/ci.yml\"\u003e\n        \u003cimg alt=\"GitHub Actions Workflow Status\" src=\"https://img.shields.io/github/actions/workflow/status/hoarder-app/hoarder/ci.yml\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/hoarder-app/hoarder/releases\"\u003e\n        \u003cimg alt=\"GitHub Release\" src=\"https://img.shields.io/github/v/release/hoarder-app/hoarder\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://discord.gg/NrgeYywsFh\"\u003e\n        \u003cimg alt=\"Discord\" src=\"https://img.shields.io/discord/1223681308962721802?label=chat%20on%20discord\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://hosted.weblate.org/engage/hoarder/\"\u003e\n        \u003cimg src=\"https://hosted.weblate.org/widget/hoarder/hoarder/svg-badge.svg\" alt=\"Translation status\" /\u003e\n    \u003c/a\u003e\n\u003c/div\u003e\n\n# \u003cimg height=\"50px\" src=\"./screenshots/logo.png\" /\u003e\n\nA self-hostable bookmark-everything app with a touch of AI for the data hoarders out there.\n\n\u003e *Hoarder is an independent, non-commercial project. It is not affiliated with, endorsed by, or connected to Hordr.app or its owners.*\n\n![homepage screenshot](https://github.com/hoarder-app/hoarder/blob/main/screenshots/homepage.png?raw=true)\n\n## Features\n\n- 🔗 Bookmark links, take simple notes and store images and pdfs.\n- ⬇️ Automatic fetching for link titles, descriptions and images.\n- 📋 Sort your bookmarks into lists.\n- 🔎 Full text search of all the content stored.\n- ✨ AI-based (aka chatgpt) automatic tagging. With supports for local models using ollama!\n- 🎆 OCR for extracting text from images.\n- 🔖 [Chrome plugin](https://chromewebstore.google.com/detail/hoarder/kgcjekpmcjjogibpjebkhaanilehneje) and [Firefox addon](https://addons.mozilla.org/en-US/firefox/addon/hoarder/) for quick bookmarking.\n- 📱 An [iOS app](https://apps.apple.com/us/app/hoarder-app/id6479258022), and an [Android app](https://play.google.com/store/apps/details?id=app.hoarder.hoardermobile\u0026pcampaignid=web_share).\n- 📰 Auto hoarding from RSS feeds.\n- 🔌 REST API.\n- 🌐 Mutli-language support.\n- 🖍️ Mark and store highlights from your hoarded content.\n- 🗄️ Full page archival (using [monolith](https://github.com/Y2Z/monolith)) to protect against link rot. Auto video archiving using [youtube-dl](https://github.com/marado/youtube-dl).\n- ☑️ Bulk actions support.\n- 🔐 SSO support.\n- 🌙 Dark mode support.\n- 💾 Self-hosting first.\n- [Planned] Downloading the content for offline reading in the mobile app.\n\n**⚠️ This app is under heavy development and it's far from stable.**\n\n## Documentation\n\n- [Installation](https://docs.hoarder.app/Installation/docker)\n- [Configuration](https://docs.hoarder.app/configuration)\n- [Screenshots](https://docs.hoarder.app/screenshots)\n- [Security Considerations](https://docs.hoarder.app/security-considerations)\n- [Development](https://docs.hoarder.app/Development/setup)\n\n## Demo\n\nYou can access the demo at [https://try.hoarder.app](https://try.hoarder.app). Login with the following creds:\n\n```\nemail: demo@hoarder.app\npassword: demodemo\n```\n\nThe demo is seeded with some content, but it's in read-only mode to prevent abuse.\n\n## Stack\n\n- [NextJS](https://nextjs.org/) for the web app. Using app router.\n- [Drizzle](https://orm.drizzle.team/) for the database and its migrations.\n- [NextAuth](https://next-auth.js.org) for authentication.\n- [tRPC](https://trpc.io) for client-\u003eserver communication.\n- [Puppeteer](https://pptr.dev/) for crawling the bookmarks.\n- [OpenAI](https://openai.com/) because AI is so hot right now.\n- [Meilisearch](https://meilisearch.com) for the full content search.\n\n## Why did I build it?\n\nI browse reddit, twitter and hackernews a lot from my phone. I frequently find interesting stuff (articles, tools, etc) that I'd like to bookmark and read later when I'm in front of a laptop. Typical read-it-later apps usecase. Initially, I was using [Pocket](https://getpocket.com) for that. Then I got into self-hosting and I wanted to self-host this usecase. I used [memos](https://github.com/usememos/memos) for those quick notes and I loved it but it was lacking some features that I found important for that usecase such as link previews and automatic tagging (more on that in the next section).\n\nI'm a systems engineer in my day job (and have been for the past 7 years). I didn't want to get too detached from the web development world. I decided to build this app as a way to keep my hand dirty with web development, and at the same time, build something that I care about and use every day.\n\n## Alternatives\n\n- [memos](https://github.com/usememos/memos): I love memos. I have it running on my home server and it's one of my most used self-hosted apps. It doesn't, however, archive or preview the links shared in it. It's just that I dump a lot of links there and I'd have loved if I'd be able to figure which link is that by just looking at my timeline. Also, given the variety of things I dump there, I'd have loved if it does some sort of automatic tagging for what I save there. This is exactly the usecase that I'm trying to tackle with Hoarder.\n- [mymind](https://mymind.com/): Mymind is the closest alternative to this project and from where I drew a lot of inspirations. It's a commercial product though.\n- [raindrop](https://raindrop.io): A polished open source bookmark manager that supports links, images and files. It's not self-hostable though.\n- Bookmark managers (mostly focused on bookmarking links):\n    - [Pocket](https://getpocket.com): Pocket is what hooked me into the whole idea of read-it-later apps. I used it [a lot](https://blog.mbassem.com/2019/01/27/favorite-articles-2018/). However, I recently got into home-labbing and became obsessed with the idea of running my services in my home server. Hoarder is meant to be a self-hosting first app.\n    - [Linkwarden](https://linkwarden.app/): An open-source self-hostable bookmark manager that I ran for a bit in my homelab. It's focused mostly on links and supports collaborative collections.\n    - [Omnivore](https://omnivore.app/): Omnivore is pretty cool open source read-it-later app. Unfortunately, it's heavily dependent on google cloud infra which makes self-hosting it quite hard. They published a [blog post](https://docs.omnivore.app/self-hosting/self-hosting.html) on how to run a minimal omnivore but it was lacking a lot of stuff. Self-hosting doesn't really seem to be a high priority for them, and that's something I care about, so I decided to build an alternative.\n    - [Wallabag](https://wallabag.it): Wallabag is a well-established open source read-it-later app written in php and I think it's the common recommendation on reddit for such apps. To be honest, I didn't give it a real shot, and the UI just felt a bit dated for my liking. Honestly, it's probably much more stable and feature complete than this app, but where's the fun in that?\n    - [Shiori](https://github.com/go-shiori/shiori): Shiori is meant to be an open source pocket clone written in Go. It ticks all the marks but doesn't have my super sophisticated AI-based tagging. (JK, I only found about it after I decided to build my own app, so here we are 🤷).\n\n## Translations\n\nHoarder uses Weblate for managing translations. If you want to help translate Hoarder, you can do so [here](https://hosted.weblate.org/engage/hoarder/).\n\n## Support\n\nIf you're enjoying using Hoarder, drop a ⭐️ on the repo!\n\n\u003ca href=\"https://www.buymeacoffee.com/mbassem\" target=\"_blank\"\u003e\u003cimg src=\"https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png\" alt=\"Buy Me A Coffee\" style=\"height: 60px !important;width: 217px !important;\" \u003e\u003c/a\u003e\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=hoarder-app/hoarder\u0026type=Date)](https://star-history.com/#hoarder-app/hoarder\u0026Date)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhoarder-app%2Fhoarder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhoarder-app%2Fhoarder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhoarder-app%2Fhoarder/lists"}