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

    Clean up menu/version

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

    Update README

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

    No longer needed

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

    Fixup version handling

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

    Use the correct analyser for searches

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

    Fix version in template

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

    Rescrape all links if needed on startup

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

    Spelling

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

    Make goreleaser set the version

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

    Make release matrix sane

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

    I hate YAML, so much.

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

    Update goreleaser

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

    Update version

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

    Deps

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

    Mostly done, first cut

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

    Remove unused code

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

    Update deps

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

    Keep on bleving

commit 9b15528510
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
2022-06-02 18:50:44 +09:30
2022-08-21 13:24:52 +09:30
2022-05-28 16:43:45 +09:30
2022-05-28 20:13:55 +09:30

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
Description
A self-hosted bookmark database with full-text page content search
Readme MIT 3.1 MiB
v0.1.1 Latest
2025-05-04 11:47:18 +09:30
Languages
Go 67.3%
HTML 32.2%
Shell 0.4%