Settings

Theme

Show HN: Linkding, a self-hostable bookmark service

github.com

114 points by sissbruecker 6 years ago · 35 comments

Reader

sissbrueckerOP 6 years ago

Linkding is a very lean bookmark service that provides bookmark management, tag categorization and search. It is built to be self-hosted and runs perfectly fine on a Raspberry Pi. It also provides an import/export function that is compatible with other services like Pinboard.in.

After using Pinboard.in for several years I noticed that I basically only ever use the features described above. Also while I like the minimal approach and the quick UI of Pinboard, it could just look a little bit nicer. So I took that opportunity to make a hobby project out of building such a service myself while also learning something new. I decided on Python and Django as stack, as I never really used Python and Django looked impressive. Building the application took me around 2 weeks. I implemented the features above, added a basic CSS framework with minimal tweaks so the UI looks nice and made everything work on mobile. My take-aways from the project are that Django is really awesome. Django is a batteries-included web framework and provides pretty much everything you'll ever need OOTB. The documentation is among the best I have ever seen. Also as someone who has been mostly working on SPAs / rich clients for the last decade I have to admit it was a sobering experience how quickly you can get results with an integrated server-side framework like this. I'll definitely consider that approach more from now on.

If you are interested, the application is basically ready-for-use and easily installed with Docker. I have been running it for 6 months now in a Docker container on my Raspberry Pi and in terms of just dumping links into a storage it suffices for me. I provided a demo instance with open registration here: https://demo.linkding.link

  • trungdq88 6 years ago

    Nice project! But can as well provide a dummy account in the demo because it's damn difficult to register for anything on my phone (especially with complicated password rules)

    • dmxt 6 years ago

      Please start using password manager for your sanity sake.

    • sissbrueckerOP 6 years ago

      I added a demo account:

      username=linkdemo password=checkitout123

      Disclaimer that I'm not responsible for the content that other people add to that account :)

tdhz77 6 years ago

Not a fan of the name. I read it as linked in, thinking it was a bookmark service by linked in at first. Perhaps, the counter positive, dinkling.

  • choward 6 years ago

    I honestly didn't think of linked in whatsoever when I read that name.

  • sissbrueckerOP 6 years ago

    I'm sorry about the confusion, it definitely wasn't my intention to bounce off the LinkedIn brand to promote this. As explained in the README, it's really just a cute name, especially in german.

    I like your suggestion too, but I would hold off from renaming unless I can say with certainty that it is a common issue.

    • kick 6 years ago

      linkding is a fun and cute name. Please don't change it!

      • KajMagnus 6 years ago

        Maybe LinkDing with an uppercase 'D'? (Then still works in the same way in German ? :-))

  • time0ut 6 years ago

    I like the name, but it does sound like linked in in my head.

kastden 6 years ago

This looks very nice! It’s not mentioned in the README, so I’m wondering how persistence is handled? EDIT: To be clear, I see backups is mentioned, but I’m wondering if it’s a database file like sqlite3 or something else.

  • sissbrueckerOP 6 years ago

    Yes, currently it uses a SQLite3 DB for storage. The DB is created or updated with Djangos migrate command which runs when the Docker container starts. The DB file can be found in the data folder.

    Thanks for your comment, it made me realize I stopped thinking about persistence at some point and now I had to look up on SQLite usage in production. However for the apps current use-case of handling one account / one person it seems fine to use SQLite.

    • kastden 6 years ago

      Thanks for the explanation! I think SQLite is fine for this too.

      My use case would be running this on AWS ECS, but since this wouldn't get written to very often (probably) and the file hopefully wouldn't be very big either, I could just have the container or a sidecar pull it from S3 on startup and sync it at regular intervals and on shutdown.

    • catalogia 6 years ago

      SQLite is a great choice for a project like this. Particularly for a project like this, dealing with something as intimate as bookmarks, it's nice to not have to worry about how I'd get my data out of it should I ever decide to stop using the software. That provides some nice peace of mind.

      Incidentally Firefox also uses SQLite for storing bookmarks (among other things.)

iudqnolq 6 years ago

Want to call our your password policies. I was on mobile and wanted to see what it was like without opening up my password manager and anything short or stupid (qwerty, ...) was blocked. Was slightly irritating and yet delightful and suggested to me you have a great attention to detail. Will give it a shot!

Edit: originally s/stupid/dumb, but HN changes that to "db". Ha!

  • sissbrueckerOP 6 years ago

    As the other commenter pointed out, those are just the standard policies provided by Django ;)

  • amiraliakbari 6 years ago

    I guess those are Django's default password policies and not specific to this project.

mekster 6 years ago

It would work well if a browser's share button can send a link directly there.

I use NextCloud's bookmark on Android and it kind of does that but it's pretty basic and there are many rooms for improvements.

arejaytee 6 years ago

Very nice, a history of when bookmarks were added would be a great addition.

dvduval 6 years ago

I tried to drag the bookmarklet, but didn't seem to work in Google Chrome?

  • sissbrueckerOP 6 years ago

    Thanks for checking it out dvduval. Just to make sure, you have to drag it to the bookmark bar specifically, and not the toolbar on the right side of the address field. Here is a (linkding unrelated) video that shows the general idea: https://www.youtube.com/watch?v=dauK_-jcqP8

    I think by default Chrome hides the bookmark bar when you are on a page. You can toggle the bookmark bar to be shown permanently from the Chrome Settings. If you're on a Mac the shortcut is CMD+Shift+B, on Windows it should be CTRL+Shift+B.

    If that doesn't solve your problem - do you have any specific settings in Chrome, like Javascript disabled?

bluejedi 6 years ago

hi.. nice project, i can not open the demo right now but seems like a spectre css powered design, i really want to try the demo, guess i have to use play with docker right now

  • sissbrueckerOP 6 years ago

    Hi! Yes it indeed uses Spectre CSS which was a very positive experience as well. I actually donated a little to the author since it was exactly what I was looking for.

    Docker might seem intimidating at first, but it really isn't hard to get started if you only want to spin up a container.

kubbity 6 years ago

Is there an account for demo?

  • sissbrueckerOP 6 years ago

    You can create your own account. There is a Register link at the bottom right of the login form.

    FYI the email is not used, the registration completes immediately without confirmation.

dang 6 years ago

This post got hit by a spam filter. Sorry about that; those are tuned more aggressively for new accounts. Can you email us at hn@ycombinator.com so we can give you some tips about how to repost it?

ablekh 6 years ago

Poor naming, in my opinion. Don't be surprised to receive a letter from LinkedIn's legal team. I suggest renaming the project ASAP to avoid any potential trademark-related issues.

  • choward 6 years ago

    That's pretty ridiculous. If Microsoft complained about this I would lose a lot of respect for them. This doesn't threaten linked in whatsoever. What other names can't be used because linked in exists? The possibilities are endless.

  • sissbrueckerOP 6 years ago

    Sorry, it was not my intention to bounce off the LinkedIn brand. Also I have no plans to build a product or brand out of this. Thanks for your warning, but with the information I currently have following up on it seems a bit extreme.

    • ablekh 6 years ago

      No need to apologize, it was just a friendly "better safe, then sorry" warning (not sure why it was downvoted). Anyway, you're welcome. If you have no serious product/brand plans, perhaps, you have nothing to worry about.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection