linkwallet/README.md
Justin Hawkins d2aa6fdd2f Merge the feature branch to introduce the bleve indexing.
commit e8c2bc7e4ade56f893c8fb23eac4cdb754555389
Author: Justin Hawkins <justin@hawkins.id.au>
Date:   Sat May 3 12:36:18 2025 +0930

    Clean up menu/version

commit 1993533a4613a5db7bbb2ecd6b7a2694f48acd52
Author: Justin Hawkins <justin@hawkins.id.au>
Date:   Sat May 3 12:31:50 2025 +0930

    Update README

commit 044cc830dcb3d05b43ab770e8ea42959873823dd
Author: Justin Hawkins <justin@hawkins.id.au>
Date:   Sat May 3 12:22:33 2025 +0930

    No longer needed

commit a7c37ad7c5c12fcac1d5589271e0e66af4f086e8
Author: Justin Hawkins <justin@hawkins.id.au>
Date:   Sat May 3 12:14:59 2025 +0930

    Fixup version handling

commit ade0b748e978ce1d9533a928bd6369f1714ca8a8
Author: Justin Hawkins <justin@hawkins.id.au>
Date:   Sat May 3 11:58:15 2025 +0930

    Use the correct analyser for searches

commit e5a65cf5cfdd82ba7aa3d2470c12c6e82c851a3f
Author: Justin Hawkins <justin@hawkins.id.au>
Date:   Fri May 2 19:51:54 2025 +0930

    Fix version in template

commit 0171be0ee4d11796cfc0419a00b412f8037f4d97
Author: Justin Hawkins <justin@hawkins.id.au>
Date:   Fri May 2 19:51:41 2025 +0930

    Rescrape all links if needed on startup

commit ae654998f751c3883f8b3bd76005afae38209edf
Author: Justin Hawkins <justin@hawkins.id.au>
Date:   Fri May 2 19:51:25 2025 +0930

    Spelling

commit bfe9bbee028e5515be5b6d406e9090c61cdbbebd
Author: Justin Hawkins <justin@hawkins.id.au>
Date:   Fri May 2 19:34:06 2025 +0930

    Make goreleaser set the version

commit 4436313413f52b2b29a08e510ac4496016aae8a0
Author: Justin Hawkins <justin@hawkins.id.au>
Date:   Fri May 2 11:43:58 2025 +0930

    Make release matrix sane

commit 7b467ecee7a3d74ba194b723034dd16bf1c53b53
Author: Justin Hawkins <justin@hawkins.id.au>
Date:   Fri May 2 11:40:07 2025 +0930

    I hate YAML, so much.

commit b578e0f044e754ca70cd4ace95fdc6dc3cdcfe07
Author: Justin Hawkins <justin@hawkins.id.au>
Date:   Thu May 1 23:47:07 2025 +0930

    Update goreleaser

commit fba84f0827d35359a450fb847b03f5fa78960a1f
Author: Justin Hawkins <justin@hawkins.id.au>
Date:   Thu May 1 23:45:46 2025 +0930

    Update version

commit e4edb08bd19c560b6f2ea5e572d5950896ac6062
Author: Justin Hawkins <justin@hawkins.id.au>
Date:   Thu May 1 23:42:59 2025 +0930

    Deps

commit 58b6692d1b397de91f3531c35c6518fb58ad285a
Author: Justin Hawkins <justin@hawkins.id.au>
Date:   Thu May 1 23:39:51 2025 +0930

    Mostly done, first cut

commit badbe5e92ffa415b444535eca385d87fa00afa68
Author: Justin Hawkins <justin@hawkins.id.au>
Date:   Sun Apr 27 20:28:37 2025 +0930

    Remove unused code

commit 903240dd18cdcd7722705f04ff40b30661969d4d
Author: Justin Hawkins <justin@hawkins.id.au>
Date:   Sun Apr 27 20:26:19 2025 +0930

    Update deps

commit de90b9951a82c420be0588e6c2c2b63fe0b10eff
Author: Justin Hawkins <justin@hawkins.id.au>
Date:   Sun Apr 27 20:21:33 2025 +0930

    Keep on bleving

commit 9b15528510a06661237249eaf7bf64c3ce71fc3c
Author: Justin Hawkins <justin@hawkins.id.au>
Date:   Fri Apr 25 23:57:04 2025 +0930

    Start of blevification
2025-05-03 12:37:44 +09:30

3.1 KiB

linkwallet

Go Report Card

A self-hosted bookmark database with full-text page content search.

linkwallet uses the Bleve indexing library, providing excellent support for free-text queries over the content of all your bookmarked pages.

Search

linkwallet indexes the page content, and automatically re-scrapes the pages periodically. Tags can be applied (though with the full-text search they are often not needed). Bookmarks can be easily managed, and can be imported or exported in bulk.

Admin

Bookmarks can be added with two clicks via the bookmarklet.

Bookmarklet

Feature list

  • Simple cross-platform single binary deployment
    • or docker if you prefer
  • Bookmarklet, single click to add a bookmark from any webpage
  • Full-text search
    • Bookmark content is scraped and indexed locally
    • Page content periodically refreshed automatically
    • Interactively search across titles and content
    • Rippingly fast results, as you type
      • full text search ~30ms (over full text content of 600 bookmarks)
    • No need to remember how you filed something, you just need a keyword or two to discover it again
  • Embedded database, no separate database required
  • Extremely light on resources
  • Easily export your bookmarks to a plain text file - your data is yours

Installation

Docker

  • Copy the docker-compose.yml-sample to a directory somewhere
  • Rename to docker-compose.yml and edit to your needs
    • In most cases, you only need to change the path to the /data mountpoint.
  • Run docker-compose up -d

To upgrade:

  • docker-compose pull
  • docker-compose up -d

Packages (deb/rpm)

[not yet migrated to new goreleaser - please message me if you need packages]

Binary

  • Download the appropriate binary from the releases page
  • Install somewhere on your system
  • Run ./linkwallet -db-path /some/path/xxxx.db where /some/path/xxxx.db is the location of your bookmarks database (will be created if it does not yet exist)

Source

  • Checkout the code
  • go build cmd/linkwallet/linkwallet.go

Using

linkwallet is a 100% web-driven app. After running, hit the web interface on port 8109 (docker using the sample docker-compose.yml) or 8080 (default on binary).

Change the port number by setting the PORT environment variable.

If you put linkwallet on a separate machine, or behind a reverse proxy, go into the config page and set the correct BaseURL parameter, or the bookmarklets will not work.

Roadmap

  • More options when managing links
    • sorting
  • More tag options
    • bookmarklet with pre-filled tags
    • search/filter on tags