{"id":2412,"date":"2021-06-03T14:39:52","date_gmt":"2021-06-03T13:39:52","guid":{"rendered":"https:\/\/www.jurecuhalev.com\/blog\/?p=2412"},"modified":"2021-06-03T14:39:52","modified_gmt":"2021-06-03T13:39:52","slug":"initial-thinking-on-roam-to-wordpress-plugin","status":"publish","type":"post","link":"https:\/\/www.jurecuhalev.com\/blog\/initial-thinking-on-roam-to-wordpress-plugin\/","title":{"rendered":"Initial thinking on Roam to WordPress Plugin"},"content":{"rendered":"\n<p>What I&#8217;m trying to do with this plugin is to create a digital garden that I can connect from <a href=\"https:\/\/roamresearch.com\/\">Roam Research<\/a> to WordPress.<\/p>\n\n\n\n<p>Most of the existing solutions are using static web site generators. I&#8217;d like to avoid that because I want to have only one CMS on my site and to also maintain only one theme. There are also additional potential power features that would allow me toI can connect exported Roam pages to WordPress Taxonomies.<\/p>\n\n\n\n<p>My current thinking is as follows:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/www.jurecuhalev.com\/blog\/wp-content\/uploads\/2021\/06\/high-level-diagram-1024x768.png\" alt=\"\" class=\"wp-image-2413\" srcset=\"https:\/\/www.jurecuhalev.com\/blog\/wp-content\/uploads\/2021\/06\/high-level-diagram-1024x768.png 1024w, https:\/\/www.jurecuhalev.com\/blog\/wp-content\/uploads\/2021\/06\/high-level-diagram-550x413.png 550w, https:\/\/www.jurecuhalev.com\/blog\/wp-content\/uploads\/2021\/06\/high-level-diagram-768x576.png 768w, https:\/\/www.jurecuhalev.com\/blog\/wp-content\/uploads\/2021\/06\/high-level-diagram-1536x1152.png 1536w, https:\/\/www.jurecuhalev.com\/blog\/wp-content\/uploads\/2021\/06\/high-level-diagram-2048x1536.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>When looking at the overall architecture design I realised that:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Roam&#8217;s JSON API is something that I don&#8217;t understand, it&#8217;s undocumented and hard to develop. So I&#8217;ll pass it for now.<\/li><li>Exported MD files are nice but they&#8217;re messy to automate.<\/li><li>Uploading one exported JSON file allows me keep all application logic in WordPress plugin and removes the need for any additional tools.<\/li><\/ul>\n\n\n\n<p>I&#8217;ve also found some nice prior art. There&#8217;s <a href=\"https:\/\/github.com\/artpi\/wp-roam-block\">WP Roam Blocks<\/a> that does something similar within Gutenberg.<\/p>\n\n\n\n<p>I also appreciate blogging from David Bieber where he describes how he&#8217;s currently using Python to blog with Roam:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/davidbieber.com\/snippets\/2020-12-28-publishing-blog-posts-from-roam-research-quickly-and-automatically\/\">Publishing Blog Posts from Roam Research Quickly and Automatically<\/a><\/li><li><a href=\"https:\/\/davidbieber.com\/snippets\/2020-04-25-roam-json-export\/\">Roam Research&#8217;s JSON Export Format<\/a><\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Next steps<\/h3>\n\n\n\n<ol class=\"wp-block-list\"><li>REST API to allow uploading of Roam&#8217;s JSON export<\/li><li>Initial React backend upload dialog<\/li><li>Basic <a href=\"https:\/\/github.com\/nahid\/jsonq\">jsonq<\/a> parsing of uploaded JSON file<\/li><\/ol>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>What I&#8217;m trying to do with this plugin is to create a digital garden that I can connect from Roam Research to WordPress. Most of the existing solutions are using static web site generators. I&#8217;d like to avoid that because I want to have only one CMS on my site and to also maintain only [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[946,947],"tags":[],"class_list":["post-2412","post","type-post","status-publish","format-standard","hentry","category-dev-logs","category-roam-to-wp"],"acf":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.jurecuhalev.com\/blog\/wp-json\/wp\/v2\/posts\/2412","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jurecuhalev.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jurecuhalev.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jurecuhalev.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jurecuhalev.com\/blog\/wp-json\/wp\/v2\/comments?post=2412"}],"version-history":[{"count":1,"href":"https:\/\/www.jurecuhalev.com\/blog\/wp-json\/wp\/v2\/posts\/2412\/revisions"}],"predecessor-version":[{"id":2414,"href":"https:\/\/www.jurecuhalev.com\/blog\/wp-json\/wp\/v2\/posts\/2412\/revisions\/2414"}],"wp:attachment":[{"href":"https:\/\/www.jurecuhalev.com\/blog\/wp-json\/wp\/v2\/media?parent=2412"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jurecuhalev.com\/blog\/wp-json\/wp\/v2\/categories?post=2412"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jurecuhalev.com\/blog\/wp-json\/wp\/v2\/tags?post=2412"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}