Show HN: Notable – A Markdown-based note-taking app that doesn't suck
github.com
github.com
1) LaTeX math support (i.e. MathJax). Being able to write inline formulas and using `align`, `table` etc. is a must in certain fields.
2) Notes in custom directory. Currently it seems that all your notes will be stored in your data directory, whereas I'd like to save my notes (and its assets) in a different directory as well (for instance, because I keep all my lecture notes and courseworks in a git repo).
I'll probably add this with the next release, on the first release I focused on the features I'm personally interested in.
> 2) Notes in custom directory
That's actually supported, your notes can be stored anywhere, that's really the main feature of Notable, that it's just a pretty frontend for a directory containing your notes, the directory can be set arbitrarily and changed later on.
Btw I'm versioning my Notable notes and attachments (which Typora doesn't support) via git too, the data directory is just a regular directory.
that is interesting. How does it handle sync and merge between git repositories?
Putting a git repo inside Dropbox is discouraged though as conflicts may arise.
You could also for instance publish your data directory to github, accept PRs and everything else, as soon as the files on disk change Notable detects the changes and updates itself.
I'm not sure if that answers your question, let me know if it didn't.
I agree.
> I'm only making commits from my laptop so I'm not really merging from other repos.
if so, why are you using git?
btw I have been using this since past 3-4 days and it has been a real pleasure. I have grown to really like it. I write a lot of notes and I wanted to write about 2018. Ended writing a lot on Notable. Earlier I had my own tool written in qt. Your project gave me motivation and may be I should work on it again.
The app looks absolutely awesome, but i would have loved to just see it run in the browser, I'm kinda reluctant to install yet another memory-hog for basic tasks.
So for example, if you want to capture Ctrl+Tab and move to the next note, based on that, well, you can only do that in Electron. Another UX based reason, is that native menus offer a better UX than having to put buttons for each and every action inside the app.
So apart from the usual arguments of cross platform, and we already have JS developers, there are other good reasons to go with Electron.
Also, if you want to do something like display a decently advanced HTML view, WKWebkit might or might not cut it. And it get's updated only when the OS itself get's updated (atleast on older versions of OSX). So if that's the kind of thing you want your application to do, then you pretty much have no option other than Electron.
So use a different key combo? There are plenty to choose from. I use cloud9 and it uses Crtl+[ and Crtl+] to cycle between tabs.
Personally I hope some day chrome comes with an "electron runtime" option built in so I only need the framework once on my PC.
And also easy to close and lose any notifications than running in dock or menu tray.
Being native just wasn't a priority for me, I can bear the start-up latency and the RAM usage as long as app is overall quick after that.
> I can bear the start-up latency and the RAM usage as long as app is overall quick after that.
Error. Does not compute.
I can bear the latter, not the former.
This is not a dig at you specifically, but Electron (and to large extent, the whole modern web) makes me think that some developers believe theirs is the only software users will run. But users run many programs simultaneously, and all this unnecessary bloat adds up, resulting in frustration, lost productivity, and unnecessary quick turnover of perfectly good hardware.
From my point of view as the developer of the Electron app in question I get to reuse the components I spent considerable time developing and a cross-platform app almost for free.
Btw for this specific case Electron might not beed too bad of a choice RAM-wise, I checked it earlier the RAM usage of Notable and Evernote and amazingly Evernote, which is native, was using about 100mb more on my system (mid-2014 MBP). Maybe partially because at the end of the day you're going to need an HTML renderer to render those notes anyway.
I can understand you preferring to make life easier for yourself as a developer, leveraging your existing code and getting cross-platform support for free. Personally, I'm of a belief that the extra work necessary to do it with less resources is worthwhile and needs to be encouraged, which is why I a) actively avoid Electron apps, and b) speak up about it.
> Regarding the RAM as long as there's enough available I think it makes no difference performance-wise if I have 5gb or 2gb free.
It makes a difference when you want to use more programs at the same time. Which is what most users want and expect from their computers, and which is a fundamental feature of contemporary computers. Given the increase of bloat in software all across the board, most users are operating near the top of their RAM capacity, not the bottom. There's only so much of it left before they just can't have everything they want working at the same time.
For instance, right now when I launch (and use for a while) Firefox and Chrome, Emacs, and a local instance of a product I'm working on, I'm nearly maxing out my machine's RAM. If someone was to force me to use an Electron app for chat and music, I'd proably have to either a) keep closing and opening browsers, b) launch the product I'm developing on a different machine (less convenient), c) upgrade my computer. But instead, I can choose not to use bloated applications and keep my workflow convenient, and my perfectly good computer still in use.
Ticks all the boxes & uses nothing but my default workspace
Markdown already handles 'attachments' via tag for image or HTML anchor for other file types. Prettify via CSS.
Global search and replace indeed needs an extra effort. If faced with such a need, I'd just use any of active IDEs already installed, well, Atom should do.
You can't just paste it like you could with other apps on Windows though, and youll need to do a tiny bit of manual work - granted!
Except, maybe, Evernote import — no idea how that works.
Don't be that person
That's an opinion many people hold. I personally however find the shoe-horning of "function fits form" that "native" UI on desktop forces to suck big time. Microsoft Office 365 which is a very well designed desktop app for instance is very non-native in behaviour with its ribbons, intelligent context options surfacing etc. I find that Electron apps in general tend to be much more "form fits function" and easier to use.
[1] https://docs.standardnotes.org/standard-file/client-developm...
There's no encryption by default, but you could put your notes into an encrypted image, read more about this here [1]
I had never heard of Standard Notes, fortunately now I can say I have my note-taking needs covered so I've no interested whatsoever of making Notable a front-end for a third-party service. Perhaps we could add support for importing notes from Standard Notes though, if somebody wants to work on that.
[1] https://github.com/fabiospampinato/notable/blob/master/resou...
I commented mainly because Notable as a front-end for Standard Notes seems like the perfect solution for me but I understand that this is already your perfect solution. I might have to try the integration myself. Thanks again for your awesome work!
Seems like the only difference between Notable and Boostnote is that Notable is a direct Evernote clone, specifically the tags feature. Any other reason to give this a shot over Boostnote?
IMHO Notable is better than Boostnote for the following main reasons:
- It supports attachments, sooner or later you are going to need to add an image or pdf to a note. The only way of doing that with Boostnote is linking to the absolute-path of that file, which is not portable nor ergonomic.
- Notes are stored as plain Markdown files, you can also edit them with your editor of choice. For instance I can use the fancy Markdown plugins I have in my editor easily.
- Multi-note editing is fully supported, from starring/tagging multiple notes at once to performing a regex search & replace across your notes. Boostnote has very limited multi-editing capabilities, and while you could technically perform a search & replace with Boostnote's notes too they are stored in .cson, which complicates things.
- Boostnote is too ugly for me. This may not matter for you but it matters for me.
- Boostnote can't import Evernote's .enex files. Notable can and it preserves both tags and attachments.
- Boostnote isn't keyboard friendly. I don't like the dual pane editor, but if I disable it there's no (documented?) shortcut for switching between editing and preview mode.
The biggest 2 things you hit on is:
1) Boostnote is ugly.
It's not stylish, but I do like how it's simple and direct.
2) Images. I forgot how painful adding an image was in Boostnote.
You've convinced to at least try out Notable! I've been searching for an open source project to contribute to as well so this could very well be it.Thanks!
> I've been searching for an open source project to contribute to as well so this could very well be it.
That would be awesome :)
Shameless plug: Please try https://writepubapp.github.io/download/
It is a WYSIWYG Markdown editor with built-in git, without having to learn either.
If I were to sell the app maybe I would have gone fore a WYSIWYG editor as well.
Will update the site, thanks
Congratulations on Notable, it's very slick, and exactly the kind of note taking app I was after.
I'm mostly concerned about keeping my data offline these days, so Google Keep and Evernote were no fit for me. I take tons of notes every day, and ended up using the note app from Kontact (the PIM suite for KDE), mostly because I'm a heavy KDE user and it was properly integrated with Akonadi (KDE's PIM backend). But it is very raw, especially compared to Notable.
Given Notable data is just plain text, it means I can get it indexed by Baloo (KDE's desktop search), so it's perfect for me. Thanks a lot :) And nevermind Electron haters, having an app in an AppImage, released on github, so that I can subscribe to release's RSS feed and just download/drop the update if I want to is furiously awesome.
One suggestion : I would love, when I create a new note when having a Notebook selected, that this new note is automatically added with this tag (currently, manually importing data from Kontact is painfully long). Autocompletion of tags could do too.
> One suggestion : I would love, when I create a new note when having a Notebook selected, that this new note is automatically added with this tag (currently, manually importing data from Kontact is painfully long). Autocompletion of tags could do too.
Definitely, tag autocompletion may be a bit tricky but putting the note in the current tag should be implemented quickly.
Ill be downloading this to give it a spin.
Maybe I will make a mobile app for this in the future.
And I could figure out how to do a TIKZ-like style of drawing schema's but using stylus input is way faster.
I recently got an iPad Pro with the Apple Pencil and it's quite nice. So far I'm only using the Notes.app, and while it's not perfect it does some cool things. OCRing my handwriting and making it searchable is quite nice.
If I were to switch to this, I would loose the Android app though, any thoughts/plans of how this could be used on Mobile? Could the same client be used to render files stored on a user drive (OneDrive, Google Drive, Dropbox) Usually apps are forbidden to use cloud drives to store their content, but in this case maybe it could since each file is actually plain user-generated `.md`/`.jpg`/... ?
It seems all Typescript/React based, it could be doable to port it to a webview? if you're reading this, can you point to the code that handles reading/writing content from the filesystem?
I'm not familiar with the search capabilities of OneNote, right now there's only fuzzy search in Notable. It's pretty bear-bones actually, but some more advanced features could be implemented in the future.
> any thoughts/plans of how this could be used on Mobile?
I personally never write notes from my phone so that's not a priority for me, but maybe if the app gets popular enough I could port the app to mobile and/or make a webapp for it.
I touch this point in the tutorial notes that get loaded into the app upon first instantiation so be sure to read that [1], basically you can put your notes in Dropbox and edit them with any text editor available.
> It seems all Typescript/React based, it could be doable to port it to a webview?
It's basically a website with access to the filesystem so it should be pretty doable.
> if you're reading this, can you point to the code that handles reading/writing content from the filesystem?
Sure, here [2] there are the functions that read all the notes and listen for changes on the filesystem (because you can also edit them with a third-party app), there are analogous functions for the attachments here [3]. Here [4] there's the function that writes updated notes to the filesystem.
At the moment there isn't much abstraction storage-wise, but I guess adding support for a cloud storage that enables synchronization between all apps should be pretty doable.
[1] https://github.com/fabiospampinato/notable/blob/master/resou...
[2] https://github.com/fabiospampinato/notable/blob/master/src/r...
[3] https://github.com/fabiospampinato/notable/blob/master/src/r...
[4] https://github.com/fabiospampinato/notable/blob/master/src/r...
I have very similar requirements in that, I want my personal notes stored in an accessible plain text format (such as markdown). These plain text files which are then able to be sync'd across machines.
I ended up editing note files in a dropbox directory using sublime with the MarkdownEditing and FindInProject packages.
This results in a very clean plain-text experience, which is high extensible.
- Notable has better notes organization thanks to indefinitely nestable tags. I think one organizes notes in Typora by organizing the directory structure? That's fine but limiting as one can't really put a note into 2 folders at the same time (maybe Typora supports symlinks though, I'm not sure).
- Notable comes with multi-note editing, which is cool for tagging/pinning/starring multiple notes at once.
- Typora is way more customizable.
- Typora feels more native to me and starts up faster.
Quiver stores notes in .qvnote, which I wouldn't call open. They have "Quiver Notebooks", where in Notable notebooks are just special tags, which are stored as Markdown front matter.
IMHO Quiver is somewhat weird, they have a concept of "cells", you write Markdown inside a "Markdown Cell", there also a "Text" cell, a "LaTeX" cell etc. IMHO this complicates things unnecessarily. If you only support Markdown you can get rid of the Text cell, the LaTeX cell is also weird, it would be much more portable to just define a LaTeX code block and then at render-time render that into the actual result.
Once you get rid of this "cells" concept you can get rid of .qvnote too and just store notes in Markdown.
Btw I'm comparing Notable against Quiver too in the comparison table [1].
From the Quiver site:
> Quiver doesn’t lock you in. It stores data in a well-documented plain JSON format.
Which is fairly open, I feel.
But it's still an odd design choice IMHO.
Also, what do you mean by 'no WYSIWYG'? Since you render ir in Github Flavoured MD?
You select some files to add to your notes and they get copied to your data directory, a reference to them is also added to the note using Markdown front matter.
> Also, what do you mean by 'no WYSIWYG'? Since you render ir in Github Flavoured MD?
The rendered note is not the editor, the editor let's you actually edit the source. Most other apps instead combine the too and make no distinction between the source and the rendered result, at least as far as the user is concerned.
I have installed and using it. I have a feature request: Dark Theme.
[1] https://github.com/fabiospampinato/notable/blob/master/.todo...
Although I wouldn't move away from org-mode, I can easily see it using 2 years ago, when I thought markdown was great.
I personally have no use for a built-in web clipper, and with an OS-level shortcut I can take a screenshot of any portion of the screen, I'll probably add support for pasting images directly from the clipboard but that's about it probably.
Currently there's no real index, and a note's content isn't searched, just its title. I will probably add support for searching the content as well, but I think with fuzzy search too many notes will match.
Anyway if you need something fancy you could also open your notes directory with your favorite editor and perform a regex-search there. No other GUI note-taking app that I've tried gives you this amount of freedom.