1. 4

I was inspired by freetonik and their app textpod. I wanted to add a few features that I needed for my existing workflow, and also begin to learn Python, so used this opportunity to replicate some functionality, and add the desired features.

  • Notes taken via Markdown format in “One Big Text File”
  • Reverse order addition so notes are at the top of the file
  • Rendered in HTML for usability and transportability
  • Task tracking made easier with summarized tasks section
  • Ability to attach images (beta, needs some work)
  • Ability to store local linked site copies (Great idea from freetonik!!)

Like textpod, you can run multiple instances, from the directory where you’d like the notes.md to be created. My workflow has been a notes.md file in each “project” folder for my day job, hence my original interest.

noteflow will spawn a new webserver instance on a new port as needed, and create an assets folder for stored images and site archives.

Installation
  • pip install noteflow

OR:

  • brew tap Xafloc/noteflow
  • brew install noteflow

Note: I am no seasoned develop, be kind ;-)

    1. 2

      I like the idea and wish you all the best with the work and learning. Idea: can we use this for read it later and bookmarks mgmt? I’m building something similar in python which starts from the idea of a bookmarking tools and links/ blogroll sharing and later will mix tasks and note taking. You start from the other side of the path I envision but you seem to have good ideas i would likely use.

      1. 2

        Thanks much! Can you expand a bit more on the read-it-later? Right now it’s very “current folder” centric, and all notes/tasks/site archives, are stored locally in that folder it is executed from. Do you envision this feature to span “all” instances ever executed locally, with a central repository, and then linked across all instances similar to how my tasks are? Do you envision the read-it-later to be a link to the original site, or a local “archive” of the site to be read later?

        Happy to take a stab at something once clarified :)

        1. 1

          Thanks for the feedback ! I currently take a text and html archive of every link collected, associate tags automatically or ad-hoc to links based on keywords found in content/title/url and allow users to edit and make comments to any link. I’m going all or nothing approach currently for folders, so likely one instance only running next to the data which is found in the subfolders. I’m not sure about the intent of your “current folder” centric approach, for now I want to centralize all my apps data in this one so it makes sense for me to run one instance of my helpful app and manage everything I need from one dashboard. What is your need for running several instances locally? I’d love to understand and learn something.

          I do not want to introduce the need of a database until it’s needed, because I like plaintext a lot and obtf/etc. The db is mostly not evolving for now, all new fields/features are implemented in the form of extra script to execute in some context, which rely on a common metadata folder and subfolders (one per note/link ID) which contains distinct file / subfolders for every optional relationship or data required, making introduction for new behaviors/extensions/plugins easier as everything is quite flat files based and the structure of the “data” is discoverable.

          And the app automatically show connections between various notes and links, like :

          • Incoming/outgoing references are shown in context of each link. I feel a bit like building a pagerank/search engine index right now, and I also feel like building a tool that could serve as everyone’s local shaarli/archive/wallabag app.

          I do not trust most of current frameworks, websites, formats to still be popular in a few years so I try to keep my stack quite boring, with technologies that have at least existed for decades, because if I build a long term archive, i want that it keeps working even in 15 years or more without having to rewrite some libs, so I avoid any kind of popular hipster tech like 11TY, React, Vue, whatever. I also do not like very much markdown and I prefer plaintext, but that’s personal taste. I have a problem with markdown being implemented differently by everyone so I consider it a bad choice for long term, unless we stick with very very basic usage, but then it limits the power of what can be expressed, so I better use plaintext and ascii art :-)

          1. 2

            Great info! Let me noodle on it a bit. Might try a base implementation of something for tagging at the least to try it out. As far why one folder, mostly as a result of my day job habits. I’ll have a project folder for each that I’m working on, and I want my notes, tasks, links separated by said project. The one folder approach gives me that, at a trade of off course for indexing all notes, links, images, etc.

            1. 2

              I added the +site feature, which will save the link into a link section of the notes, as well as take a snapshot of that site for that point in time. It’s not your full features, but a start. Would love some feedback if you’re willing to test it out. v0.1.4 on github/pip/brew

              1. 2

                Hey, I just had a look, I can provide some feedback here, and go more in depth in GitHub if you like:

                • the readme mentions we can add note with a “add note” button but I don’t see any, only the CTRL+Enter works for me, it’s a bit confusing at first, maybe a mini help is worth adding in the UI.
                • editing existing notes is my favorite workflow as ADHD, especially from the home page, so I’d like an easier way to go back to any note and edit it, like without having to trigger a specific edit button. I’d like that if I click on a note, I enter edit mode automatically, without leaving the home page.
                • I don’t see a way to remove a note? Let’s say I’ve added few accidental notes.
                • the default example note should ideally show all possible uses, i.e how to add links to be archived. I’ve edited a few notes with ‘+https://…’ but it does not seem to have any effect in several cases.
                • I could trigger the archiving only by editing a note to make it contain only a link and nothing else, but then after hitting the save button the UI blocks for a while until I guess the archiving is made, it would be nice if it’s done in background without forcing the user to wait for dozens of seconds or more.
                • After adding a link and going back to the main page, I had to refresh the page again so the link appears in the links “section” to the right of the page.
                • I’m not sure how much links we can add per notes and if we can add many as I wasn’t sure how to test this (didn’t work for me) ? I’d like to paste lot of links and just have them archiving automatically without needing to type “+” as a prefix.
                • If I add http://localhost:8000 as a link, the app completely stop responding, I can’t even kill the process with CTRL+C so I’m forced to use a SIGKILL from another terminal
                • It would be interesting to tell the user somewhere about which folder is served by the app, as you have said you can run the app from various folders, it would make sense to know in which context we are. Also maybe pick a different color based on the context so we can immediately tell which folder we are editing and avoid messing up.

                I can test further but I believe it should already help :-) Nice work, keep going!

                1. 2

                  FYI, I’ve address I believe all the issues, but would welcome a retest whenever you have a moment. I closed the git issue, just to make tracking issues a bit cleaner if you get a chance to retest. Thanks!

                  1. 1

                    Thanks! I’ll retest :⁠^⁠)

                2. 1

                  I’ll have a look! Thanks for the update 😊.

          2. 1

            Very cool!

            I noticed you read the markdown file in each api call. I was wondering why. In Textpod, I decided to load the file into memory and operate on that, only accessing the file system when the notes are updated, but I’m not sure if it’s actually the best approach.

            1. 1

              Definitely not by conscious choice :) Given I’m not a seasoned developer, hadn’t crossed my mind to do that in memory. Thinking on it, I guess the only thing I’d be worried about would be losing what’s in memory in the event of power loss, killed process, system hang, etc. Probably a small risk thought.

              Thanks for the feedback! Great work on textpod!