Hi all,

I am looking for a local database that is easily accessible via the command line.

It can be SQL or non-SQL

Whats my use case? I want to use it kinda like a second brain. A place to save my notes, my todo lists, my book reading lists, links / articles to read later, etc.

I want it to be a good CLI citizen so that I can script its commands to create simpler abstractions, rather than writing out the full queries every time.

Maybe sqlite is what I need, but is that ideal for my use case?

Edit: removed notes, as evidently they aren’t suitable for this and aren’t like the rest.

  • csm10495@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    6
    ·
    2 months ago

    Unless your lists are 1000s of items long, just use text files in a folder.

    Could even go fancy and use markdown.

    • matcha_addict@lemy.lolOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      2 months ago

      I definitely considered this approach. The only problem is it is difficult to represent linking items to each other. For example, dependent tasks or sub tasks.

  • Anna@lemmy.ml
    link
    fedilink
    arrow-up
    4
    ·
    2 months ago

    I wouldn’t recommend a DB for note taking purpose. You can use Markdown with vim.

  • cy_narrator@discuss.tchncs.de
    link
    fedilink
    arrow-up
    4
    ·
    2 months ago

    Using a database for notes is like going 2km in a plane.

    You can use any relational database for this though but why would you subject yourself to this?

  • elltee@lemmy.one
    link
    fedilink
    arrow-up
    3
    ·
    2 months ago

    Joplin can do all that and has: Plugin support for nearly anything you want Runs on sqlite if you want to access the data direct Is 100% open source.

  • Daeraxa@lemmy.ml
    link
    fedilink
    arrow-up
    2
    ·
    2 months ago

    Joplin is a note taking app that stores its data in an sqlite database (easy to query but not a good idea to write to it) but there is also a command line version and both versions support access via a data API.

  • terminal@lemmy.ml
    link
    fedilink
    arrow-up
    1
    ·
    2 months ago

    I think you would be better off using something like org-roam. It’s all text so script can still be used and it can be searched fast with ripgrep. Also org mode has loads of features that a homegrown system will never be able to catch up with

  • gramgan@lemmy.ml
    link
    fedilink
    arrow-up
    1
    ·
    2 months ago

    Hey!

    I’ve wanted something very similar—specifically, a plain-text database. I recently came across GNU recutils, which I haven’t had time to play around with yet, but which seems like it fits the bill (at least for me). There’s a couple YouTube videos on it—I encourage you to check it out!

  • pe1uca@lemmy.pe1uca.dev
    link
    fedilink
    arrow-up
    1
    ·
    2 months ago

    I can’t imagine this flow working with any DB without an UI to manage it.
    How are you going to store all that in an easy yet flexible way to handle all with SQL?

    A table for notes?
    What fields would it have? Probably just a text field.
    Creating it is simple: insert “initial note”… How are you going to update it? A simple update to the ID won’t work since you’ll be replacing all the content, you’d need to query the note, copy it to a text editor and then copy it back to a query (don’t forget to escape it).
    Then probably you want to know which is your oldest note, so you need to include created_at and updated_at fields.
    Maybe a title per note is a nice addition, so a new field to add title.

    What about the todo lists? Will they be stored in the same notes table?
    If so, then the same problem, how are you going to update them? Include new items, mark items as done, remove them, reorder them.
    Maybe a dedicated table, well, two tables, list metadata and list items.
    In metadata almost the same fields as notes, but description instead of text. The list items will have status and text.

    Maybe you can reuse the todo tables for your book list and links/articles to read.

    so that I can script its commands to create simpler abstractions, rather than writing out the full queries every time.

    This already exists, several note taking apps which wrap around either the filesystem or a DB so you only have to worry about writing your ideas into them.
    I’d suggest to not reinvent the wheel unless nothing satisfies you.

    What are the pros of using a DB directly for your use case?
    What are the cons of using a note taking app which will provide a text editor?

    If you really really want to use a DB maybe look into https://github.com/zadam/trilium
    It uses sqlite to store the notes, so maybe you can check the code and get an idea if it’s complicated or not for you to manually replicate all of that.
    If not, I’d also recommend obsidian, it stores the notes in md files, so you can open them with any software you want and they’ll have a standard syntax.

  • h0bbl3s@lemmy.world
    link
    fedilink
    arrow-up
    1
    ·
    edit-2
    2 months ago

    They aren’t exactly CLI but I really like obsidian for taking notes. It’s not open source though. Logseq is good too and is OSS. Both use markdown for formatting so if you are familiar with writing pages on GitHub you’ll have no trouble. Even if not markdown is super easy to learn. That and all of your data stays local and in open formats. I edit my stuff in a terminal anyway.

    Just look up obsidian OSINT on YouTube you’ll find some good stuff on how to use it.

    Another thought is just use markdown files and a directory structure in a private git repo. You’d be able to interact with it locally entirely in the terminal with vim etc and have the option of going online and searching or organizing etc. You could probably even use a cli browser for that part if you wanted.

  • steeznson@lemmy.world
    link
    fedilink
    arrow-up
    1
    ·
    2 months ago

    sqlite is exactly what you want. You can even load a CSV file directly into a new table. Everything is a string, it’s extremely fast and ubiquitous on moderns OS’s.

  • k4j8@lemmy.world
    link
    fedilink
    arrow-up
    1
    ·
    2 months ago

    No command line interface, but if you’re focus is a single solution with a consistent interface for lists, to-dos, etc., AppFlowy might be what you are looking for.

    I’m a huge fan of NocoDB, including their kanban views, group by options, and forms. You could use the GUI to create the tables and relations and then use the REST API to quickly update from the command line. It can use any database for its storage, so you could still create scripts or read the data for specific needs.

  • tmk@social.lugal.io
    link
    fedilink
    arrow-up
    0
    ·
    2 months ago

    @matcha_addict Anything beyond SQLite is too heavy, but if it were me I would use a lightweight wiki like dokuwiki. Having to run SQL to do all these sorts of things sounds like it would just get in the way of both getting and consuming your thoughts.

    • matcha_addict@lemy.lolOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 months ago

      I don’t think it would suffice. It would work for notes, but I want to also have a todo list in there, for example. Be able to check things off, query by due date, by assignee or task, etc.

      • atzanteol@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        1
        ·
        2 months ago

        For todo stuff there’s the excellent “todo-txt” for cli use. Though not great for notes. Perhaps separate tools would be fine?