Skip to content

Manage all your bookmarks from the web, compile hierarchies from tags and perhaps even integrate with some web browsers

Notifications You must be signed in to change notification settings

OlafMerkert/bookmark-server

Repository files navigation

Bookmark server

currently at the very, very start of its development.

Motivation

Some months ago, I explored the very nice browser conkeror. While not quite as fast as Chromium, the main issue was the lack of decent bookmark support. And even the Chromium bookmark manager is not a very convenient tool when it comes to managing the hierarchy.

My favorite bookmark system ever was of course the one provided by the Gnome browser Epiphany (not sure it still is the same), where bookmarks would only be assigned categories, and Epiphany figured out the hierarchy of the Bookmarks menu on its own, and also tried to keep it shallow.

Goals

Check out roadmap.org for some ideas and features envisioned.

Of course, the main goal is to develop some tools and experience for writing modern web applications in Common Lisp.

How to run it

Currently, it does not do much, you can add bookmarks and view a list of all bookmarks stored in a Sqlite3 database. All the dependencies are either available in Quicklisp or on my Github.

To run the application, load it via asdf/quicklisp, then call (bookmark-web-interface:start-bookmark-server), which will automatically setup a database in /var/cache/. The entry point for the web interface is then at http://localhost:8080/bookmarks/list.

Saving and loading bookmarks

There are two funtions, save-bookmarks and load-bookmarks, which allow to dump and restore the current bookmark database in JSON format.

Stored data

We only saved the user-categories in addition to the url and title.

For now, we store this stuff in ~/tmp/bookmarks.json.

Importing Bookmarks from Chrome

Call import-chrome-bookmarks. Note that if the bookmark is already present in the database, but the title in Chrome was changed, it will not be updated (because we assume that

Computing a tree of Bookmarks

Bookmarks

A bookmark is identified by its url, and carries some additional data: a title, and user-categories which are the manually assigned categories.

Automatically computing categories

From the title and the url, we use the rules specified in bookmark-rules.lisp to assign more categories by matching regular expressions to compute title-categories resp. url-categories. Afterwards, we use a fixpoint iteration to add more categories based on logic rules, which may also be defined in bookmark-rules.lisp.

web interface for specifying the rules

Categories

Categories (or tags) are represented by symbols in the package CAT. Use the function bookmarks:cat to obtain a category from a string description. Note that in principle, you may also use symbols in different packages for identifying categories, but this probably causes trouble. Also don’t forget that categories are case-sensitive.

Managing Bookmarks

Adding categories

Removing categories

Editing the title

Searching and removing duplicates

do some kind of prefix comparison on the url?

Interface

filtering bookmarks

filtering by logic rule

filtering by set of categories

Tasks [0/6]

REST interface [0/3]

learn about REST

select REST library

serve bookmark data as JSON [0/3]

  • [ ] matching a set of tags
  • [ ] not matching a set of tags
  • [ ] all bookmarks without tags

split up the contents of web-interface.lisp

  • JavaScript Code
  • CSS code
  • HTML code

Is there something better than CSS-lite?

Merge contents of readme.org and roadmap.org, if possible

online sources for categorisation

Using a webservice to compute the categories of an url might perhaps offload the classification problem, because this problem sounds a lot like a search engine problem.

nicer navigation of category tree

Roadmap

managing bookmarks

CRUD

for bookmarks and categories

devel tools

figure out how to write this kind of application write some cool macros ;-)

integration of lisp and js code via ajax

convenient input of categories

provide some autocompletion facility to speed things up

explore UI possibilities

something Emacs like? could be very efficient, and would integrate well with conkeror

browser integration / synchronisation

perhaps an addon for chrome/chromium, maybe conkeror this is mostly important for being able to add bookmarks from open tabs/windows the other important function of bookmarks is being able to get completions of them in the address bar

synchronisation / data transfer protocol

chromium exports its bookmarks in a JSON format, this could also be useful for importing data

import existing bookmarks

automatic tagging when things come from a hierarchy?

hierarchy computation

Just give tags to your bookmarks and let the computer figure out the hierarchy Epiphany was doing that

tuning if necessary

perhaps priorities for categories (to express generality of a tag)

double entries

should we allow bookmarks to appear twice in the hierarchy? Maybe in an alternative browsing mode – “filtering view” or something

multi user capabilities

sharing of bookmarks?

possible issues

global vs local names, category assignment

authentication

even if the system stays single user, it needs some way to protect the data (at the very least against changes)

About

Manage all your bookmarks from the web, compile hierarchies from tags and perhaps even integrate with some web browsers

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published