A private bookmark library for developers, as a Chrome and Edge extension.
Save docs, repos, tools, and articles from a popup. File them into collections. Open them later without digging through a bookmarks bar. There is no public feed.
Chrome Web Store · Microsoft Edge Add-ons · Contributing · Roadmap
The live popup is on the store listings:
The public site lives in landing/. Sign in, the library, and account management are in the extension, not on the website.
- Bookmarks — title, URL, category, and tags. Open, edit, or delete from the popup.
- Collections — named groups of related links. Add into a collection from that view.
- Accounts in the popup — register, sign in, edit profile, change password, log out, delete account.
- Private by default — links stay on your account.
- Light and dark theme.
- Library first — the home screen is your collections and bookmarks. Forms appear when you add or edit.
| Piece | Stack |
|---|---|
| Extension | Manifest V3, vanilla JS, HTML, CSS |
| API | Node.js 18+, Express 5, Joi, JWT |
| Database | MongoDB (Mongoose) |
| Landing | Static HTML/CSS (landing/) |
Chrome and Edge share the same unpacked build.
Use the product
- Install from the Chrome Web Store or Microsoft Edge Add-ons.
- Open the toolbar popup and create an account or sign in.
Run from source (contributors and self-hosting) — Development setup below, or docs/development.md.
git clone https://github.com/DevOlabode/curate.git
cd curate
npm install
cp .env.example .envSet MONGO_URI, SESSION_SECRET, and JWT_SECRET. Then:
npm run dev
npm run build:extensionLoad dist/extension/ as unpacked in Chrome or Edge. In Details → Extension options, set environment to Development (http://localhost:3000).
Full walkthrough: docs/development.md. How to send a PR: CONTRIBUTING.md.
Popup --Bearer JWT--> /api/v1 --> MongoDB
The popup cannot use the website's session cookie (chrome-extension:// origin), so the extension talks to /api/v1 with a JWT in chrome.storage.local. There are no content scripts and no history permission.
| Path | Role |
|---|---|
extension/ |
MV3 popup, options, service worker |
src/shared/ |
API client used by the extension |
routes/api/ |
JSON API |
landing/ |
Static product site |
index.js |
Express API, password reset, optional Express landing |
See docs/architecture.md.
Read CONTRIBUTING.md before you open a PR.
- Fork, clone, branch (
feature/…,fix/…,docs/…). - Claim or open an issue.
- Make one focused change, test it, open a PR.
New here? Look for good first issue.
Please follow the Code of Conduct. Usage questions belong in SUPPORT.md, not in Issues. Security reports go to SECURITY.md.
Shipped: private library in the popup, Chrome and Edge listings. Next: tests, tighter auth, clearer empty states. Details: docs/roadmap.md. How decisions are made: GOVERNANCE.md.
Maintainer: Samuel Olabode (@DevOlabode).
PRs are welcome. See CONTRIBUTING.md.
MIT. See LICENSE.