An open source personal note taking app, with complete control over data.
JavaScript CSS HTML
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
build
res
.gitignore
README.md
configure.html
home.html
index.js
package.json
setting.html

README.md

Rivisto

We have all been using (or have used) note taking applications like Google Keep, Evernote, Microsoft Onenote, Dropbox Paper, Box Notes, etc.

Needless to say, they all work very well. Notes are organized, sync'ed everywhere. Additionally, companion apps are available for mobile, desktop, tablet (and in some cases wearable too!).

That's all nice, indeed. But what about the data itself? How much of a control do you have over its existence? What if, one day, they decide to do away with free plans?

It is because of this (and more) reason, Rivisto came into existence. The core purpose is to get back the control of data and at the same time have almost the same set of basic note taking features.

Sounds Good, But How Is It Different?

  1. It's open source, so you are well aware of how your notes are processed and saved to database.

  2. Uses Firebase for storing notes. This takes out the pain of using self hosted solution (although I am working on it as well).

  3. Isn't just restricted to Desktop (Linux, Windows) but a companion application (being worked on) will be available for Android.

Firebase? That's Google! Another Corporate :/

Quick introduction, Firebase is owned by Google. And you might be thinking, what's the point? We are trying to take them out of the picture and end up using one of their services! Agreed. But there are handful of reasons why I ended up using Firebase instead of lets say, a self hosted server,

  1. Setting up and managing self hosting database isn't for everyone. The point is to have control over data and not force a user to learn database management :p

  2. Firebase has a nice (free) starter plan, offering enough storage and bandwidth for an average user. Additionally, since it is being managed by Google, we don't have to worry about managing database.

  3. Nothing is hidden, all the notes you save through Rivisto can be directly accessed from Firebase console.

Nah. I Am Still Not Convinced.

Completely understand your thought process. And that's why there is a future plan to allow (more technical people), a way to use self hosted solution.

How Do I Get Started?

There are 2 ways to use Rivisto Android app,

  1. Use your own Firebase account (for those who want complete control and are willing to do the initial setup).

  2. Use a managed (Firebase) account and follow the simple username/password login/setup style (for those with lesser technical bent).

If you intend to use the managed account, then please note that you will not be able to access the database directly (as against using your own Firebase account).

And if you you plan on using your own Firebase account, follow steps mentioned below to get started,

  • Setup Firebase Account (i.e. Database) - Rather than confusing you with text instructions, I have made a quick video showing you how to setup a Firebase account.

Setup Firebase Account

  • In Firebase console, go to 'Rules' tab, and replace them with following,
{
  "rules": {
    ".read": true,
    ".write": true
  }
}

That's it! You should be able to use Rivisto for saving notes. And remember, Rivisto acts as a way to manage raw data, keep it organized. If you feel the need to see raw data, simply log back to your Firebase account.

Tip - To make all of this process easier, first setup desktop app and then connect android app with desktop app using one tap configure option in android app.

Upgrade Note - Please note that for the time being, previous releases will not be supported since the features (and code) are far from being stable. It is advised to backup notes.

Feature List

As of now, Rivisto is barebones, with an incomplete UI but fairly stable. It features,

  • Save, Edit, and Delete notes.
  • Trash view to restore/permanently delete notes.
  • Note tagging by using # with any word in note content (Only first tag is used).
  • Reset application in case things are not working the way they should (note that all notes remain intact).
  • Note categorization by Tag.
  • Searching for note(s).
  • Auto generation of note title based on note content.
  • Always sync'd notes (offline functionality isn't supported yet).

Why no offline sync?

Since Firebase SDK for JavaScript doesn't support offline sync natively, it would involve writing a rather robust middle layer for providing offline sync which plays well with Firebase. Since I am doing this project in my spare time, and considering the fact that majority of users are always connected to internet almost all the time, providing offline sync for desktop is rather far below in priority list.

However, this doesn't meant Rivisto won't get offline sync in future. If Firebase SDK starts supporting offline sync capabilities (as it does with mobile), I'll surely try and integrate it. Moreover, if there are any brave hearts out there willing to introduce offline sync, you've the code, start diggin'

Interested In Contributing?

Things are quite easy. Rivisto uses combination of Electron, JavaScript, jQuery, HTML, and CSS to get things working. All the resources used are open source and tweaked slightly to match the needs.

As of now, I am not accepting any new feature pull requests since focus is on testing what's already there, and push the first version of Rivisto, stable enough for daily use. This being said, pull requests for refactored code are highly appreciated and so are tests.

Building Rivisto Binaries

  1. Fork/Clone the project.

  2. Run npm install from within the project folder. This will install required dependencies.

  3. Run npm start to compile and run Rivisto.

  4. Run npm run dist from within the project folder to build distribution file. (Note that if you are doing it on Windows, then by default it will generate .exe and on Ubuntu/Elementary OS, it will generate .deb file).

Please note that above mentioned building procedure is tested on Elementary OS (Loki) and Windows 10 only.

P.S - There's also an android app in development !

Issues, Problems, Errors Are Welcome

If you face any problem, create an issue here or create a new post on StackOverflow with #Rivisto. I am always on the lookout for improvising (and constructive criticism).