kalekundert / exmemo

Lab notebook for people who like the command line.
GNU General Public License v3.0
11 stars 2 forks source link

Create interactive web server #12

Open kalekundert opened 3 years ago

kalekundert commented 3 years ago

Curently, the lab notebook is hosted as a static site; it's basically just a graphical way to view notebook entries. However, it would be nice if the web interface was more interactive and more customized to the lab notebook application. Some specific features that would be nice:

The underlying directory structure would remain the single source of truth, and "edit" actions by the web server would directly operate on the file system. Some more thoughts about the implementation:

Probably the first thing to play with is the Flask/Sphinx linkage. If I can get that to work, the rest should be pretty straight-forward and incremental.

kalekundert commented 3 years ago

I can (and should) start this project by implementing the new kanban-inspired features (tags, planned/current/complete) in the CLI interface. This should be pretty straight-forward, except for having to replace the .id file with a .meta directory, and I'll be able to start using those features right away.

kalekundert commented 3 years ago

Experiment pages:

kalekundert commented 3 years ago

This article has some information on search engine packages available in python: https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-xvi-full-text-search

Packages include: Elasticsearch, Apache Solr, Whoosh, Xapian, Sphinx

After briefly looking into this, I think whoosh is the best option. It's probably the least performant, and also doesn't seem to be that actively maintained. But all the other options would dramatically complicate installation, because they are written in other languages (e.g. java, c++) and require running/communicating with a server process. Whoosh is pure-python and has no separate server. Since exmemo is meant to be installed by end-users, having a straight-forward installation process is the most important consideration.

kalekundert commented 3 years ago

Kanban-style statuses I'd like to have:

Worried I have too many states, some of which may not be very useful. But for now I'm just going to cater to my own needs, and worry about generalizing later. Ex memo is somehwat opinionated in general, so this isn't even inconsistent with the bigger picture.

Need to add --prereq argument to exmemo note new, that will automatically add the new experiment as a prerequisite to its parent.


Kanobo seems to have the following statuses:

kalekundert commented 3 years ago

New commands: