Creating a Note-taking App - Notas

Creating a Note-taking App - Notas

Daily short news for you
  • Since the Lunar New Year holiday has started, I won't be posting anymore. See you all after the holiday! 😁

    » Read more
  • Continuing about jj. I'm wondering if there are any GUI software made for it yet to make it easier to use. There are already so many similar to git that I can't count them all.

    Luckily, the author has compiled them all together in Community-built tools around Jujutsu 🥳

    » Read more
  • Turso announces that they are rewriting SQLite in Rust. This adds another piece of evidence supporting the notion that Rust is "redefining" many things.

    But the deeper reason is more interesting. Why are they doing this? Everyone knows that SQLite is open source, and anyone can create a fork to modify it as they wish. Does the Turso team dislike or distrust C—the language used to build SQLite?

    Let me share a bit of a story. Turso is a provider of database server services based on SQLite; they have made some customizations to a fork of SQLite to serve their purposes, calling it libSQL. They are "generous" in allowing the community to contribute freely.

    Returning to the point that SQLite is open source but not open contribution. There is only a small group of people behind the maintenance of this source code, and they do not accept pull requests from others. This means that any changes or features are created solely by this group. It seems that SQLite is very popular, but the community cannot do what they want, which is to contribute to its development.

    We know that most open source applications usually come with a "tests" directory that contains very strict tests. This makes collaboration in development much easier. If you want to modify or add a new feature, you first need to ensure that the changes pass all the tests. Many reports suggest that SQLite does not publicly share this testing suite. This inadvertently makes it difficult for those who want to modify the source code, as they are uncertain whether their new implementation is compatible with the existing features.

    tursodatabase/limbo is the project rewriting SQLite in Rust mentioned at the beginning of this article. They claim that it is fully compatible with SQLite and completely open source. Limbo is currently in the final stages of development. Let’s wait and see what the results will be in the future. For a detailed article, visit Introducing Limbo: A complete rewrite of SQLite in Rust.

    » Read more

Why create a note-taking app?

My daily life is closely tied to note-taking. There's a lot of information that if not written down somewhere, I know there's a high chance I'll forget it in the future. The information that needs to be noted includes personal and work-related matters.

Personal notes are diverse, they can be a new coffee recipe I found on YouTube, a cooking instruction, a shopping list for tomorrow, the day after tomorrow... Or sometimes it's just a short but important piece of information that I don't want to forget. In short, notes are for things we know we'll forget.

And what about work? Notes are also indispensable. They can be instructions for operating a tool or a system, useful commands, or system descriptions in preparation for important meetings... But during meetings, I prefer to bring a notebook and pen to take notes quickly, draw better diagrams instead of using my phone or computer.

Since I started writing, especially blogging, I have become more interested in note-taking apps for long articles. Ideas for articles can suddenly appear at any time, and if I don't quickly jot them down, they might be forgotten. I am particularly interested in simplicity, speed, good synchronization, and security, and it would be great if it also supports markdown.

Markdown is a text format that I find extremely useful until now. It provides an excellent combination of text and formatting. Just write, and the formatting is done through the way you write. In short, just write without worrying too much about formatting the text.

The most frequently used app before was Apple Notes. It is simple, focused on writing, does not support markdown, but compensates with excellent synchronization between devices in the "apple" ecosystem. The data is fully encrypted on iCloud, so it is very secure. Adding the feature of locking individual notes, some of which are very private, and only opening them when necessary, gives me peace of mind when using it.

The only limitation of Notes is the lack of markdown support. A few months ago, my old and worn-out "bunny ear" phone started to go on strike... so I had to replace it with a new Android device. That's when I discovered another problem: Notes does not support cross-platform usage.

The journey to find a note-taking app began. Honestly, I have researched and used many apps to find the most suitable one. But in return, the effort may not have reached full maturity.

Notion - or other All-in-one apps similar to Notion - is perhaps the most notable name. Powerful, feature-rich, capable of doing many things, but overall... more complex than necessary. After a period of experience, I feel that Notion is more suitable for task management rather than focusing on writing.

Bear Notes is perhaps the most valuable name. A beautiful, user-friendly, simple note-taking app that supports markdown. Writing notes on Bear feels great and it always makes me want to start writing immediately instead of thinking about whether I should write or not. Additionally, Bear has the tagging feature to categorize notes, making them easy to manage and retrieve later. Bear only has two downsides: it only supports Apple devices and requires payment for synchronization. But if this were a cross-platform app, I would be willing to pay to use this excellent app.

Simple Notes can replace Apple Notes or Bear in some aspects. Simple Notes is cross-platform, simple, and free, but it has too many limitations. It does not support markdown, does not have great security, and the interface is not very user-friendly (at least in my opinion). Simple Notes has the ability to synchronize, but they disclaim any responsibility for the information you store on it. Hmm... is it safe?

Because of all these reasons, I felt the need to "take action" and do something!

Notas

As a web developer, the first thing that came to my mind was that the app would run on the web. Combined with PWA, Notas will look like a "native" app that can be installed on a computer or pinned to the screen of a phone. Easy to find, easy to use, and easy to write.

Nuxt.js is a familiar application framework, so I used Nuxt.js to develop the Notas PWA note-taking app. The interactive features and logic handling of Nuxt.js work well and save a lot of time. DaisyUI - a CSS library based on Tailwind - is also suitable for creating a modern interface for Notas.

Another extremely important aspect is markdown support. For a note-taking app, writing takes up about 90% of the interaction time, so it is necessary to optimize the writing experience as much as possible. CKEditor could be a great editor, but its configuration is a bit complex. Instead, I chose another simpler and lighter option, Tiptap.

Notas needs a place to store data. Focusing on privacy and security, let users have control over where their data is stored. The initial idea is to create an Adapter layer for interacting with the database. That means not caring about what the actual database is, just write functions to retrieve data from somewhere. If done this way, I can write Adapters to use data from Local Storage, SQLite, or even through RESTful APIs.

Notas is currently in the process of building the interface and some main usage flows. Initially, Notas will meet the basic requirements of regular note-taking users, which means being able to manage notes and supporting markdown. Then, if there is time, I will continue to develop this application.

Notas Interface

After completing Notas, I will be the first to experience it for a period of time. Fix any bugs and make adjustments if necessary. Ultimately, my goal is to create an open-source product that anyone can use, contribute to, and further develop.

Conclusion

Building a note-taking app among dozens or even hundreds of existing apps may seem like a quirky idea and possibly "unnecessary work". I know many people have more extensive experience with note-taking, so I am very open to suggestions on how to do it. Additionally, any feedback on Notas is invaluable. Thank you!

Premium
Hello

The secret stack of Blog

As a developer, are you curious about the technology secrets or the technical debts of this blog? All secrets will be revealed in the article below. What are you waiting for, click now!

As a developer, are you curious about the technology secrets or the technical debts of this blog? All secrets will be revealed in the article below. What are you waiting for, click now!

View all

Subscribe to receive new article notifications

or
* The summary newsletter is sent every 1-2 weeks, cancel anytime.

Comments (0)

Leave a comment...
Scroll or click to go to the next page