Commit cd0b296d authored by Doug Beney's avatar Doug Beney

Edit

parent 6b5c8df6
......@@ -90,7 +90,7 @@ permalink: /:categories/:title
paginate: 4
sass:
style: compressed
plugins:
plugins_dir:
- jekyll-paginate
- jekyll-sitemap
# https://github.com/jekyll/jekyll/issues/2938
......
......@@ -18,7 +18,7 @@ There have been many improvements made in the desktop app. Let's go over them.
### Big performance upgrade
One change that I am very excited about is not actually noticeable - which is a good thing! The note list widget used to use a custom widget for each note in the list - via the [setIndexWidget](http://doc.qt.io/qt-5/qabstractitemview.html#setIndexWidget) function.
One change that I am very excited about is not actually noticeable - which is a good thing! The note list widget used to use a custom widget for each note in the list - via Qt's [setIndexWidget](http://doc.qt.io/qt-5/qabstractitemview.html#setIndexWidget) function.
This wouldn't cause a major problem until you have hundreds of notes. At that point the app would use more memory (Still way, way less than an Electron app following best practices, haha.) and you would notice a delay when switching between different filtered note views - "All Notes", "Favorited", "Notebooks", "Tags".
......@@ -38,7 +38,7 @@ Now I am focusing on using the Qt-Vibrato-Cloud-API-Library in conjunction with
## The back-end API / sync-server has a lot more functionality
Many changes were added to [the back-end](https://gitlab.com/Open-App-Library/Vibrato-Back-End). When the server runs, there is now API documentation available at `{SERVER_URL}/docs`.
A ton of progress was made on [the back-end](https://gitlab.com/Open-App-Library/Vibrato-Back-End). When the server runs, there is now API documentation available at `{SERVER_URL}/docs`.
Thanks to the [Django Rest Framework](https://django-rest-framework.org/) it was quite easy to add useful features to the REST API such as sorting & filtering - As an example, you can sort by notes from oldest-to-newest using the URL `{SERVER_URL}/notes?ordering=date_created`.
......@@ -46,13 +46,13 @@ The supported authentication types are token authentication and OAuth2. You coul
Various changes were made to the [database model](https://gitlab.com/Open-App-Library/Vibrato-Back-End/blob/master/notes/models.py).
`sync_hash` was added to provide a unique "fingerprint" to all of your notes, notebooks and tags. Why not just use the database's built-in `id` field you might ask? It is very easy to run into `id` conflicts when you have multiple devices that can create notes offline, saving to a SQLite database, and then sending them up to the cloud eventually. The back-end API gives notes, notebooks and tags a unique fingerprint, called a `sync_hash` which is just a [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier). With this, you can easily check if an object exists in the database.
`sync_hash` was added to provide a unique "fingerprint" to all of your notes, notebooks and tags. Why not just use the database's built-in `id` field you might ask? It is very easy to run into `id` conflicts when you have multiple devices that can create notes offline, saving to a SQLite database, and then sending them up to the cloud eventually. The back-end API gives notes, notebooks and tags a unique fingerprint, called a `sync_hash` which is just a [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier). With this, you can easily check if an object exists in the cloud.
Currently, the `sync_hash` is read-only and is only set by the back-end server when objects are initially synced to the cloud. But perhaps there are benefits to generating these on the clients too and also using these as "IDs" in foreignkeys as well. This could potentially improve reliability and require less hand-holding (additional code) to sync objects.
The sync server will use Postgres as a database back-end by default. It's currently using SQLite just for ease of development purposes but that will be changed. However, the desktop and mobile app will still use SQLite as I believe it is the right tool for the job for that particular case.
The `row` column in the Notebook table allows you to specify a custom ordering of your notebooks. The back-end will also normalize whatever row number you provide it to keep things simple. Here's a quick little text diagram that shows how rows are represented. They represent the current index number of the current hierarchy level.
The `row` column in the Notebook table allows you to specify a custom ordering of your notebooks. The back-end will also normalize whatever row number you provide to keep things neat & simple. Here's a quick little text diagram that shows how rows are represented. They represent the current index number of the current hierarchy level.
```
0 - Recipes
......@@ -63,7 +63,7 @@ The `row` column in the Notebook table allows you to specify a custom ordering o
3 Fitness Tracking
```
Qt uses the same row concept for their TreeModel. Here is their diagram to explain the concept:
Qt uses the same row concept for their TreeModel. Here is their diagram to explain the concept (Ignore the root item):
![Tree diagram with row concept]({{page.media_path}}/qttree.png)
......@@ -73,25 +73,26 @@ The web app will be put on hold for now as the desktop app and back-end server a
Likely, the next big thing I will be working on is the mobile app, created in Qt.
The web app has a lot of progress already but I suspect the majority of my users will use the desktop and mobile app, only occasionally using the web app. For that reason it is on hold - but not forgotten or abandoned.
The web app has a lot of progress already but I suspect the majority of the users will use the desktop and mobile app, only occasionally using the web app. For that reason it is on hold - but not forgotten or abandoned.
## Thank you for the support!
I have received a lot of encouragement from reddit and greatly appreciate it. Please [sign up for the waiting list](https://vibrato.app/) to get a notification as soon as the app is released.
I have received a good amount of encouragement from reddit and greatly appreciate it. Please [sign up for the waiting list](https://vibrato.app/) to get a notification as soon as the app is released if you are interested.
## Upcoming project goals
- Connecting the desktop app to the sync server
- Ironing out text-editor bugs and adding a more complete feature set to it
- Connecting the desktop app to the sync server.
- Ironing out text-editor bugs and adding a more complete feature set to it.
- Client-side encryption!
- Launching a pre-alpha program
- Plenty of usability and design tweaks
- Creating the mobile application
- Implement the plugin system, using a lisp-like scripting language - likely Chicken Scheme
- Implementing image & file upload support
- Launching a pre-alpha program.
- Plenty of usability and design tweaks.
- Creating the mobile application.
- Implement the plugin system, using a lisp-like scripting language - likely Chicken Scheme.
- Implementing image & file upload support.
## Useful links
- [About the Open App Library Project](https://openapplibrary.org/about/)
- [Vibrato Notes website](https://vibrato.app)
- [Feature Requests](https://features.vibrato.aapp/)
- [Telegram Group](https://t.me/joinchat/FslNFBYI88kLFXU5TJFJag)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment