Documents and notes decision
Pinboard
The core loop is small enough for a capable coding agent to produce a useful local version in one sitting. For Pinboard, run a fast private bookmark archive with tags, notes, and full-text search. The hard boundary is hosted longevity, simple api, archive service, and zero-maintenance reliability, plus capture polish, sync, and content partnerships.
Visit website↗Open-source builds that already do this
Every project below is open source and already does this job today. Fork one, self-host it, or take the parts you need — the build prompt further down assumes an empty file, and this is the shortcut past that. Licences differ; check the one on each card before you ship.
What a replacement has to do
- Save permitted web pages into a fast private bookmark archive, extract readable text, tag and annotate entries, search full text, and export the archive in open formats.
What it still won’t have
- hosted longevity, simple API, archive service, and zero-maintenance reliability
- publisher bypasses
- cross-device mobile capture
- high-quality recommendation graph
- licensed full-text feeds
What remains hard
- Execution quality
First-year cost
The build hours below are a category default, not an estimate for this product. Change them to your own numbers and the comparison follows.
Keep paying
Paying is—cheaper in year one.
On cash alone, building overtakes the subscription at 1 seat.
Money you would actually spend
Time you would spend
—
What you would spend
What we assumed
The verdict above measures whether you could build it. This one is only about money.
Runnable build prompt
Build a personal replacement for Pinboard in an empty repository. Use Next.js 15, TypeScript, SQLite, Drizzle ORM, Readability.js, and a local background worker; do not offer alternative stacks. The core loop is: save permitted web pages into a fast private bookmark archive, extract readable text, tag and annotate entries, search full text, and export the archive in open formats. Make the first run work locally with one documented command. Store all user data locally by default and make export straightforward. Put secrets in .env, ship .env.example, and never commit credentials. Support manual URL save, RSS or Atom subscriptions, OPML import, and a simple bookmarklet. Fetch politely with a clear user agent, rate limits, conditional requests, and robots-aware behavior. Extract title, author, date, canonical URL, readable HTML, and selected images. Provide inbox, unread, archive, favorites, tags, highlights, notes, and full-text search. Keep the original URL prominent and never attempt to bypass authentication or paywalls. Export OPML, bookmarks HTML, Markdown, and a complete JSON backup. Include clear empty, loading, success, and recoverable error states. Add input validation, safe filenames, and graceful handling of unavailable APIs. Write focused tests for the core transformation and one end-to-end happy path. Create a README with setup, architecture, permissions, data location, and backup steps. Do not add accounts, billing, telemetry, analytics, or a hosted control plane. Deliberately leave out paywall circumvention. Deliberately leave out licensed publisher content and recommendation networks. Deliberately leave out native mobile clients and seamless commercial sync. Finish by running the tests and listing the exact commands used.





