A bookmark manager for Chrome: save any page in one click, organise it with collections and tags, and find it again. Your library stays on your device.
One build serves three surfaces:
- Popup (toolbar button): save the current page, search, recent bookmarks.
- Side panel: follows the tab you're on; widen it and the list goes to 2–3 columns.
- Full screen: the whole library, management screens, import/export and settings.
Each surface has buttons top-right to open the others.
yarn install
yarn build # outputs dist/- Open
chrome://extensions, turn on Developer mode. - Load unpacked → choose the
dist/folder. - Onboarding opens in a new tab. Pin Jupiter Jots to the toolbar.
After changing code, run yarn build again and press the reload icon on the extension card.
yarn dev serves the full-screen app at http://localhost:5173 for quick UI work. Extension APIs aren't available there, so the current tab and Chrome import use demo data.
- Toolbar button → Save this page (pencil for note/tags/collection first)
Alt+Shift+Son any page (change it atchrome://extensions/shortcuts)- Right-click → Save page to Jupiter Jots / Save link to Jupiter Jots
- Side panel +, or Save a link in full screen (paste any address)
Saving, editing, favourites, archive, trash with undo, search ("exact phrase", -exclude), collections (icons, emoji or logos; colours; reorder; archive; delete with re-homing), tags (rename, merge, duplicate suggestions, cleanup), bulk select (move, tag, archive, trash), Library health (duplicate merging), import from Chrome (reads your bookmarks directly), from an HTML bookmarks file (any browser), a Jupiter Jots backup (JSON) or CSV (Raindrop, Pocket), undo any import, export to JSON/HTML/CSV, light/dark/system theme.
Marked Coming soon in the app: account and sign-in, sync between devices, scheduled automatic backups, broken-link checking, reading reminders, the mobile app.
| Path | What |
|---|---|
src/styles/app.css |
Tailwind v4 + design tokens exported from the TaskFlow design (shadcn variables) |
src/lib/db.ts |
Dexie schema; v2 upgrade migrates v1 Jupiter Jots data in place |
src/lib/repo.ts |
All writes (bookmarks, tags, collections, prefs) |
src/lib/io.ts |
Import parsers, import runner with undo, exporters |
src/lib/platform.ts |
Every chrome.* call, with dev fallbacks |
src/lib/url.ts |
normalizeUrl, the duplicate policy |
src/hooks/useData.ts |
Live queries (bookmarks, counts, duplicates, prefs) |
src/components/ |
Shell (rail, top bar, tab bar, ext header), UI primitives, cards, icons |
src/pages/ |
One file per screen |
src/background.ts |
Context menu, save shortcut, first-run onboarding |
Permissions: bookmarks is optional and only requested when you start a Chrome import. There is no blanket host permission; page metadata is read from the active tab via activeTab.