{"id":50,"date":"2021-11-29T20:15:31","date_gmt":"2021-11-29T20:15:31","guid":{"rendered":"https:\/\/lukelane124.io\/?p=50"},"modified":"2021-11-29T20:15:31","modified_gmt":"2021-11-29T20:15:31","slug":"notes-building-a-cross-platform-notes-app","status":"publish","type":"post","link":"https:\/\/play.swallowtail.hosting\/?p=50","title":{"rendered":"Notes: Building a cross platform notes App"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Is anyone else tired of having to email notes back and forth, or having a nice looking but effectively unused cross-platform note taking app?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I was introduced to <a href=\"http:\/\/getdrafts.com\">Drafts<\/a> a couple years ago by a work colleague of mine and immediately fell in love with it. I had tried several services over the years and there was something limiting about almost all of them (Drafts included) but what Drafts does it does better than any note app I&#8217;ve ever encountered. It&#8217;s right in the name, this app is for your initial brain-dump of text into a single place. This place is synced across all your (apple) devices and for the most part everything just works and works well.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Around this same time I was building my own notes taking app to be a cross-platform desktop application to accomplish this same task. It was called java-journal in it&#8217;s first release. It worked well enough but it never left beta as doing cross platform file storage (put this folder in a default location for the operating system) led to a level of annoyance I had not expected to encounter. While there are several ways this could be improved I&#8217;ve all but abandoned the project.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I&#8217;m now planning to move to a &#8220;cloud&#8221; based solution to this problem. At the very least I want to be able to take the dumbest browsers and write a note reliably. As a side goal I&#8217;d like to be able to accomplish this task offline in addition to doing it while connected.<\/p>\n\n\n\n<!--nextpage-->\n\n\n\n<p class=\"wp-block-paragraph\">What I expect to need:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>A self-hosted EC2 instance to run an extremely basic application on which is responsible for keeping the &#8220;leader&#8221; copy of the database of notes up to date across all devices\/connections.<\/li><li>An S3 bucket to store the database for potential future recovery. (<a href=\"https:\/\/mtlynch.io\/litestream\/\">more details<\/a>)<\/li><li>An extremely basic <em>initial<\/em> API for interfacing with the notes<\/li><li>A form of local storage on each platform\/browser to hold data when the service is unavailable.<\/li><li>A method to resolve edit collisions: probably just link all versions and prompt the user to review.<\/li><li>A release method\/platform.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Check back for updates to this page as this little project progresses.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Any future links will get tagged with Notes<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The road to writing a web-focused note taking app you&#8217;ll actually enjoy using.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[5,6,7,10,11,15,16],"class_list":["post-50","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-code","tag-ec2","tag-editing","tag-litestream","tag-notes","tag-s3","tag-sqlite"],"_links":{"self":[{"href":"https:\/\/play.swallowtail.hosting\/index.php?rest_route=\/wp\/v2\/posts\/50","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/play.swallowtail.hosting\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/play.swallowtail.hosting\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/play.swallowtail.hosting\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/play.swallowtail.hosting\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=50"}],"version-history":[{"count":0,"href":"https:\/\/play.swallowtail.hosting\/index.php?rest_route=\/wp\/v2\/posts\/50\/revisions"}],"wp:attachment":[{"href":"https:\/\/play.swallowtail.hosting\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=50"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/play.swallowtail.hosting\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=50"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/play.swallowtail.hosting\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=50"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}