Coder Social home page Coder Social logo

tardisx / linkwallet Goto Github PK

View Code? Open in Web Editor NEW
77.0 5.0 2.0 3 MB

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

License: MIT License

Dockerfile 0.10% Go 65.70% Perl 0.71% JavaScript 0.04% HTML 33.06% Shell 0.39%
search search-engine self-hosted bookmarklet bookmarks bookmarks-manager full-text-search

linkwallet's Introduction

linkwallet

Go Report Card

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

Searching uses English stemming, providing matches against similar words, in both page titles and page content. Searches are lightning fast.

Search

Bookmark content is automatically re-scraped 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 ~60ms (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
  • Light on resources
    • ~21Mb binary
    • ~40Mb memory
    • ~24Mb database (600 bookmarks, full text content indexed)
  • 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)

  • Download the .deb or .rpm from the releases
  • Install using apt/dpkg/rpm
    • Automatically creates a systemd service, enabled and started
    • Runs as user linkwallet
    • Database stored in /var/lib/linkwallet

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

linkwallet's People

Contributors

tardisx avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

linkwallet's Issues

panic: strconv.ParseFloat: parsing "1.1.1.1": invalid syntax

2024/03/16 19:47:39 Executing command executable: /home/user/bin/yt-dlp) in /home/user/down
panic: strconv.ParseFloat: parsing "1.1.1.1": invalid syntax

This needs proper error handling:

    percentRE := regexp.MustCompile(`download.+?([\d\.]+)%`)
    matches = percentRE.FindStringSubmatch(s)
    if len(matches) == 2 {
            p, err := strconv.ParseFloat(matches[1], 32)
            if err == nil {
                    dl.Percent = float32(p)
            } else {
                    panic(err)
            }
    }

Accessing the scraped text?

Would it be possible to add a way to access the scraped text? I see at

info.RawText = info.RawText + e.Text + "\n"
that it is just appending all text elements together, but would it be possible to add a readability parser to get an article view saved? Basically I want to protect my bookmarks from link rot.

Thanks for the project!

Feature Request: manually set page titles

I'd like to be able to override the scraped page title.

eg, I bookmarked a particular location in google maps, but the scraped title of the bookmark is "Google Maps".

I'd like to be able to (optionally) set the title myself.

Proposal: Add Thumbnails

This is an awesome project. Looked for something like this for years.

This might be a very singular use case: I am quite visual guy and it would be great to have a thumbnail of the page in front of the actual link. Just a suggestion.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.