
Show HN: Notable – A Markdown-based note-taking app that doesn't suck - fabiospampinato
https://github.com/fabiospampinato/notable
======
boramalper
I used Typora < [https://typora.io/](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).

~~~
fabiospampinato
> 1) LaTeX math support

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.

~~~
avinassh
> 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?

~~~
fabiospampinato
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.

~~~
avinassh
> 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.

------
tamlok
For those not interested in electron, you can give VNote a try:
[https://tamlok.github.io/vnote](https://tamlok.github.io/vnote)

------
krsdcbl
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.

~~~
bgdam
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.

~~~
legostormtroopr
> So for example, if you want to capture Ctrl+Tab

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.

~~~
anoncake
Ctrl+Tab is the standard key combo for switching tabs. Not using it is like
not using Alt+F4 to close the window.

------
stephenr
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.

~~~
fabiospampinato
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.

~~~
krsdcbl
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

~~~
zoomablemind
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.

~~~
fabiospampinato
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.

~~~
stephenr
What? Just use a relative path.

------
alexland
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]?

[1] [https://docs.standardnotes.org/standard-file/client-
developm...](https://docs.standardnotes.org/standard-file/client-development-
guide)

~~~
fabiospampinato
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.

[1]
[https://github.com/fabiospampinato/notable/blob/master/resou...](https://github.com/fabiospampinato/notable/blob/master/resources/tutorial/notes/15%20-%20Encrypted%20Notes.md)

~~~
alexland
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!

~~~
fabiospampinato
No problem, thank you!

------
zmil
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?

~~~
fabiospampinato
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.

[1]
[https://github.com/fabiospampinato/notable#comparison](https://github.com/fabiospampinato/notable#comparison)

~~~
zmil
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!

~~~
fabiospampinato
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 :)

------
writepub
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/](https://writepubapp.github.io/download/)

It is a WYSIWYG Markdown editor with built-in git, without having to learn
either.

~~~
Terretta
write.pub not found?

~~~
writepub
For now, it is [https://writepubapp.github.io](https://writepubapp.github.io)

Will update the site, thanks

------
oelmekki
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.

~~~
fabiospampinato
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.

------
roryisok
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.

------
shscs911
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
<[https://github.com/laurent22/joplin/>](https://github.com/laurent22/joplin/>)

~~~
fabiospampinato
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.

~~~
shscs911
It'd be really great if you could use something like Nextcloud for sync,
instead of proprietary services.

~~~
mrccc
You can, just switch out "dropxbox" with "nextcloud" – it just seems to be
normal directory which nextcloud can sync as well.

------
joeblau
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.

~~~
fabiospampinato
Unfortunately I didn't have the time nor the need for making mobile apps for
this, the situation may change in the future however.

------
mettamage
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.

~~~
matwood
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.

------
vmarsy
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?

~~~
fabiospampinato
> 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.

[1]
[https://github.com/fabiospampinato/notable/blob/master/resou...](https://github.com/fabiospampinato/notable/blob/master/resources/tutorial/notes/12%20-%20Mobile%20Editing.md)

[2]
[https://github.com/fabiospampinato/notable/blob/master/src/r...](https://github.com/fabiospampinato/notable/blob/master/src/renderer/containers/main/notes.ts/#L28-L139)

[3]
[https://github.com/fabiospampinato/notable/blob/master/src/r...](https://github.com/fabiospampinato/notable/blob/master/src/renderer/containers/main/attachments.ts/#L30-L102)

[4]
[https://github.com/fabiospampinato/notable/blob/master/src/r...](https://github.com/fabiospampinato/notable/blob/master/src/renderer/containers/main/note.ts/#L573-L606)

~~~
vmarsy
thanks!

------
djellis
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.

------
dnlsrl
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/](https://wereturtle.github.io/ghostwriter/)

~~~
avinassh
looks slick! Wish it provided Mac builds. I will try to build on my own and
try this

------
lyonlim
Looks good. Have been using Typora. Any major differences other than
supporting attachments?

~~~
fabiospampinato
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.

------
mmckelvy
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.

~~~
fabiospampinato
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.

------
someguydave
Quiver is a pretty awesome open format note-taking application with an iOS app
(read-only): [http://happenapps.com/](http://happenapps.com/)

~~~
fabiospampinato
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].

[1]
[https://github.com/fabiospampinato/notable#comparison](https://github.com/fabiospampinato/notable#comparison)

~~~
zimpenfish
> 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.

~~~
fabiospampinato
Fair enough. If it's documented I'd say it's open.

But it's still an odd design choice IMHO.

------
rcarmo
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.

------
avinassh
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?

~~~
fabiospampinato
> 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.

~~~
avinassh
That explains, thank you!

I have installed and using it. I have a feature request: Dark Theme.

~~~
fabiospampinato
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.

[1]
[https://github.com/fabiospampinato/notable/blob/master/.todo...](https://github.com/fabiospampinato/notable/blob/master/.todo#L16)

------
Mauricio_
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.

------
fourier_mode
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.

------
caseyf7
Very excited about this. My Evernotes include many web clippings. How does
Notable import those? Any chance you’ll add a web clipper?

~~~
fabiospampinato
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.

[1] [https://github.com/fabiospampinato/enex-
dump](https://github.com/fabiospampinato/enex-dump)

~~~
caseyf7
Pasting images from the clipboard would be a nice. Thanks!

------
advanced__pizza
Looks great. Nice work. I had similar checkboxes, and notion.so seemed to
check most of them, and has been great.

~~~
fabiospampinato
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.

------
Fudgel
This looks cool. Just curious, how is the search performance when you have
hundreds or even thousands of notes?

~~~
fabiospampinato
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.

------
forlorn
I'd love to use this app for editing Hugo (or just any static html generator)
content pages.

------
kuhhk
This looks really great — I’m going to try it over the weekend. Thanks for
sharing

~~~
fabiospampinato
Awesome! I'll be happy to hear your feedback on it :)

------
11235813213455
Monaco editor might be better than CodeMirror

~~~
alehander42
codemirror is pretty good

------
theSealedTanker
I am using this now! Clean!

~~~
fabiospampinato
Awesome! Just curious, what were you using before?

~~~
theSealedTanker
Typora, then switched to writing in Sublime Text 3 with few extensions.

------
tetek
went to GitHub, checked that it's js, closed the tab

~~~
powerslacker
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.

------
cooljyo
does it have iPhone support too

~~~
fabiospampinato
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.

~~~
drannex
Why couldn't you repackage this for diy "server" usage and ensure that it's
mobile friendly? That would solve that problem.

~~~
fabiospampinato
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.

