{"id":13406908,"url":"https://github.com/dd3v/favbox","last_synced_at":"2025-07-09T00:31:41.176Z","repository":{"id":65778766,"uuid":"583641182","full_name":"dd3v/favbox","owner":"dd3v","description":"❤️FavBox is a browser extension that simplifies and improves bookmark management, without relying on external cloud storage or third-party services","archived":false,"fork":false,"pushed_at":"2024-05-04T11:12:57.000Z","size":11029,"stargazers_count":145,"open_issues_count":3,"forks_count":15,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-07-31T19:55:03.839Z","etag":null,"topics":["bookmarks","bookmarks-manager","browser-extension","chrome-extension","indexeddb","productivity","sideproject","vue3"],"latest_commit_sha":null,"homepage":"https://chrome.google.com/webstore/detail/favbox/eangbddipcghohfjefjmfihcjgjnnemj","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dd3v.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2022-12-30T12:19:53.000Z","updated_at":"2024-07-24T04:03:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"aaed1b00-afec-4764-9078-d1c6138dfee9","html_url":"https://github.com/dd3v/favbox","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dd3v%2Ffavbox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dd3v%2Ffavbox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dd3v%2Ffavbox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dd3v%2Ffavbox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dd3v","download_url":"https://codeload.github.com/dd3v/favbox/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225470738,"owners_count":17479368,"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":["bookmarks","bookmarks-manager","browser-extension","chrome-extension","indexeddb","productivity","sideproject","vue3"],"created_at":"2024-07-30T19:02:42.789Z","updated_at":"2025-07-09T00:31:41.157Z","avatar_url":"https://github.com/dd3v.png","language":"Vue","funding_links":[],"categories":["Vue"],"sub_categories":[],"readme":"# FavBox\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://github.com/dd3v/favbox/issues\"\u003e\u003cimg src=\"https://img.shields.io/github/issues/dd3v/favbox\" alt=\"issues\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/dd3v/favbox\"\u003e\u003cimg src=\"https://img.shields.io/github/package-json/v/dd3v/favbox\" alt=\"ver\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/dd3v/favbox\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-MIT-yellow.svg\" alt=\"license\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/dd3v/favbox\"\u003e\u003cimg src=\"https://img.shields.io/badge/Made%20With-Love-orange.svg\" alt=\"love\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n![image](app_demo.png) \n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://chrome.google.com/webstore/detail/favbox/eangbddipcghohfjefjmfihcjgjnnemj\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/Google%20Chrome-4285F4?style=for-the-badge\u0026logo=GoogleChrome\u0026logoColor=white\"\u003e\n\u003c/a\u003e\n\u003c/p\u003e\n\n\nFavBox is a local-first **experimental** browser extension that enhances and simplifies bookmark management without cloud storage or third-party services. It extends your browser's native bookmarking features.\n\nKey features:\n\n🔄 sync with your browser profile;\\\n🔒 does not send your data to any third-party services;\\\n🎨 minimalist and clean UI; \\\n🏷 supports tags for easy organization;\\\n🔍 provides advanced search, sorting, and filtering capabilities based on tags, domains, folders, and webpage keywords;\\\n🌁 multiple display modes; \\\n🌗 light and dark theme;\\\n🗑️ includes a health check function that detects broken URLs; \\\n⌨️ provides quick access to search with hotkeys;  \\\n🗒️ includes functionality for creating and managing **local** notes; \\\n❤️ free and open source;\n\n### Concept\n\n![image](concept.png) \n\n### Implementation\n\nFavBox scans all bookmarks in the browser, then makes requests to the saved pages and extracts data from them such as title, description, image, and meta tags to improve the search. All the data is stored in local storage IndexedDB. The extension also tracks all browser events related to bookmarks and synchronizes the data. It only extends the standard functionality and does not attempt to replace it. You can work with bookmarks both through the extension and the native browser’s built-in bookmark features.\n\n\nFavBox is a fully local application. To keep tags synced across devices, it uses a trick. Since bookmarks are synchronized between devices, to keep tags synchronized, the app adds them to the page title.\n\nFor example, if you have a bookmark titled `Google Chrome — Wikipedia`, to save tags across devices, extension appends them to the title like this:\n`Google Chrome — Wikipedia 🏷 #wiki #browser`\n\nThis way, your tags become available on other devices without using any cloud services — only through the standard Google Chrome profile sync.\n\n\n```\n├── public                 # Static assets (icons, etc.)\n│   └── icons\n├── src                    # Source code\n│   ├── assets             # Global assets\n│   ├── components         # Common reusable app components\n│   │   └── app\n│   ├── ext                # Browser extension includes main app, popup, content script, and service worker\n│   │   ├── browser        # FavBox app\n│   │   │   ├── components # FavBox components\n│   │   │   ├── layouts   \n│   │   │   └── views\n│   │   ├── content        # Content scripts\n│   │   ├── popup          # Extension PopUp window\n│   │   └── sw             # Service Worker of the browser extension\n│   ├── helpers            # Shared utilities\n│   ├── parser             # Library to parse HTML content\n│   ├── storage            # IndexedDB storage\n│   │   └── idb\n│   └── workers            # JS Workers\n└── tests\n    ├── integration\n    └── unit\n```\n\n### Building\n1. `pnpm run build` to build into `dist`\n2. Enable dev mode in `chrome://extensions/` and `Load unpacked` extension\n\n### Commands\n\n- **`dev`**  Start development server  \n- **`dev:firefox`**  Firefox development build (WIP)\n- **`build`**  Production build  \n- **`test:unit`** Run unit tests  \n- **`test:integration`**   Run integration tests  \n\n### TODO\n- Use SQLite Wasm for storage (ideal for future experiments)\n- Improve transaction implementation (ensure reliability \u0026 better performance)\n- The extension already uses a polyfill to maintain compatibility with other browsers. It would be good to test this in Firefox. (WIP)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdd3v%2Ffavbox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdd3v%2Ffavbox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdd3v%2Ffavbox/lists"}