View Single Post
Old 09-30-2019, 05:56 PM   #31
joaomcoelho
Junior Member
joaomcoelho began at the beginning.
 
Posts: 3
Karma: 10
Join Date: Sep 2019
Device: Kobo Aura
Hello guys,

I am Joćo and I am the developer of Kobonotes together with Francisco.

Just a little story, Francisco some years ago decided to create a web app also called Kobonotes to help kobo users extract their highlights and annotations. Unfortunately the website was discontinued. Some months ago, during a lunch, we talked about it and both of us decided to make a better version of the old Kobonotes app (I wanted to develop skills on some Front-End and Back-End technologies and this seemed to be an excellent project with something useful and helpful for some people!).

Therefore, we started implementing a new version of Kobonotes.
We took into consideration some aspects that really needed to be improved from the old app, especially that we wanted to focus hard that the data should stay as much as possible on the client, and we, Kobonotes, must only store and have access only to the data that is needed in order to present the notes to the users.

With some research we noticed that websites such as https://sqliteonline.com/ do the job that
we were searching for! You import a sqlite database and you can query it just with the browser! So it is possible to keep the data on the client.
With just some deep search voila... tribute to https://github.com/kripken/emscripten/issues/5820 that developed a javascript library capable of accessing a sqlite database and query the data all in the browser!

Using this library we run the following query (when you upload your sqlite on Kobonotes):

"SELECT
Bookmark.BookmarkID
,Bookmark.DateCreated
,Bookmark.Text
,Bookmark.Annotation
,content.Title
,content.Attribution
,Bookmark.ExtraAnnotationData
,Bookmark.DateModified
FROM Bookmark
Inner join content
on content.ContentID = Bookmark.VolumeID
where Bookmark.text is not null
and Bookmark.Annotation is not null
and length(Bookmark.Annotation) > 0
order by content.Title, Bookmark.DateCreated asc"

So this query runs on your browser and we only store on our database the results of this query! Our server only accesses this information and stores it that's it, all the rest is yours and only yours.
(Btw: You can test it on your Chrome Network tab that only this data is uploaded to the server when you load the sqlite)

I hope this can help you understand how our app works a little with some more detail.
In the future I can develop a simple version of this and make it available on github so you can use it for whatever you want.

All the best,
Joćo
joaomcoelho is offline   Reply With Quote