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
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)
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.
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.
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.
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!
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?
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
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.
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?
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.
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.
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.
sissbruecker|6 years ago
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
tdhz77|6 years ago
choward|6 years ago
sissbruecker|6 years ago
I like your suggestion too, but I would hold off from renaming unless I can say with certainty that it is a common issue.
time0ut|6 years ago
kastden|6 years ago
sissbruecker|6 years ago
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.
iudqnolq|6 years ago
Edit: originally s/stupid/dumb, but HN changes that to "db". Ha!
sissbruecker|6 years ago
amiraliakbari|6 years ago
mekster|6 years ago
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
dvduval|6 years ago
sissbruecker|6 years ago
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
sissbruecker|6 years ago
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
sissbruecker|6 years ago
FYI the email is not used, the registration completes immediately without confirmation.
dang|6 years ago
ablekh|6 years ago
choward|6 years ago
sissbruecker|6 years ago