Jotsy: A self-hosted, open-source note taking app built with Rust

Published on Feb 4, 2022

Meet Jotsy — a self-hosted, free and open-source note taking app built with Rust, Skytable and pure HTML, CSS and JavaScript. The goal of Jotsy is to be simple, and only focuses on notemaking.

Background

It’s not just me, but I believe several people enjoy jotting down everyday things as a hobby, as a way of remembering things or the likes of it. I have always had the habit of maintaining a journal, but with most of my time being spent on my machine, it’d be very convenient for me to have my notes on it too. Now, I was presented with a wide array of choices for self-hosted applications, and to be honest, most of them exceeded my expectations.

Exceeded, you ask? Well, I wanted a place where I could just type in some notes in a box, and click on a button and it’d be saved. That’s all I wanted. And yes, that is definitely with some authentication because I often make some private notes. Being overwhelmed by most of the features that other apps provided, I decided to write Jotsy that achieves exactly what I wanted. Yes, it’s an opinionated note-taking app. Since I’m also the dude at Skytable, Jotsy is powered by it.

Running it

You just need docker-compose installed. Once you’ve done that, here’s a simple one-liner script that you can run from your home directory:

mkdir jotsy && cd jotsy && wget https://raw.githubusercontent.com/ohsayan/jotsy/next/docker-compose.yml && sudo docker-compose up -d

Now fire your browser up to http://localhost:2022, create an account and start taking notes. Simple, ain’t it?

Live Demo!

▶️ Live Demo: Yup, head over to https://jotsy.skytable.io and see it in action! Create an account and make some notes! Also, please don’t spam :)

🔴 Warning: This is a demo and you should not store anything important because data will be deleted periodically!

The stack

Backend

I’ll first jump into the backend (you would have already guessed the database :P):

  • Database: Skytable
  • Language: Rust
  • Frameworks/tools:
    • Tokio: For the asynchronous runtime
    • Axum: Tokio’s web framework
    • Askama: HTML templating

Frontend

Now if you’re about to shout at me for a “funny UI”, uh well, you should definitely know that by no means am I a front-end developer and honestly, Jotsy is maybe one of the cleanest frontends that I’ve written (you better not judge me!). Here’s what I used for the frontend:

  • CSS Framework: Bootstrap. I also borrowed parts of their MIT licensed login-page example
  • Scripting: JavaScript (yes, pure JavaScript with AJAX and no frameworks. I like it pure!)
  • Markup: Pure HTML

Taking things ahead

For me, Jotsy is exactly what I wanted — it’s goal was to never be a sophisticated app. But I know, you folks want more!

I’ve got plans for an “account settings” section and a REST API. Also, if you have too many notes — there’s a good chance that the browser may slow down when loading the app’s index page. So yes, pagination is planned as well (and possibly something that will be implemented very soon). I’d also love some frontend wizard to help me improve the UI. If you want to collaborate, shoot me a DM.

Got more ideas? Create an issue and tell me about it! Jotsy is ready to be extended, so go give it a star on GitHub or fork it (it’s Apache-2.0 ❤️)!

Also, do check out Skytable — there’s a lot on the way ✨!