Neopolitan
Notes with Superpowers
Introduction
Neopolitan is a way to take notes. It's easy to learn, quick to customize, and super powerful.
Note Blocks
Neopolitan notes are made of blocks. Each starts with two dashes and a name.
-- title
Block names are up to you. These
all work perfectly:-- title
-- Book-Review
-- 101_Song_I_Recommend
The only rule is that names can't have spaces or a few other specific characters in them1.
Block Content
Content goes below the starting line.
-- title
This Is The Headline Title
More lines down here become
paragraphs for the body of
the block.
Extra Info
Blocks can have extra information. Each piece gets its own line that starts with two dashes.
-- book-review
-- title: On Writing
-- author: Stephen King
A fantastic read. Biggest take
away: It all comes down to
putting in the effort.
Get up. Do your thing.
What Do They Do?
Neopolitan notes are easy to make. They don't do much on their own, though.
Using them in apps is where things get interesting.
Enter Neopoligen
Neopoligen2 (with a gen) is the first app that uses Neopolitan (with a tan). It's a website builder. Point it at some notes and it'll turn them into a website.
The conversion works by applying templates
to blocks. For example, the default template
for the book-review
block
from figure 1
produces this:
A fantastic read. Biggest take away: It all comes down to putting in the effort.
Get up. Do your thing.
Adjustable Layouts
The templates are yours to change. The same content from figure 1
looks like this after a few tweaks:
A fantastic read. Biggest take away: It all comes down to putting in the effort.
Get up. Do your thing.
Collect All The Things
Apps can use blocks to make collections. For example, Neopoligen can gather book-review
blocks from all your notes and display them on a single page.
In this case, only the title and author are shown. You could just as easily make a design that shows the content.
Using All The Info
Apps can create collections from the extra block info too. For example, using the author
info from book-review
blocks to show everything you've read from one person:
- Four Past Midnight
- On Writing
- The Gunslinger
- The Stand
- Wind Through the Keyhole
Formatting
Content can be formatted in multiple ways.
Surrounding text with pairs of asterisks **makes it bold**
Using pairs of underscores __makes it italics__
The other options are listed in the Shorthand Spans section of the Details page.
Footnotes
Wrapping text in pairs of ^^
characters
makes it a reference to a footnote. Apps can use the
references to automatically generate footnote links.
For example, this ^^3^^
turns into
this3 which links to the
corresponding footnote at the bottom of the page.
The block that makes up the footnote looks like this:
-- footnote
-- id: 3
This is an example footnote
(Footnotes can also link back. I just haven't added that to the template yet.)
Wiki Links
Wrapping text in pairs of @@
tells apps to treat it as a
wikipedia style link to other content.
Adding the connecting terms is done
by adding a -- wiki
piece of extra info to a block.
For example, this:
@@Example@@
Would link to a note with this block:
-- title
-- wiki: Example
This Is An Example Note
More Details
That's it for the fundamentals. And,
really, that's just about it for the
entire format. The other two things are
Wrapper Blocks
and
Custom Tags
. You can
learn
about them on the details page.
Current Status
Neopolitan is a way to format notes. You can make them in any app you want.
It's up to individual apps to do something beyond displaying a note's text. Neopoligen is the first app that brings them to life. I've been using prototypes for a few years to run my site. I couldn't be happier with it.
The current version of Neopoligen is the final prototype. Some parts of it are hard-wired for my site. I'm in the process of removing those bits to make it generally available. I don't have an ETA, but you can follow me on Mastodon, Bluesky, or my my RSS feed for updates.
It won't be long. I'm really looking forward to sharing it with you.
-a
Endnotes
- I love taking notes. My Grimoire currently has 11,320 of them. I used to use Markdown but grew increasingly frustrated with its limitations. That frustration led to the creation of Neopolitan. More details on that in Why I Built Neopoligen if you're interested.
-
I've been running my site for 25 years. I've moved content
between various tools and technologies more times
than I care to remember. I never want to do it again.
A fundamental goal of Neopolitan is that, regardless of what I'm using to publish the site, I don't have change the format of my notes for the rest of my life.
After using it for a few years, I'm as confident as I can be that it'll last. - My opinion is as far as you can get from objective, but Neopolitan is really fun to work with. It's hard to describe how nice it is to use blocks as a free-form, plain-text database without actually having to use a database or javascript framework.
- This page only covers basic blocks. There are also Wrapper Blocks as well as some Markdown and Wiki style things you can do with the content. Check the Details page for more info.
Philosophy
-
Both Neopolitan and Neopoligen are
free, open-source software projects. Their
source repos are
here for Neopolitan and
here for Neopoligen.
(I haven't pushed to Neopoligen in a while. The next updates will go out when I finish getting the app ready for public launch) - There is not and will not be any VC funding involved. These projects are not about increasing shareholder value. They're about offering tools folks can use to create.
- There is also no vendor lock-in. Neopolitan files are plain-text files. You can take them pretty much anywhere.
-
I'm working on another project to design
a social network made out of website
and RSS feeds. It's called Neb. You
can read more about it here:
Introducing Neb - A Social Network For People.
In addition to being the first app that uses Neopolitan, Neopoligen will also be the first app for the network.
Technical Details
-
To add some formality:
Neopolitan is a specification for a plain-text
file format based on a corresponding
reference parser. Anything
the parser can parse is valid
Neopolitan. Anything it can't
isn't.
The reference parser has a test suite of inputs and AST target outputs. Any parser that properly converts the inputs into the outputs is a valid parser. - Parsing and rendering are completely separate concerns. A parser's sole responsibility is to transform input into an AST that's handed back to the process that requested it. It's up to the receiver to determine what to do with the AST.
- A plugin architecture is being designed for the reference parser. It won't ship in the first version but stubs for it will be in place.
-
Neither the Neopolitan parser or the Neopoligen
site generator rely on
JavaScript or JavaScript frameworks.
The apps are written in Rust. They will generally be distributed as complete binaries. They should work the same way forever as long as your system architecture doesn't change.
Footnotes
- See the details page for more info
- Neopoligen - the web site builder that uses Neopolitan notes. I'm re-tooling it right now. The new version will be available soon. I'll post updates Mastodon, Bluesky, and my my RSS feed.
- This is an example footnote