Show HN: Notable – A Markdown-based note-taking app that doesn't suck 124 points by fabiospampinato on Dec 26, 2018 | hide | past | web | favorite | 108 comments

 I used Typora < https://typora.io/ > this year for my lecture notes and Notable lacks two crucial features that the former has: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).
 > 1) LaTeX math supportI'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 directoryThat'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.
 > 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?
 The synchronization is taken care of by Dropbox and I'm only making commits from my laptop so I'm not really merging from other repos.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.
 > Putting a git repo inside Dropbox is discouraged though as conflicts may arise.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.
 A similar WYSIWYG project I found recently, that is open-source:http://zettlr.com/
 I’d love to have an open-source alternative to it, but I’m not sure if this has inline LaTeX support?
 I used Typora too, its really great for writing note / blog post etc. My only gripe with it is that it doesn't have search / tagging function.
 Indeed. It’s more like a document editor (like LO Writer, or MS Word) than a note-taking app.
 For those not interested in electron, you can give VNote a try: https://tamlok.github.io/vnote
 I kinda don't get why people end up building electron apps to, essentially, "act like it's native".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.
 One important reason people choose to use Electron instead of opening the app in a Browser window, is that the browser blocks a lot of standard keyboard shortcuts.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.
 True, these are a few really valid points I wasn't considering
 > So for example, if you want to capture Ctrl+TabSo use a different key combo? There are plenty to choose from. I use cloud9 and it uses Crtl+[ and Crtl+] to cycle between tabs.
 Ctrl+Tab is the standard key combo for switching tabs. Not using it is like not using Alt+F4 to close the window.
 The main reason you can't do that here is because notes are stored in a local files directory which couldn't be accessed by the browser without using java. Although there author also mentioned using Dropbox so I guess if you trusted it with your credentials it could use the API
 It's the closest you can reasonably get to truly cross-platform, and the buttons on notable very much don't look like "native" on my machine (win10). Yes I know about wxWidgets and so on but you still need to either distribute the runtime with each application separately, or risk "dll hell" if someone wants to run two programs with slightly different versions of some library.Personally I hope some day chrome comes with an "electron runtime" option built in so I only need the framework once on my PC.
 Fuchsia, Google's new OS, has an embedded Chrome option, so it'll act similar to Electron where you only need Chrome once on your computer.
 It's easy to "forget" if it's just a tab in a browser even if you bookmark it and gets buried in other 100s.And also easy to close and lose any notifications than running in dock or menu tray.
 How would you point it to a data directory on your local machine?
 Describing an electron app as “doesn’t suck” is pretty rich on its own, but even more so when you consider that there are several existing native macOS Markdown editors.
 Being native isn't everything. As I mention in the readme I couldn't find an app that ticked all the boxes I'm interested in, which are: notes are written and rendered in GitHub-flavored Markdown, no WYSIWYG, no proprietary formats, I can run a search & replace across all notes, notes support attachments, the app isn't bloated, the app has a pretty interface, tags are indefinitely nestable and can import Evernote notes (because that's what I was using before).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.
 > the app isn't bloated> I can bear the start-up latency and the RAM usage as long as app is overall quick after that.Error. Does not compute.
 There's the bloat of apps like Notion.so giving you a calendar and a kanban board, and there's the bloat of the apps that use 100mb of ram more than the optimal.I can bear the latter, not the former.
 Reverse for me, because the former is at least providing features that give some value; even if not for me, then for some users people, and who knows, maybe I'll be using them in the future. Electron is pure unadulterated waste. And since the app isn't "bloated", by not including a calendar and a kanban board, I might need to use another Electron app for calendar, and yet another Electron app for kanban, and then I have to throw out my computer and buy one with more RAM.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.
 I see your point of view, but also if you absolutely don't need a kanban board and other such features the app becomes more difficult to use. 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.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 see your point of view too. And I realize that Electron performance story seems to be improving, bit by bit.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.
 Notion was so bloated it barely worked on my iphone 6+. Insta-deleted.
 I feel you on this, but for me the solution has been really simple so far: just a dedicated notes folder + good ol' atom.Ticks all the boxes & uses nothing but my default workspace
 Second that. Markdown is about lightweight, requiring just a text editor and a few neurons to memorize the markup.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.
 Adding "attachments" like that, the way Boostnote also does it, is not portable nor ergonomic, since you need the full path to the file in question or you need to upload it somewhere.
 What? Just use a relative path.
 It doesn't tick all the boxes though, there's no good way of adding attachments to notes and the moment a note should be categorized into 2 or more folders the all thing falls apart.
 Granted on the folder side of things, but adding an attachment is really just dropping it into the folder on the filesystem side.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!
 I can tick those boxes with just a filesystem, a text editor, and grep.Except, maybe, Evernote import — no idea how that works.
 Kind of, I see no good way of adding attachments to notes this way, and the moment a note belongs to 2 or more folders/tags the all thing falls apart.
 Folders are notes (text+attachments), tags via grep.
 I agree. Saying your editor doesn't suck implies that all others do suck, which is just shitting on everyone's work.Don't be that person
 I didn't mean to shit on everybody else's work, but I really tried to find a note-taking app that ticked all the boxes _I_ am interested in and avoid coding it myself, but I really couldn't find one. In that sense it doesn't suck, I could have said "that it ticks all the boxes for me" but it would be less catchy maybe :)
 I built something similar a while back and billed it as "a note taking app that stores everything in .md files" or words to that effect. Use the banner feature to differentiate
 > Describing an electron app as “doesn’t suck” is pretty rich on its own,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.
 This is great, I'm very tempted! When I was looking at note apps (and as I continue to re-evaluate my decision), the big win that keeps me on Standard Notes is the longevity and encryption, but the editor interface isn't anything special and sometimes I really miss OneNote/Evernote. Have you heard of Standard Notes, and would you ever consider making Notable support being a client for Standard Notes[1]?
 What do you mean by "longevity"? Notes in Notable are plain markdown files, that's about as portable and long-lasting as it gets.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.
 By longevity I mean a hosted service with the intention of being around for a really long time. Of course plain text (and therefore Markdown) are the pinnacle but I'm very interested in supporting a service that aims to live for a hundred years, thus Standard Notes.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!
 No problem, thank you!
 I found myself Evernote refugee a couple of months ago and found Boostnote, which has done the job for me.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?
 Notable is most definitely not an Evernote clone, which is what I'm coming from as well. I'm comparing Notable with Boostnote in the comparison table [1] in the readme, you might want to give that a look.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.
 Ahhhhh I didn't realize the table scrolled and thought it was directly comparing itself to Evernote, my mistake!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!
 The biggest difference IMHO is that notes in Notable are just Markdown files, so I can open them in any Markdown editor and use all its features. One can't do this with Boostnote because they are wrapping the note in .cson for adding some metadata (Notable uses Markdown front matter instead).> 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 :)
 Why is "No WYSIWYG" your stated goal? Unless your target is an audience of developers, WYSIWYG is making Microsoft a cool \$30B/year. Also, Typora - possibly the most popular markdown editor, is WYSIWYG.Shameless plug: Please try https://writepubapp.github.io/download/It is a WYSIWYG Markdown editor with built-in git, without having to learn either.
 My target audience is myself, and I don't want a WYSIWYG editor.If I were to sell the app maybe I would have gone fore a WYSIWYG editor as well.
 For now, it is https://writepubapp.github.ioWill update the site, thanks
 Hi Fabio,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.
 I'm glad you like it 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.
 I actually built something very similar as a UWP app but didn't get as far as you have with the feature set. The "no proprietary formats" thing is the most important to me. All files stored as markdown in a simple file structure makes so much sense. Any other app can read the data. In fact, because we both went that way our apps can now share a note database, minus the tagging stuff.Ill be downloading this to give it a spin.
 My only issue with Notable is the absence of an Android app and sync across devices. I'd love to use it as my daily driver, if not for these features. Really love your UI. I'm currently using Joplin
 You can kind of get both today if you put your data directory inside Dropbox and then edit your notes with any available text editor. It's definitely not the same thing though.Maybe I will make a mobile app for this in the future.
 It'd be really great if you could use something like Nextcloud for sync, instead of proprietary services.
 You can, just switch out "dropxbox" with "nextcloud" – it just seems to be normal directory which nextcloud can sync as well.
 Visually, this application looks really nice, but where it falls down for me is in it's integration with macOS. My current Markdown editors all have iCloud sync as well as mobile applications so I can edit documents on my phone or tablet natively. I'd rather have deep vertical integration vs cross platform desktop use in an app like this.
 Unfortunately I didn't have the time nor the need for making mobile apps for this, the situation may change in the future however.
 How about a notetaking app that also handles stylus input? IMO any note-taking app that doesn't suck handles stylus input gracefully as I make many notes that aren't easily expressable via UTF-8 text.And I could figure out how to do a TIKZ-like style of drawing schema's but using stylus input is way faster.
 Agreed. I bounce back and forth between actual paper notes and typed notes because paper has advantages for me with actual note taking.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.
 Unfortunately I don't use a stylus so for the first release of the app I focused on things I'm personally interested in.
 Wow this is really cool! I've been looking at OneNote alternatives, specifically due to the lack of Linux client. I really love the searching capabilities in OneNote, I hope this one has similar stuff.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 really love the searching capabilities in OneNote, I hope this one has similar stuff.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.
 thanks!
 Very impressive.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.
 It's not as advanced as other apps mentioned around here, but a Markdown editor I like is called Ghostwriter https://wereturtle.github.io/ghostwriter/
 looks slick! Wish it provided Mac builds. I will try to build on my own and try this
 Looks good. Have been using Typora. Any major differences other than supporting attachments?
 I wasn't a Typora user, but from what I can see after playing a bit with the macOS version a few major differences could be:- 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.
 Funny, I was just looking for something like this. I specifically wanted a note taking app where I could use my text editor and all its power but see the notes rendered close to real time. Great timing! Will give it a look.
 That's one of the things I was interested in as well. One just can't include all fancy plugins available in a real editor into a note taking app.
 It’s very nice (and kudos for the good UI, I like the tagging) but I’m sticking to a native editor. My resolution for 2019 is to avoid as many Electron apps as possible.
 Quiver is a pretty awesome open format note-taking application with an iOS app (read-only): http://happenapps.com/
 I'm not so sure about the "open format" part.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].
 > Quiver stores notes in .qvnote, which I wouldn't call open.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.
 Fair enough. If it's documented I'd say it's open.But it's still an odd design choice IMHO.
 What exactly is the attachments feature and how does it work? And how are these saved?Also, what do you mean by 'no WYSIWYG'? Since you render ir in Github Flavoured MD?
 > What exactly is the attachments feature and how does it work? And how are these saved?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.
 That explains, thank you!I have installed and using it. I have a feature request: Dark Theme.
 Yeah that's actually in my todo list [1]. If I can find a dark version of the CSS GitHub is using for Markdown files it should be easy to implement.
 This seems to be exactly what I was looking for a couple of months ago. I gave up when all the alternatives were either bad or too slow.
 Looks quite sleek. Nice job!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'm not sure if they get imported properly, Notable uses enex-dump [1] under the hood for importing .enex files. If it recognizes web clippings as attachments it will import them, otherwise I guess it will ignore them. I had no web clipper in the notes I tested enex-dump with so I'm not sure about this.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.
 Pasting images from the clipboard would be a nice. Thanks!
 Looks great. Nice work. I had similar checkboxes, and notion.so seemed to check most of them, and has been great.
 Notion is just under a different philosophy, it tried to provide all features imaginable and kind of locks you into their service. Notable on the other end is just a pretty front-end for your notes directory basically.
 This looks cool. Just curious, how is the search performance when you have hundreds or even thousands of notes?
 Search is debounced and feels pretty quick. With ~1500 notes the first filtering round can take about 15ms on my mid-2014 MBP, subsequent rounds can reach sub-millisecond speeds depending on how many notes are left from the previous rounds.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.
 I'd love to use this app for editing Hugo (or just any static html generator) content pages.
 This looks really great — I’m going to try it over the weekend. Thanks for sharing
 Awesome! I'll be happy to hear your feedback on it :)
 Monaco editor might be better than CodeMirror
 codemirror is pretty good
 I am using this now! Clean!
 Awesome! Just curious, what were you using before?
 Typora, then switched to writing in Sublime Text 3 with few extensions.
 went to GitHub, checked that it's js, closed the tab
 Same. The part of Markdown applications that sucks is that they use Electron. Markdown is supposed to be lightweight, free, and universal. If I wanted a heavy editor and file format I'd use Word or Google Docs.
 does it have iPhone support too
 Unfortunately there are no mobile apps for Notable, but you could put your notes into Dropbox and edit them using any of the already existing text editors.
 Why couldn't you repackage this for diy "server" usage and ensure that it's mobile friendly? That would solve that problem.
 I could make a web-app out of it, but it's a non trivial change which I don't personally had the need for, so I haven't implemented it yet.

Search: