dataans
Pavlo Myroniuk October 19, 2024 #rust #tauri #leptos #projectSource code: github/TheBestTvarynka/Dataans.
The Dataans is a desktop app that allows you to take notes in the form of markdown snippets grouped into spaces. Yes, it's another note-taking app, but it has unique features that I miss in all other note-taking apps.
Motivation
I write notes almost every time I use my computer. Usually, it's small pieces of data/code/docs/links I found during the research or bug fixing. So, I need some place to store them and the ability to find needed pieces of information easily. I used to use a single text file and open it in Notepad
or VS Code
. After the research, I got the file with almost random symbols:
Do I need to explain that it is inconvenient and hard to find anything? I needed a better solution. I tried other note-taking apps, but every one of them had flaws I didn't like a lot.
What's wrong with existing note-taking apps?
I relate a lot to this blog post (Why build a messenger app only for sending to yourself?). I quote some key points from it but explain them in my own way and how they relate to me.
- Too many options. I don't need so much test editing functionality. I just want to take notes and have simple markup (styling) functionality. Something like markdown or asciidoc.
- Unwanted features. This echoes the previous point, but I want to draw your attention specifically to the UNWANTED features. For example, I don't need AI to search for info in my notes. I only need a typical search engine. I don't want AI to write notes for me. I can write down my thoughts by myself.
- Article-oriented mindset. People don't think in articles. Many note-taking apps look like you are going to write an article instead of just writing down the idea, thought, or a random piece of data. When I see a blank screen with the cursor, I feel I need to write a document with a defined structure, style, and line of thought. It throws off the thoughts I wanted to write at the beginning.
Missing features
Despite the listed flaws above, I also have missing features I would like to have in my note-taking app. Some of them may feel weird and illogical to you, but I know what I want 😝.
All note-taking apps I tried lack one or more features listed below. No one contains all of them at once (but if you find such an app, please, tell me about it).
- Desktop app. Yes, you heard it right. In the era of the web, I want a desktop app. Usually, the browser has dozens of opened tabs across multiple windows. It becomes hard to find the tab with notes (even when it's pinned).
- Quake (drop-down) mode. I have used the Quake terminal since 2019. I like it a lot and the most pleasant feature is a drop-down mode. I set a keybinding to the
F1
key and always have my terminal with me. I would like to have the same ability for my note-taking app because I use it often. - Cross platform. It should behave the same on Windows and Linux. Other platforms may may be supported too, but it's not a requirement for me.
- Markdown. It is simple, easy to learn, and looks good. It contains a perfect set of styling and markup functionality for me.
- Grouping into channels/spaces/folders/or anything like that.
Solution
These are the two closest apps to what I want:
- Telegram. I have plenty of Telegram channels with one subscriber (me) where I save important, useful, and just interesting information. Despite rich Telegram features, I think you can understand why it isn't a solution.
- Monoline. It supports MD and has pretty UI, but I would like to organize my notes into groups (like messages are organized in channels in Telegram).
I decided to write my note-taking app after many tries and thoughts. The best part of being a programmer is the ability to do everything I want with the software. It's like a limitless power in the virtual world (unfortunately, everything has a limit, but we aren't about that).
Tech stack
We can debate a lot about the best technologies for such a project, but I already made my decision:
I wrote a comprehensive explanation of the chosen tech stack. You can read it here: tech_stack.md
.
Features
- Quake (drop-down) mode. The keybinding can be configured.
- Cross-platform.
- All notes are markdown text. The following MD features are supported:
- Italic, bold, strike-through text.
- Quotes.
- Links.
- Headers.
- Tables.
- In-line code and code blocks.
- Pasting images from clipboard.
- Files can be attached to the note.
- All notes are grouped into spaces. So, space is a collection of notes. It has a name and avatar picture.
- Common keybindings for text editing (like
ctrl+k
for creating links). - The app can be configured using the config file.
- Color scheme also can be configured.
- Simple note search.
- Many different keybindings to control the application.
...And more. This is a short list of main futures. The full features list and user manual can be found here: Dataans/wiki/User-manual.
Moving further
I'm going to continue to improve Dataans
according to my needs. If someone wants some missing functionality, then create an issue or a discussion, and most likely I'll implement it. Or if you are interested in contributing to this project, then read the CONTRIBUTING.md
document.
References & final note
- Dataans: Source code.
- Dataans: Contributing guide.
- Dataans: Technical decisions explained.
- Dataans: Wiki.
- Why build a messenger app only for sending to yourself?.
I want to add only one thing: write programs for yourself in your favorite languages. I'm feeling happy every time I use my app for my needs. Even if your app will do only one task, then still create it. No better software than software that does useful work.