You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+64-9Lines changed: 64 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,22 +16,77 @@
16
16
</p>
17
17
18
18
19
-
FavBox is a browser extension that enhances and simplifies bookmark management, without depending on external cloud storage or third-party services.
19
+
FavBox 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.
20
20
21
21
Key features:
22
22
23
23
🔄 sync with your browser profile;\
24
24
🔒 does not send your data to any third-party services;\
25
+
🎨 minimalist and clean UI; \
25
26
🏷 supports tags for easy organization;\
26
-
🔍 offers advanced search, sorting, and filtering by tags, domains, and folders;\
27
-
🌁 provides multiple display modes; \
28
-
🌗 light and dark theme.\
29
-
📖 offers page previews for quick reference;\
30
-
🟢 lets you know if a bookmark already exists, to avoid creating duplicates;\
31
-
🗑️ provides a feature to detect broken URLs;\
32
-
⌨️ provides quick access to search with hotkeys "Ctrl + Shift + K"; \
27
+
🔍 provides advanced search, sorting, and filtering capabilities based on tags, domains, folders, and webpage keywords;\
28
+
🌁 multiple display modes; \
29
+
🌗 light and dark theme;\
30
+
🗑️ includes a health check function that detects broken URLs; \
31
+
⌨️ provides quick access to search with hotkeys; \
32
+
🗒️ includes functionality for creating and managing **local** notes; \
33
33
❤️ free and open source;
34
34
35
+
### Concept
36
+
37
+

38
+
39
+
### Implementation
40
+
41
+
FavBox 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.
42
+
43
+
44
+
FavBox 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.
45
+
46
+
For example, if you have a bookmark titled `Google Chrome — Wikipedia`, to save tags across devices, extension appends them to the title like this:
47
+
`Google Chrome — Wikipedia 🏷 #wiki #browser`
48
+
49
+
This way, your tags become available on other devices without using any cloud services — only through the standard Google Chrome profile sync.
50
+
51
+
52
+
```
53
+
├── public # Static assets (icons, etc.)
54
+
│ └── icons
55
+
├── src # Source code
56
+
│ ├── assets # Global assets
57
+
│ ├── components # Common reusable app components
58
+
│ │ └── app
59
+
│ ├── ext # Browser extension includes main app, popup, content script, and service worker
60
+
│ │ ├── browser # FavBox app
61
+
│ │ │ ├── components # FavBox components
62
+
│ │ │ ├── layouts
63
+
│ │ │ └── views
64
+
│ │ ├── content # Content scripts
65
+
│ │ ├── popup # Extension PopUp window
66
+
│ │ └── sw # Service Worker of the browser extension
67
+
│ ├── helpers # Shared utilities
68
+
│ ├── parser # Library to parse HTML content
69
+
│ ├── storage # IndexedDB storage
70
+
│ │ └── idb
71
+
│ └── workers # JS Workers
72
+
└── tests
73
+
├── integration
74
+
└── unit
75
+
```
76
+
35
77
### Building
36
78
1.`pnpm run build` to build into `dist`
37
-
2. Enable dev mode in `chrome://extensions/` and `Load unpacked` extension
79
+
2. Enable dev mode in `chrome://extensions/` and `Load unpacked` extension
80
+
81
+
### Commands
82
+
83
+
-**`dev`** Start development server
84
+
-**`dev:firefox`** Firefox development build (WIP)
85
+
-**`build`** Production build
86
+
-**`test:unit`** Run unit tests
87
+
-**`test:integration`** Run integration tests
88
+
89
+
### TODO
90
+
- Use SQLite Wasm for storage (ideal for future experiments)
0 commit comments