<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>The Interledger Community 🌱: ProgNovel</title>
    <description>The latest articles on The Interledger Community 🌱 by ProgNovel (@prognovel).</description>
    <link>https://community.interledger.org/prognovel</link>
    <image>
      <url>https://community.interledger.org/images/JUrp3-vfWALjTnSAWQGgvOTaKQdFpRkKgL5EtmsJ6Wc/rs:fill:90:90/g:sm/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL29yZ2Fu/aXphdGlvbi9wcm9m/aWxlX2ltYWdlLzE1/Ni9lZjZhZTMxZC0x/YmFkLTQ3MDUtOGZh/OC02OTIyNmI2MTY1/ODYuanBn</url>
      <title>The Interledger Community 🌱: ProgNovel</title>
      <link>https://community.interledger.org/prognovel</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://community.interledger.org/feed/prognovel"/>
    <language>en</language>
    <item>
      <title>ProgNovel Promotional Video</title>
      <dc:creator>Radhy</dc:creator>
      <pubDate>Wed, 15 Dec 2021 03:08:12 +0000</pubDate>
      <link>https://community.interledger.org/prognovel/prognovel-promotional-video-2k8e</link>
      <guid>https://community.interledger.org/prognovel/prognovel-promotional-video-2k8e</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/4nBUq1638zk"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Despite at the last minute, my contractors managed to finish the video. 🚀&lt;/p&gt;

&lt;p&gt;Please enjoy &lt;br&gt;
😎😎😎&lt;/p&gt;

</description>
      <category>video</category>
      <category>opensource</category>
    </item>
    <item>
      <title>ProgNovel — Grant Report #2</title>
      <dc:creator>Radhy</dc:creator>
      <pubDate>Sun, 12 Dec 2021 10:39:11 +0000</pubDate>
      <link>https://community.interledger.org/prognovel/prognovel-grant-report-2-4oo7</link>
      <guid>https://community.interledger.org/prognovel/prognovel-grant-report-2-4oo7</guid>
      <description>&lt;p&gt;Before I knew it, ProgNovel has been in the sixth month as Grant for the Web grantee. This grant report also signify the last days of me being a grantee of Grant for the Web with ProgNovel. So here it comes -&lt;/p&gt;

&lt;h2&gt;
  
  
  Project Update
&lt;/h2&gt;

&lt;p&gt;Repos for self-hosting ProgNovel has been launched for public use, marking the goal for the sixth-month of ProgNovel's schedule for GftW roadmap is coming to its end.&lt;a href="https://community.interledger.org/images/8yqgQqqAZeoHs_tOZTWuGzKA0uqIA73o85bloKQiSrk/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL2F4anNybDlm/bndkYjF1ZGJxb3d0/LnBuZw" class="article-body-image-wrapper"&gt;&lt;img src="https://community.interledger.org/images/8yqgQqqAZeoHs_tOZTWuGzKA0uqIA73o85bloKQiSrk/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL2F4anNybDlm/bndkYjF1ZGJxb3d0/LnBuZw" alt="Self-host ProgNovel" width="880" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Progress on objectives
&lt;/h2&gt;

&lt;p&gt;Following the progress in &lt;a href="https://community.webmonetization.org/prognovel/prognovel-grant-report-1-1jg9"&gt;my previous grant report&lt;/a&gt;, there are some improvement and bug fixes that I made for ProgNovel. Among the is to improve and wrapping UI for affiliate marketing feature. This includes improvement for it to fit display in mobile screen, which ended up also reworking UI of the rest of the site for mobile users.&lt;a href="https://community.interledger.org/images/Cb6QA0GXxSL-c-6F23wkscwqX5L0qjMLEK4cogN4UiQ/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzLzVrMm9ya3N3/Mm1xaHR2a2dnc2ky/LnBuZw" class="article-body-image-wrapper"&gt;&lt;img src="https://community.interledger.org/images/Cb6QA0GXxSL-c-6F23wkscwqX5L0qjMLEK4cogN4UiQ/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzLzVrMm9ya3N3/Mm1xaHR2a2dnc2ky/LnBuZw" alt="ProgNovel mobile" width="880" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Meanwhile, hardware from my last budget reallocation has been helping a bit in here. Due to schedule constrain I reallocate some of the budget to get a tablet, which is helpful as a testing device and a workstation to produce handmade assets. Beside having assets that I recently made open with CC-Licensed assets (&lt;a href="https://community.webmonetization.org/radhyr/help-sharing-your-assets-to-the-community-5hh2"&gt;check it here&lt;/a&gt;), I'm also able to make a switch of some generic illustration I got from the internet with my own - though some of it may still a bit rough since I'm only a beginner in drawing assets digitally. Because the late investment on this part I reckon it will be more useful post-grant duration for ProgNovel and me contributing to the community space.&lt;/p&gt;




&lt;p&gt;Other part of my progress also happens on tooling around ProgNovel. By default, ProgNovel CLI is designed to be used offline with one person acts as a gatekeeper for the site content. As this is not ideal for collaborative purpose, I've tried several other ways like experimenting with Github Action and Discord bot.&lt;/p&gt;

&lt;p&gt;ProgNovel CLI now allows in creating Github Action workflow where if uploaded to remote repo, will automatically publish content when &lt;code&gt;main&lt;/code&gt; branch is being merged. This means other members of the group that own a Github account can make pull request or commit their own contents, instead having to wait one person that install ProgNovel CLI to publish new contents to ProgNovel websites.&lt;/p&gt;

&lt;p&gt;As for Discord API, I have tried several ways in making a bot to do something about new contents on ProgNovel sites. At first I'm using a nodejs server trying to create this, but after several times failed in getting what I wanted I realized Discord has features called Webhook - something that I'm aware previously but not exactly know that it actually creates a Discord bot because I'm simply not a Discord power user. After scrapping my previous nodejs server bot and get my hands on Discord Webhook, I realized the latter actually able to provide me bot with more intuitive way to use even for non-developer users, as it can directly be configured inside Discord app settings. What's more, bots made with Discord Webhook don't have the need for users to rent a server to get it live, and more practical and easier to connect with ProgNovel. And what's this little Discord bot do is to announce every publish made on ProgNovel, something that is commonly be seen in Discord groups in the webnovel community (other collaborative features from Discord bot being scrapped, as Github Action already do its purpose).&lt;a href="https://community.interledger.org/images/9fr5aoqhclWelShO-uh0xg_aD5vuOcx6YUNNQbdtyZ8/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL3ZuNzZ2M2wx/Zzl3cmdlbXRpbHF0/LnBuZw" class="article-body-image-wrapper"&gt;&lt;img src="https://community.interledger.org/images/9fr5aoqhclWelShO-uh0xg_aD5vuOcx6YUNNQbdtyZ8/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL3ZuNzZ2M2wx/Zzl3cmdlbXRpbHF0/LnBuZw" alt="Discord bot" width="880" height="559"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;The next part is to get ProgNovel ready to be published. In the past two weeks I'm doing trial and error in getting how ProgNovel should be published. &lt;/p&gt;

&lt;p&gt;At first, I'm planning to make several repos for ProgNovel a monorepo so that it can be easily distributed. This, however, proved to be a difficult decision, as I'm getting stuck in making the CI/CD of some Jamstack/serverless platforms being more complicated that it already is, due to how hosting on monorepo being an edge case many of these platforms and some of my Github Action workflows simply not being able to run at all. &lt;/p&gt;

&lt;p&gt;For example, as I tried to simplify hosting backend for ProgNovel using &lt;a href="https://developers.cloudflare.com/workers/platform/deploy-button"&gt;Cloudflare Workers deploy button&lt;/a&gt;, I encountered a weird crash. I tried on getting help on Cloudflare community forum (&lt;a href="https://community.cloudflare.com/t/workers-deploy-button-url-renders-a-blank-white-page/330653"&gt;I posted it here&lt;/a&gt;), but still haven't managed to get any help after two weeks.&lt;/p&gt;

&lt;p&gt;I redo in moving my repos to a monorepo but still migrate them to be hosted under a Github organization I created a few months ago. Now they are being hosted on &lt;a href="https://github.com/prognoveljs"&gt;https://github.com/prognoveljs&lt;/a&gt;, with previously private repos now being public, and finally anyone can self-host ProgNovel for free.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key activities
&lt;/h2&gt;

&lt;p&gt;The fifth month of GftW is me having to work on tooling for ProgNovel, like creating and debugging Github action and Discord bot.&lt;/p&gt;

&lt;p&gt;As for the last month is having to prepare launching of ProgNovel, which consist to many trial and error in connecting three different repos together which proves to be more difficult than I expected due to how hosting platforms having their own edge cases, which also forces me to rewrite some of the documentation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Communications and marketing
&lt;/h2&gt;

&lt;p&gt;Though a bit late, I've received the rough cut of promotional video from my contractors. The contractors I commissioned it for managed to get the grasp of the concept I want them to make, though things not going smoothly in their post-production. I'm still waiting for the final cut for the promotional video which I hope gets delivered before my Grant for the Web duration ended.&lt;/p&gt;

&lt;p&gt;Aside from the promotional video, most of Grant for the Web I received mainly for development purpose, so marketing to the community happens post-grant duration.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s next?
&lt;/h2&gt;

&lt;p&gt;For short-term goal, launching the project means spreading words to let authors and creators know about he benefit of ProgNovel and Web Monetization API through forums and social media. Promotional video might help in this regard.&lt;/p&gt;

&lt;p&gt;Long-term goal for ProgNovel is to research technologies more to align ProgNovel with more Web3 technologies, on top of incoming Interledger features like Coil tipping and features unlocked by Rafiki. I'm also interested in exploring NFTs and smart contract on XRPL network once those features are available for public.&lt;/p&gt;

&lt;p&gt;Ultimately, I might still want to expand more opportunities and business models unlocked by Web Monetization API. And to do this openly in a way that others also can use them is to focus my time more on my library &lt;a href="https://github.com/prognoveljs/webfunding"&gt;Webfunding.js&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Webfunding.js helps me tremendously in ProgNovel by enabling revenue share and affiliate marketing with Web Monetization API. But it lacks documentation pages and up until now, I haven't got the time to work on to polish it more and realize its upmost potential. For now, after marketing ProgNovel done, I reckon working more on Webfunding.js will be my homework in the near future.&lt;/p&gt;

&lt;h2&gt;
  
  
  What community support would benefit your project?
&lt;/h2&gt;

&lt;p&gt;Having more vibrant discussions on the possibility of Web Monetization and Interledger may helps inspire more polished business models. Please contribute to posts with #discuss tag and other discussion posts made by the community members, or share your ideas by writing your own full-blown articles!&lt;/p&gt;

&lt;h2&gt;
  
  
  Additional comments
&lt;/h2&gt;

&lt;p&gt;Many thanks for GftW team and other community members who spare their time in accommodating and taking the time to share ideas for the Web Monetization community. &lt;/p&gt;

&lt;p&gt;Though the time for ProgNovel ending as the grantee of Grant for the Web, I do hope it is not the ending for me to part ways with Web Monetization community space. It is an honor for me to be included as part of this early movement of Web Monetization innovation - and sure I hope I can still be part of this for a few years to come to watch how Web Monetizationa and Interledger can flourish and influence the internet in a positive way! (Hey, maybe later when everyone uses Web Monetization in the future, I can get the privilege to brag about being as one of those early adopters like how those cryptobros always said they remember Bitcoin was very cheap in those early days😉)&lt;/p&gt;

&lt;h2&gt;
  
  
  Relevant links/resources
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/prognoveljs"&gt;
        prognoveljs
      &lt;/a&gt; / &lt;a href="https://github.com/prognoveljs/prognovel-workers"&gt;
        prognovel-workers
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Cloudflare Workers for ProgNovel.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
🤖 ProgNovel Workers&lt;/h1&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/c1d6d85da5ea83115cf6d9c19898a0ede766fc094939e8ada926258b1fcba5f1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d61696e7461696e65642533462d7965732d677265656e2e737667"&gt;&lt;img src="https://camo.githubusercontent.com/c1d6d85da5ea83115cf6d9c19898a0ede766fc094939e8ada926258b1fcba5f1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d61696e7461696e65642533462d7965732d677265656e2e737667" alt="maintained?"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/58796c3151d180a8718c9003a2f4be50520e913b5fd0eb37e619ad5c82db24d9/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f70726f676e6f76656c6a732f70726f676e6f76656c2d776f726b6572732f646576656c6f70"&gt;&lt;img src="https://camo.githubusercontent.com/58796c3151d180a8718c9003a2f4be50520e913b5fd0eb37e619ad5c82db24d9/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f70726f676e6f76656c6a732f70726f676e6f76656c2d776f726b6572732f646576656c6f70" alt="last commit"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/3de7cdec668816300191c41b12037f9f03bc11d560705e792796395316e07ed4/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6d6d69742d61637469766974792f6d2f70726f676e6f76656c6a732f70726f676e6f76656c2d776f726b6572732f646576656c6f70"&gt;&lt;img src="https://camo.githubusercontent.com/3de7cdec668816300191c41b12037f9f03bc11d560705e792796395316e07ed4/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6d6d69742d61637469766974792f6d2f70726f676e6f76656c6a732f70726f676e6f76656c2d776f726b6572732f646576656c6f70" alt="commit"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/2bb6931bfd264c0f4b5657cd9022da858a16af323ab93031a6f8b34b9f624ead/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7061636b6167652d6a736f6e2f762f70726f676e6f76656c6a732f70726f676e6f76656c2d776f726b657273"&gt;&lt;img src="https://camo.githubusercontent.com/2bb6931bfd264c0f4b5657cd9022da858a16af323ab93031a6f8b34b9f624ead/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7061636b6167652d6a736f6e2f762f70726f676e6f76656c6a732f70726f676e6f76656c2d776f726b657273" alt="version"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
How to get ProgNovel backend&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://deploy.workers.cloudflare.com/?url=https://github.com/prognoveljs/prognovel-workers" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/6eb04703e85da31c430de46d32a904a7c55c0b3bc00811ae689f14faf91cd32e/68747470733a2f2f6465706c6f792e776f726b6572732e636c6f7564666c6172652e636f6d2f627574746f6e" alt="Deploy to Cloudflare Workers"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Make sure you have a Github account and Cloudflare Workers account first, and make sure you have publish content to Cloudflare Workers network by following &lt;a href="https://github.com/prognoveljs/prognovel-cli"&gt;https://github.com/prognoveljs/prognovel-cli&lt;/a&gt;. Start by clicking Cloudflare Workers deploy button above.&lt;/li&gt;
&lt;li&gt;Authorize Clouflare Workers with your Github account. If you are redirected to the main page of Cloudflare Workers deploy site after authorizing, simply click browser's go back button to return to ProgNovel backend's deploy page.&lt;/li&gt;
&lt;li&gt;Add your account information. Enter your Cloudflare Workers Account ID and API Token, which the deploy page has guide for.&lt;/li&gt;
&lt;li&gt;The deploy process will pause once you get to the next step and will ask you to enable Workflow for Github Action of your repo. Click the link to your repo and enable Github Action for your repo if you haven't already. Go back to the deploy page and click the "Workflow…&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/prognoveljs/prognovel-workers"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/prognoveljs"&gt;
        prognoveljs
      &lt;/a&gt; / &lt;a href="https://github.com/prognoveljs/prognovel-cli"&gt;
        prognovel-cli
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      CLI for ProgNovel.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
💻 ProgNovel CLI&lt;/h1&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/c1d6d85da5ea83115cf6d9c19898a0ede766fc094939e8ada926258b1fcba5f1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d61696e7461696e65642533462d7965732d677265656e2e737667"&gt;&lt;img src="https://camo.githubusercontent.com/c1d6d85da5ea83115cf6d9c19898a0ede766fc094939e8ada926258b1fcba5f1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d61696e7461696e65642533462d7965732d677265656e2e737667" alt="maintained?"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/1fd8853fbebb3d129081751dfec538dbdb48428677cfb11312da13b6ce4e22a7/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f70726f676e6f76656c6a732f70726f676e6f76656c2d636c692f646576656c6f70"&gt;&lt;img src="https://camo.githubusercontent.com/1fd8853fbebb3d129081751dfec538dbdb48428677cfb11312da13b6ce4e22a7/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f70726f676e6f76656c6a732f70726f676e6f76656c2d636c692f646576656c6f70" alt="last commit"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/9fd910886855565384051d2b3bccef68c94cb39ff462c2c40161c1a261cdb522/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6d6d69742d61637469766974792f6d2f70726f676e6f76656c6a732f70726f676e6f76656c2d636c692f646576656c6f70"&gt;&lt;img src="https://camo.githubusercontent.com/9fd910886855565384051d2b3bccef68c94cb39ff462c2c40161c1a261cdb522/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6d6d69742d61637469766974792f6d2f70726f676e6f76656c6a732f70726f676e6f76656c2d636c692f646576656c6f70" alt="commit"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/79b40d809c54614b053903cf39cdb72ebe9a841edca2f141344decbab7008094/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7061636b6167652d6a736f6e2f762f70726f676e6f76656c6a732f70726f676e6f76656c2d636c69"&gt;&lt;img src="https://camo.githubusercontent.com/79b40d809c54614b053903cf39cdb72ebe9a841edca2f141344decbab7008094/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7061636b6167652d6a736f6e2f762f70726f676e6f76656c6a732f70726f676e6f76656c2d636c69" alt="version"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
👇 ProgNovel CLI installation&lt;/h2&gt;
&lt;p&gt;Before you install ProgNovel CLI, you need to host backend for ProgNovel first. Follow installation guide for &lt;a href="https://github.com/prognoveljs/prognovel-workers"&gt;ProgNovel Workers backend here&lt;/a&gt;. Once your backend live, proceed installing the CLI:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install ProgNovel CLI to your computer. You need a stable release of &lt;a href="https://nodejs.org/" rel="nofollow"&gt;Node.js&lt;/a&gt; installed first, then in command prompt, run &lt;code&gt;npm install @prognovel/cli -g&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;In an empty folder, open command prompt and run &lt;code&gt;prognovel new&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;You need to have a way to connect to Cloudflare Workers servers by setting the value of environment secrets. If you manage your ProgNovel project folder locally in a computer, you can configure environment secrets via &lt;code&gt;.env&lt;/code&gt; file in your root project folder created in step (2) - (&lt;code&gt;.env&lt;/code&gt; file might be hidden in your Explorer app); if you host this project folder on Github repo, you can consult &lt;a href="https://docs.github.com/en/actions/security-guides/encrypted-secrets"&gt;this page&lt;/a&gt; to create your environment…&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/prognoveljs/prognovel-cli"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/prognoveljs"&gt;
        prognoveljs
      &lt;/a&gt; / &lt;a href="https://github.com/prognoveljs/prognovel-app"&gt;
        prognovel-app
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Next-generation webnovel Progressive Web App.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
🚀 ProgNovel&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://github.com/prognoveljs/prognovel-app/actions/workflows/nodejs.yml"&gt;&lt;img src="https://community.interledger.org/images/eU-9oQDchQf9f26CQluf7NBAgSlmNpJwiYV-tS8NZ5I/w:880/mb:500000/ar:1/aHR0cHM6Ly9naXRo/dWIuY29tL3Byb2du/b3ZlbGpzL3Byb2du/b3ZlbC1hcHAvYWN0/aW9ucy93b3JrZmxv/d3Mvbm9kZWpzLnlt/bC9iYWRnZS5zdmc" alt="NodeJS Build"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/c1d6d85da5ea83115cf6d9c19898a0ede766fc094939e8ada926258b1fcba5f1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d61696e7461696e65642533462d7965732d677265656e2e737667"&gt;&lt;img src="https://camo.githubusercontent.com/c1d6d85da5ea83115cf6d9c19898a0ede766fc094939e8ada926258b1fcba5f1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d61696e7461696e65642533462d7965732d677265656e2e737667" alt="maintained?"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/3f057a5721b2548ba2477028827cad8cc1bfbe7e52dd08989504de2b89d93153/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f70726f676e6f76656c6a732f70726f676e6f76656c2d6170702f646576656c6f70"&gt;&lt;img src="https://camo.githubusercontent.com/3f057a5721b2548ba2477028827cad8cc1bfbe7e52dd08989504de2b89d93153/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f70726f676e6f76656c6a732f70726f676e6f76656c2d6170702f646576656c6f70" alt="last commit"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/f1b000035313cb638d1b3c91542b09fb87b59ec2a21ba9dc5795e716296eeede/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6d6d69742d61637469766974792f6d2f70726f676e6f76656c6a732f70726f676e6f76656c2d6170702f646576656c6f70"&gt;&lt;img src="https://camo.githubusercontent.com/f1b000035313cb638d1b3c91542b09fb87b59ec2a21ba9dc5795e716296eeede/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6d6d69742d61637469766974792f6d2f70726f676e6f76656c6a732f70726f676e6f76656c2d6170702f646576656c6f70" alt="commit"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/8ff113a31a0d37167d97e0554f179b6ad323d17c22cb5af3181f1deca1e677b9/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7061636b6167652d6a736f6e2f762f70726f676e6f76656c6a732f70726f676e6f76656c2d617070"&gt;&lt;img src="https://camo.githubusercontent.com/8ff113a31a0d37167d97e0554f179b6ad323d17c22cb5af3181f1deca1e677b9/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7061636b6167652d6a736f6e2f762f70726f676e6f76656c6a732f70726f676e6f76656c2d617070" alt="version"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/79d4406f5ffd095e7a330d90dddee143a98597ddbe017941147ddb1aa1f584d5/68747470733a2f2f696d672e736869656c64732e696f2f6e65746c6966792f64613530346638382d653738632d346536332d626564342d353265626631333836306232"&gt;&lt;img src="https://camo.githubusercontent.com/79d4406f5ffd095e7a330d90dddee143a98597ddbe017941147ddb1aa1f584d5/68747470733a2f2f696d672e736869656c64732e696f2f6e65746c6966792f64613530346638382d653738632d346536332d626564342d353265626631333836306232" alt="netlify"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://demo.prognovel.com" rel="nofollow"&gt;Demo&lt;/a&gt; | &lt;a href="https://github.com/prognoveljs/prognovel-appCHANGELOG.md"&gt;Changelog&lt;/a&gt; | &lt;a href="https://youtu.be/4nBUq1638zk" rel="nofollow"&gt;Promotional Video&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ProgNovel Promotional Video (YouTube)
&lt;a href="https://youtu.be/4nBUq1638zk" rel="nofollow"&gt;&lt;img src="https://community.interledger.org/images/WsYPYLsNG7Z7tojucCahk8cmOJFupoFJgolgm7OgrDs/w:880/mb:500000/ar:1/aHR0cHM6Ly9naXRo/dWIuY29tL3Byb2du/b3ZlbGpzL3Byb2du/b3ZlbC1hcHBpbWFn/ZXMvcHYtc2NyZWVu/c2hvdC5wbmc" alt="ProgNovel Promotional Video"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ProgNovel is a JAMstack web app to make great webnovels. The main feature of ProgNovel, beside offline-first
web app with offline read features and great performance, is to be able to inject interactive plugins
for content creators to experiment with. Because ProgNovel built mainly in Jamstack architecture, it can be hosted with great loading page performance on many Jamstack platform free-tier offerings such as Netlify and Cloudflare Workers.&lt;/p&gt;
&lt;h2&gt;
Screenshot&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;ProgNovel on Desktop&lt;/em&gt;
&lt;a rel="noopener noreferrer" href="https://github.com/prognoveljs/prognovel-appimages/prognovel-desktop-new.jpg"&gt;&lt;img src="https://community.interledger.org/images/XN7Qxv8uHbTmst46AwtztJyw2MjNE8aXh6TD8d0bqpM/w:880/mb:500000/ar:1/aHR0cHM6Ly9naXRo/dWIuY29tL3Byb2du/b3ZlbGpzL3Byb2du/b3ZlbC1hcHBpbWFn/ZXMvcHJvZ25vdmVs/LWRlc2t0b3AtbmV3/LmpwZw" alt="ProgNovel on Desktop" title="ProgNovel on Desktop"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;ProgNovel on Mobile&lt;/em&gt;
&lt;a rel="noopener noreferrer" href="https://github.com/prognoveljs/prognovel-appimages/prognovel-mobile.jpg"&gt;&lt;img src="https://community.interledger.org/images/UUksQ5Ich7YWUUHfU8R0zFS29QxbPa7osuwrYmwm6IQ/w:880/mb:500000/ar:1/aHR0cHM6Ly9naXRo/dWIuY29tL3Byb2du/b3ZlbGpzL3Byb2du/b3ZlbC1hcHBpbWFn/ZXMvcHJvZ25vdmVs/LW1vYmlsZS5qcGc" alt="ProgNovel on Mobile" title="ProgNovel on Mobile"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Self-host ProgNovel&lt;/h2&gt;
&lt;p&gt;Although ProgNovel strives to be as simple as possible, it is currently very difficult to create a smooth flow for deployment due to how young Jamstack ecosystem is (the architecture ProgNovel uses). In the future as the toolings more mature, we're hoping to simplify the deployment process - but for now we'll have to get our hands dirty and go through…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/prognoveljs/prognovel-app"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


</description>
      <category>grantreports</category>
    </item>
    <item>
      <title>ProgNovel is LIVE!</title>
      <dc:creator>Radhy</dc:creator>
      <pubDate>Wed, 08 Dec 2021 19:10:37 +0000</pubDate>
      <link>https://community.interledger.org/prognovel/prognovel-is-live-4fpb</link>
      <guid>https://community.interledger.org/prognovel/prognovel-is-live-4fpb</guid>
      <description>&lt;p&gt;After a nearly six months with Grant for the Web my project ProgNovel is finally live! 🚀&lt;/p&gt;

&lt;p&gt;Previously private Github repos are now public, with a CLI is being published to NPM.&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/prognoveljs"&gt;
        prognoveljs
      &lt;/a&gt; / &lt;a href="https://github.com/prognoveljs/prognovel-workers"&gt;
        prognovel-workers
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Cloudflare Workers for ProgNovel.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
🤖 ProgNovel Workers&lt;/h1&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/c1d6d85da5ea83115cf6d9c19898a0ede766fc094939e8ada926258b1fcba5f1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d61696e7461696e65642533462d7965732d677265656e2e737667"&gt;&lt;img src="https://camo.githubusercontent.com/c1d6d85da5ea83115cf6d9c19898a0ede766fc094939e8ada926258b1fcba5f1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d61696e7461696e65642533462d7965732d677265656e2e737667" alt="maintained?"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/58796c3151d180a8718c9003a2f4be50520e913b5fd0eb37e619ad5c82db24d9/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f70726f676e6f76656c6a732f70726f676e6f76656c2d776f726b6572732f646576656c6f70"&gt;&lt;img src="https://camo.githubusercontent.com/58796c3151d180a8718c9003a2f4be50520e913b5fd0eb37e619ad5c82db24d9/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f70726f676e6f76656c6a732f70726f676e6f76656c2d776f726b6572732f646576656c6f70" alt="last commit"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/3de7cdec668816300191c41b12037f9f03bc11d560705e792796395316e07ed4/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6d6d69742d61637469766974792f6d2f70726f676e6f76656c6a732f70726f676e6f76656c2d776f726b6572732f646576656c6f70"&gt;&lt;img src="https://camo.githubusercontent.com/3de7cdec668816300191c41b12037f9f03bc11d560705e792796395316e07ed4/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6d6d69742d61637469766974792f6d2f70726f676e6f76656c6a732f70726f676e6f76656c2d776f726b6572732f646576656c6f70" alt="commit"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/2bb6931bfd264c0f4b5657cd9022da858a16af323ab93031a6f8b34b9f624ead/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7061636b6167652d6a736f6e2f762f70726f676e6f76656c6a732f70726f676e6f76656c2d776f726b657273"&gt;&lt;img src="https://camo.githubusercontent.com/2bb6931bfd264c0f4b5657cd9022da858a16af323ab93031a6f8b34b9f624ead/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7061636b6167652d6a736f6e2f762f70726f676e6f76656c6a732f70726f676e6f76656c2d776f726b657273" alt="version"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
How to get ProgNovel backend&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://deploy.workers.cloudflare.com/?url=https://github.com/prognoveljs/prognovel-workers" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/6eb04703e85da31c430de46d32a904a7c55c0b3bc00811ae689f14faf91cd32e/68747470733a2f2f6465706c6f792e776f726b6572732e636c6f7564666c6172652e636f6d2f627574746f6e" alt="Deploy to Cloudflare Workers"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Make sure you have a Github account and Cloudflare Workers account first, and make sure you have publish content to Cloudflare Workers network by following &lt;a href="https://github.com/prognoveljs/prognovel-cli"&gt;https://github.com/prognoveljs/prognovel-cli&lt;/a&gt;. Start by clicking Cloudflare Workers deploy button above.&lt;/li&gt;
&lt;li&gt;Authorize Clouflare Workers with your Github account. If you are redirected to the main page of Cloudflare Workers deploy site after authorizing, simply click browser's go back button to return to ProgNovel backend's deploy page.&lt;/li&gt;
&lt;li&gt;Add your account information. Enter your Cloudflare Workers Account ID and API Token, which the deploy page has guide for.&lt;/li&gt;
&lt;li&gt;The deploy process will pause once you get to the next step and will ask you to enable Workflow for Github Action of your repo. Click the link to your repo and enable Github Action for your repo if you haven't already. Go back to the deploy page and click the "Workflow…&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/prognoveljs/prognovel-workers"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/prognoveljs"&gt;
        prognoveljs
      &lt;/a&gt; / &lt;a href="https://github.com/prognoveljs/prognovel-cli"&gt;
        prognovel-cli
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      CLI for ProgNovel.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
💻 ProgNovel CLI&lt;/h1&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/c1d6d85da5ea83115cf6d9c19898a0ede766fc094939e8ada926258b1fcba5f1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d61696e7461696e65642533462d7965732d677265656e2e737667"&gt;&lt;img src="https://camo.githubusercontent.com/c1d6d85da5ea83115cf6d9c19898a0ede766fc094939e8ada926258b1fcba5f1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d61696e7461696e65642533462d7965732d677265656e2e737667" alt="maintained?"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/1fd8853fbebb3d129081751dfec538dbdb48428677cfb11312da13b6ce4e22a7/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f70726f676e6f76656c6a732f70726f676e6f76656c2d636c692f646576656c6f70"&gt;&lt;img src="https://camo.githubusercontent.com/1fd8853fbebb3d129081751dfec538dbdb48428677cfb11312da13b6ce4e22a7/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f70726f676e6f76656c6a732f70726f676e6f76656c2d636c692f646576656c6f70" alt="last commit"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/9fd910886855565384051d2b3bccef68c94cb39ff462c2c40161c1a261cdb522/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6d6d69742d61637469766974792f6d2f70726f676e6f76656c6a732f70726f676e6f76656c2d636c692f646576656c6f70"&gt;&lt;img src="https://camo.githubusercontent.com/9fd910886855565384051d2b3bccef68c94cb39ff462c2c40161c1a261cdb522/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6d6d69742d61637469766974792f6d2f70726f676e6f76656c6a732f70726f676e6f76656c2d636c692f646576656c6f70" alt="commit"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/79b40d809c54614b053903cf39cdb72ebe9a841edca2f141344decbab7008094/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7061636b6167652d6a736f6e2f762f70726f676e6f76656c6a732f70726f676e6f76656c2d636c69"&gt;&lt;img src="https://camo.githubusercontent.com/79b40d809c54614b053903cf39cdb72ebe9a841edca2f141344decbab7008094/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7061636b6167652d6a736f6e2f762f70726f676e6f76656c6a732f70726f676e6f76656c2d636c69" alt="version"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
👇 ProgNovel CLI installation&lt;/h2&gt;
&lt;p&gt;Before you install ProgNovel CLI, you need to host backend for ProgNovel first. Follow installation guide for &lt;a href="https://github.com/prognoveljs/prognovel-workers"&gt;ProgNovel Workers backend here&lt;/a&gt;. Once your backend live, proceed installing the CLI:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install ProgNovel CLI to your computer. You need a stable release of &lt;a href="https://nodejs.org/" rel="nofollow"&gt;Node.js&lt;/a&gt; installed first, then in command prompt, run &lt;code&gt;npm install @prognovel/cli -g&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;In an empty folder, open command prompt and run &lt;code&gt;prognovel new&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;You need to have a way to connect to Cloudflare Workers servers by setting the value of environment secrets. If you manage your ProgNovel project folder locally in a computer, you can configure environment secrets via &lt;code&gt;.env&lt;/code&gt; file in your root project folder created in step (2) - (&lt;code&gt;.env&lt;/code&gt; file might be hidden in your Explorer app); if you host this project folder on Github repo, you can consult &lt;a href="https://docs.github.com/en/actions/security-guides/encrypted-secrets"&gt;this page&lt;/a&gt; to create your environment…&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/prognoveljs/prognovel-cli"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/prognoveljs"&gt;
        prognoveljs
      &lt;/a&gt; / &lt;a href="https://github.com/prognoveljs/prognovel-app"&gt;
        prognovel-app
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Next-generation webnovel Progressive Web App.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
🚀 ProgNovel&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://github.com/prognoveljs/prognovel-app/actions/workflows/nodejs.yml"&gt;&lt;img src="https://community.interledger.org/images/eU-9oQDchQf9f26CQluf7NBAgSlmNpJwiYV-tS8NZ5I/w:880/mb:500000/ar:1/aHR0cHM6Ly9naXRo/dWIuY29tL3Byb2du/b3ZlbGpzL3Byb2du/b3ZlbC1hcHAvYWN0/aW9ucy93b3JrZmxv/d3Mvbm9kZWpzLnlt/bC9iYWRnZS5zdmc" alt="NodeJS Build"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/c1d6d85da5ea83115cf6d9c19898a0ede766fc094939e8ada926258b1fcba5f1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d61696e7461696e65642533462d7965732d677265656e2e737667"&gt;&lt;img src="https://camo.githubusercontent.com/c1d6d85da5ea83115cf6d9c19898a0ede766fc094939e8ada926258b1fcba5f1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d61696e7461696e65642533462d7965732d677265656e2e737667" alt="maintained?"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/3f057a5721b2548ba2477028827cad8cc1bfbe7e52dd08989504de2b89d93153/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f70726f676e6f76656c6a732f70726f676e6f76656c2d6170702f646576656c6f70"&gt;&lt;img src="https://camo.githubusercontent.com/3f057a5721b2548ba2477028827cad8cc1bfbe7e52dd08989504de2b89d93153/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f70726f676e6f76656c6a732f70726f676e6f76656c2d6170702f646576656c6f70" alt="last commit"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/f1b000035313cb638d1b3c91542b09fb87b59ec2a21ba9dc5795e716296eeede/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6d6d69742d61637469766974792f6d2f70726f676e6f76656c6a732f70726f676e6f76656c2d6170702f646576656c6f70"&gt;&lt;img src="https://camo.githubusercontent.com/f1b000035313cb638d1b3c91542b09fb87b59ec2a21ba9dc5795e716296eeede/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6d6d69742d61637469766974792f6d2f70726f676e6f76656c6a732f70726f676e6f76656c2d6170702f646576656c6f70" alt="commit"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/8ff113a31a0d37167d97e0554f179b6ad323d17c22cb5af3181f1deca1e677b9/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7061636b6167652d6a736f6e2f762f70726f676e6f76656c6a732f70726f676e6f76656c2d617070"&gt;&lt;img src="https://camo.githubusercontent.com/8ff113a31a0d37167d97e0554f179b6ad323d17c22cb5af3181f1deca1e677b9/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7061636b6167652d6a736f6e2f762f70726f676e6f76656c6a732f70726f676e6f76656c2d617070" alt="version"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/79d4406f5ffd095e7a330d90dddee143a98597ddbe017941147ddb1aa1f584d5/68747470733a2f2f696d672e736869656c64732e696f2f6e65746c6966792f64613530346638382d653738632d346536332d626564342d353265626631333836306232"&gt;&lt;img src="https://camo.githubusercontent.com/79d4406f5ffd095e7a330d90dddee143a98597ddbe017941147ddb1aa1f584d5/68747470733a2f2f696d672e736869656c64732e696f2f6e65746c6966792f64613530346638382d653738632d346536332d626564342d353265626631333836306232" alt="netlify"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://demo.prognovel.com" rel="nofollow"&gt;Demo&lt;/a&gt; | &lt;a href="https://github.com/prognoveljs/prognovel-appCHANGELOG.md"&gt;Changelog&lt;/a&gt; | &lt;a href="https://youtu.be/4nBUq1638zk" rel="nofollow"&gt;Promotional Video&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ProgNovel Promotional Video (YouTube)
&lt;a href="https://youtu.be/4nBUq1638zk" rel="nofollow"&gt;&lt;img src="https://community.interledger.org/images/WsYPYLsNG7Z7tojucCahk8cmOJFupoFJgolgm7OgrDs/w:880/mb:500000/ar:1/aHR0cHM6Ly9naXRo/dWIuY29tL3Byb2du/b3ZlbGpzL3Byb2du/b3ZlbC1hcHBpbWFn/ZXMvcHYtc2NyZWVu/c2hvdC5wbmc" alt="ProgNovel Promotional Video"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ProgNovel is a JAMstack web app to make great webnovels. The main feature of ProgNovel, beside offline-first
web app with offline read features and great performance, is to be able to inject interactive plugins
for content creators to experiment with. Because ProgNovel built mainly in Jamstack architecture, it can be hosted with great loading page performance on many Jamstack platform free-tier offerings such as Netlify and Cloudflare Workers.&lt;/p&gt;
&lt;h2&gt;
Screenshot&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;ProgNovel on Desktop&lt;/em&gt;
&lt;a rel="noopener noreferrer" href="https://github.com/prognoveljs/prognovel-appimages/prognovel-desktop-new.jpg"&gt;&lt;img src="https://community.interledger.org/images/XN7Qxv8uHbTmst46AwtztJyw2MjNE8aXh6TD8d0bqpM/w:880/mb:500000/ar:1/aHR0cHM6Ly9naXRo/dWIuY29tL3Byb2du/b3ZlbGpzL3Byb2du/b3ZlbC1hcHBpbWFn/ZXMvcHJvZ25vdmVs/LWRlc2t0b3AtbmV3/LmpwZw" alt="ProgNovel on Desktop" title="ProgNovel on Desktop"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;ProgNovel on Mobile&lt;/em&gt;
&lt;a rel="noopener noreferrer" href="https://github.com/prognoveljs/prognovel-appimages/prognovel-mobile.jpg"&gt;&lt;img src="https://community.interledger.org/images/UUksQ5Ich7YWUUHfU8R0zFS29QxbPa7osuwrYmwm6IQ/w:880/mb:500000/ar:1/aHR0cHM6Ly9naXRo/dWIuY29tL3Byb2du/b3ZlbGpzL3Byb2du/b3ZlbC1hcHBpbWFn/ZXMvcHJvZ25vdmVs/LW1vYmlsZS5qcGc" alt="ProgNovel on Mobile" title="ProgNovel on Mobile"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Self-host ProgNovel&lt;/h2&gt;
&lt;p&gt;Although ProgNovel strives to be as simple as possible, it is currently very difficult to create a smooth flow for deployment due to how young Jamstack ecosystem is (the architecture ProgNovel uses). In the future as the toolings more mature, we're hoping to simplify the deployment process - but for now we'll have to get our hands dirty and go through…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/prognoveljs/prognovel-app"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Though technically anyone can self-host ProgNovel now, I'm still actively looking for installation bugs and doing trials and errors to test the deployment flow to ensure the installation instructions are correct (unfortunately here I didn't manage to make them as simple as I want to be due to CI/CD issues with hosting/backend platforms). Not to mention that the documentation is still needs a little bit polishing. So while the code are being public I still need a bit time to actively announce that ProgNovel is published.&lt;/p&gt;

&lt;p&gt;I'm expecting for an official launch around 10~15 December. For now, feel free to look around and let me know if there's anything that interest you.&lt;/p&gt;

&lt;p&gt;Cheers&lt;br&gt;
🎉🎉🎉&lt;/p&gt;

</description>
      <category>community</category>
    </item>
    <item>
      <title>ProgNovel Plugins</title>
      <dc:creator>Radhy</dc:creator>
      <pubDate>Sun, 10 Oct 2021 16:37:26 +0000</pubDate>
      <link>https://community.interledger.org/prognovel/prognovel-plugins-2a41</link>
      <guid>https://community.interledger.org/prognovel/prognovel-plugins-2a41</guid>
      <description>&lt;p&gt;Hi guys.&lt;/p&gt;

&lt;p&gt;I have bundled up some of components I use in my project &lt;a href="https://demo.prognovel.com"&gt;ProgNovel&lt;/a&gt; and published it at github as Web Component. There are few problems I encountered during porting the plugins from Svelte to Web Components but I managed somehow. There are three of them for now, only one that's related to Web Monetization which is &lt;a href="https://www.youtube.com/watch?v=kMbTVBGOolk"&gt;Instant Affiliate Link&lt;/a&gt; generator for imitating affiliate marketing with only Web Monetization and a little bit know how of JavaScript.&lt;/p&gt;

&lt;p&gt;Here they are 🎉🎉🎉&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/prognoveljs"&gt;
        prognoveljs
      &lt;/a&gt; / &lt;a href="https://github.com/prognoveljs/prognovel-plugins"&gt;
        prognovel-plugins
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Plugins inspired by ProgNovel components that are made in Web Component.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
ProgNovel Plugins&lt;/h1&gt;
&lt;p&gt;A set of plugins inspired by ProgNovel components. Made with Svelte -&amp;gt; Web Component.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://prognovel-plugins.netlify.app/" rel="nofollow"&gt;&lt;strong&gt;DEMO&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
🖥️ &lt;code&gt;&amp;lt;novel-trivia&amp;gt;&amp;lt;/novel-trivia&amp;gt;&lt;/code&gt;
&lt;/h2&gt;
&lt;p&gt;Takes only &lt;code&gt;label&lt;/code&gt; attribute. Novel Trivia plugin is a component made as partially hidden box that can be revealed via user cursor hover. Good to create an auxiliary information that is not getting in the way of the main content.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;div class="highlight highlight-text-html-basic notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-kos"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;novel-trivia&lt;/span&gt; &lt;span class="pl-c1"&gt;label&lt;/span&gt;="&lt;span class="pl-s"&gt;Trivia&lt;/span&gt;"&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;
  Lorem ipsum dolor sit amet consectetur adipisicing elit. Repudiandae eum accusamus cupiditate
  quaerat fuga ratione aperiam voluptates dolorem pariatur odio, quo voluptatem aspernatur nostrum
  quam? Quaerat, perferendis! Excepturi, minus obcaecati?
&lt;span class="pl-kos"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;novel-trivia&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="pl-kos"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;script&lt;/span&gt; &lt;span class="pl-c1"&gt;src&lt;/span&gt;="&lt;span class="pl-s"&gt;/dist/prognovel-plugins.umd.js&lt;/span&gt;"&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;script&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
🪶 &lt;code&gt;&amp;lt;authors-note&amp;gt;&amp;lt;/authors-note&amp;gt;&lt;/code&gt;
&lt;/h2&gt;
&lt;p&gt;Takes only &lt;code&gt;name&lt;/code&gt; attribute. Author's Note plugin is a typical quote box to highlight comments by author of the content.&lt;/p&gt;
&lt;div class="highlight highlight-text-html-basic notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-kos"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;authors-note&lt;/span&gt; &lt;span class="pl-c1"&gt;name&lt;/span&gt;="&lt;span class="pl-s"&gt;ProgNovel&lt;/span&gt;"&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;
  Lorem ipsum dolor sit amet consectetur adipisicing elit. Repudiandae eum accusamus cupiditate&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/prognoveljs/prognovel-plugins"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


</description>
      <category>software</category>
      <category>community</category>
      <category>opensource</category>
      <category>webmonetization</category>
    </item>
    <item>
      <title>ProgNovel — Grant Report #1</title>
      <dc:creator>Radhy</dc:creator>
      <pubDate>Tue, 28 Sep 2021 10:18:31 +0000</pubDate>
      <link>https://community.interledger.org/prognovel/prognovel-grant-report-1-1jg9</link>
      <guid>https://community.interledger.org/prognovel/prognovel-grant-report-1-1jg9</guid>
      <description>&lt;p&gt;Hello all 🙋‍♂️🙋‍♂️🙋‍♂️&lt;/p&gt;

&lt;p&gt;It's finally time for me to submit my first Grant for the Web report. Before I'm diving in I'll be explaining what kind is my project Grant for the Web is funding, since officially this is the &lt;em&gt;first&lt;/em&gt; post I made directly about Grant for the Web.&lt;/p&gt;

&lt;p&gt;ProgNovel is a PWA project for webnovel that has been a working in progress even before I'm exposed to Web Monetization. The project came to be at first because I realized at some point, after trying to indie publishing my webnovel for a few years in many online platforms, that I wasn't suited for big platform publishing. ProgNovel came to be for an alternative for WordPress, since the 20 years old CMS, although good for general blogging, is inadequate in term of features and customisability when it comes to niche content form like webnovel, especially when indie publishers are in a pinch competing with big tech backed platforms and dozens of pirate aggregators.&lt;/p&gt;

&lt;p&gt;Honestly the experience of ProgNovel development pre-Grant for the Web hasn't been a smooth sailing for me. I started ProgNovel as a developer cum webnovel author, which meant in case I got some kind 9-to-5 of jobs (which I don't sadly), I'll have be an adult and retire either as developer or webnovel author, or both. I guess this is also the reality for many young content creators and artists who aspire to live a dream life by having to work on something they love.&lt;/p&gt;

&lt;p&gt;Despite financial struggle, though, I am still in need of resources like hardware refresh and some fund for daily expense. I was developing with  VS Code on a 4GB ram of Windows 10 laptop, already at its limit even without opening Chrome for debugging. With budget around $5~$10 per month, my usual internet bandwidth was at 1GB/day, which is not enough for heavy internet user like me, and if I needed more I'd have to stay up midnight till morning for cheap internet bandwidth from my providers, which at some point I building up an habit of staying up the entire night and sometimes energized with 2~5 cups of cheap coffee in a single night (I wasn't even a coffee drinker before). Thinking it back since around 2017 or 2018 a day where I was getting my sleep at night was getting rarer and rarer. Then back a few months ago when waiting for grant funds to arrive, &lt;a href="https://community.interledger.org/radhyr/afterthought-on-integrating-audiotarky-api-into-kendraio-app-16dk"&gt;I participated in a bounty program&lt;/a&gt; started by another grantee Kendraio app was helping for my immediate financial situation, giving me room to purchase more internet bandwidth and better coffee for my daily coffee intake. Fast forwards a few months later, the GftW funds arrived in my bank account. That is when my life changed a lot. Now I'm developing my projects with more powerful setup, I'm using the fund to upgrade my old 4GB Windows 10 Laptop to a 8GB version of M1 Mac Mini, boosting up my productivity by lessening VS Code lags and other the development pains (up to 5x dev server startup and finally say to annoying lags when typing in VS Code!). In addition, I'm starting to slowly shake off my previously unhealthy habit of staying up late since I'm no longer in bind of midnight internet plans that I previously had to rely on (I still ended up getting addicted to coffee though).&lt;/p&gt;

&lt;p&gt;Because many of experimental nature of ProgNovel I have struggled to gain support for the project. Around one or two years ago I went around offered for collaboration but came out with no satisfactory result. Most website owners either have their own in-house developers or would settle with established technologies and many not interested in modern web technique even though it might benefit them and their users. From what I'm seeing potential of a technology, case studies and researches are not enough to convince people to adopt new technologies - in this case I was once offered a WordPress website owner, whose website so slow it loads around 8 seconds here in Indonesia, to set him up a brand new, much faster JAMstack website without asking for a fee because I was their user for a long time; my offer for help was rejected. The reason I was rejected didn't have anything to do with the JAMstack technology. For them, it has to be a WordPress site because everyone else was using it - or rather, everyone else had success using it, and people tended to follow how other people succeed in doing something. I think this is also true for Web Monetization; a few conversations I had with strangers on the internet, I found people generally reluctant to adopt Web Monetization because ads and Patreon (or Kofi) already working for them (these are non developer folks I'm talking about so putting one line of meta tag for web monetization still not a trivial matter for people).&lt;/p&gt;

&lt;p&gt;Fortunately, though, for Web Monetization, most people tended to show "wait-and-see" attitude and didn't completely rejected the idea of having alternative source of revenue after knowing the possibility of more open and fair payments than ads or third-party patron platforms, and some of them also got excited knowing the possibility of more novel business scheme like revshare and affiliate link made easy with Web Monetization. I'm hoping this was the case for my experimental projects too like ProgNovel.&lt;/p&gt;

&lt;h2&gt;
  
  
  Screenshots
&lt;/h2&gt;

&lt;p&gt;ProgNovel uses CLI based content generation:&lt;a href="https://community.interledger.org/images/UQoEHav3YP8ffgRsYh2OQHMXiLO6DFckJv5OMVCtRXE/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL2FmNzk4ZjBv/dmJxMWw1dnlwank0/LnBuZw" class="article-body-image-wrapper"&gt;&lt;img src="https://community.interledger.org/images/UQoEHav3YP8ffgRsYh2OQHMXiLO6DFckJv5OMVCtRXE/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL2FmNzk4ZjBv/dmJxMWw1dnlwank0/LnBuZw" alt="ProgNovel CLI" width="880" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The screenshot of the site (&lt;a href="https://demo.prognovel.com"&gt;https://demo.prognovel.com&lt;/a&gt;): &lt;a href="https://community.interledger.org/images/d-7ifA9R9n2IABqgDiur_OdlDUQfLZdxsncI3zf5KcE/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzLzdtejZiOTU2/b3RqYzJ5cGkzaDky/LnBuZw" class="article-body-image-wrapper"&gt;&lt;img src="https://community.interledger.org/images/d-7ifA9R9n2IABqgDiur_OdlDUQfLZdxsncI3zf5KcE/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzLzdtejZiOTU2/b3RqYzJ5cGkzaDky/LnBuZw" alt="ProgNovel" width="880" height="533"&gt;&lt;/a&gt;&lt;br&gt;
Web Monetization subscription call-to-action screenshot:&lt;a href="https://community.interledger.org/images/imKRSkNy3q20m7bNZJxaLxSGFMZn1PeKPBiy37nCZJk/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL29uNWszNXEy/MWZkdXBqaWR6bmtv/LnBuZw" class="article-body-image-wrapper"&gt;&lt;img src="https://community.interledger.org/images/imKRSkNy3q20m7bNZJxaLxSGFMZn1PeKPBiy37nCZJk/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL29uNWszNXEy/MWZkdXBqaWR6bmtv/LnBuZw" alt="Web Monetization 1" width="880" height="530"&gt;&lt;/a&gt;&lt;br&gt;
Color themes unlocked after Web Monetization subscription:&lt;a href="https://community.interledger.org/images/UQWPZ6s5ePyu9Vmt2MPh1adxtc6LtGtCYv-4eLuSBGk/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzLzhhMGJqc210/NGp3eWQxa2xtbDJz/LnBuZw" class="article-body-image-wrapper"&gt;&lt;img src="https://community.interledger.org/images/UQWPZ6s5ePyu9Vmt2MPh1adxtc6LtGtCYv-4eLuSBGk/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzLzhhMGJqc210/NGp3eWQxa2xtbDJz/LnBuZw" alt="Themes unlocked" width="880" height="540"&gt;&lt;/a&gt;&lt;br&gt;
Premium content locked UI:&lt;a href="https://community.interledger.org/images/qKkLLpJofeFlFz_Vq0ibbITVUkzsqfvtOP2UUtQXgc0/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzLzFyZ3p0emsy/YWttb2o4ZjlzMHo1/LnBuZw" class="article-body-image-wrapper"&gt;&lt;img src="https://community.interledger.org/images/qKkLLpJofeFlFz_Vq0ibbITVUkzsqfvtOP2UUtQXgc0/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzLzFyZ3p0emsy/YWttb2o4ZjlzMHo1/LnBuZw" alt="Premium content" width="880" height="487"&gt;&lt;/a&gt;&lt;br&gt;
Revenue share in action:&lt;a href="https://community.interledger.org/images/BrIRJ5DeSwVrVeWjPAF2XSi89TUdGmDiZBtVlcauLTE/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzLzYxb2pvZ2Fv/NGduMnc1eDdpcjI4/LnBuZw" class="article-body-image-wrapper"&gt;&lt;img src="https://community.interledger.org/images/BrIRJ5DeSwVrVeWjPAF2XSi89TUdGmDiZBtVlcauLTE/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzLzYxb2pvZ2Fv/NGduMnc1eDdpcjI4/LnBuZw" alt="Revenue share" width="880" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;How to use ProgNovel's instant affiliate link:&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/kMbTVBGOolk"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;My new development set up:&lt;a href="https://community.interledger.org/images/0h1_x1nevvTqm_b0xgCQNBz6Y1815vHHFZRk87KxuT0/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL3V4Z2VlYmZj/ZzR4M2JnMGw2YjQ2/LmpwZw" class="article-body-image-wrapper"&gt;&lt;img src="https://community.interledger.org/images/0h1_x1nevvTqm_b0xgCQNBz6Y1815vHHFZRk87KxuT0/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL3V4Z2VlYmZj/ZzR4M2JnMGw2YjQ2/LmpwZw" alt="Dev setup" width="880" height="660"&gt;&lt;/a&gt;&lt;br&gt;
Testing on Android TV (perhaps add options for content creators to host videos too in the future?):&lt;a href="https://community.interledger.org/images/QcLOYlP5N2kICIwkVoPntF8Fe61j-vONNN0Yjrq53wE/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL3UyZWoyaDk0/NzJoaHdlMTUwdjVw/LmpwZw" class="article-body-image-wrapper"&gt;&lt;img src="https://community.interledger.org/images/QcLOYlP5N2kICIwkVoPntF8Fe61j-vONNN0Yjrq53wE/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL3UyZWoyaDk0/NzJoaHdlMTUwdjVw/LmpwZw" alt="ProgNovel on Android TV" width="880" height="660"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Project Update
&lt;/h2&gt;

&lt;p&gt;In here, Grant for the Web budget helps tremendously. I was finally able to refresh my hardware for development and developing ProgNovel wasn't as painfully slow as it used to, even allowing me to works on multiple projects at the same time. Latest iteration of &lt;a href="https://community.interledger.org/prognovel/simple-and-composable-web-monetization-advanced-features-with-webfunding-js-3nkn"&gt;Webfunding.js&lt;/a&gt; is only possible because I simultaneously develop Webfunding.js and tested it on ProgNovel for instant feedback loops. Without it, I probably would settle with the old Webfunding.js syntax because I'd spend my time developing with frustration of coding with lags instead of getting inspired.&lt;/p&gt;

&lt;p&gt;In addition, there are some future plans that I previously mentioned in second chance proposal, that some ended up derailed from my original plan. This is because 1) hosting platforms that ProgNovel is optimized for is getting better, so some experimental tech like IPFS and Ceramic network I'd like to explore are being put on hold, 2) they're not part of GftW six-months roadmap so there's really nothing important feature getting dropped from the roadmap 3) other side project like Webfunding.js turned out works better with ProgNovel than I originally expected and I planned to focus on this instead.&lt;/p&gt;

&lt;p&gt;Overall, basic UI for Web Monetization and relevant features in ProgNovel have been put into their places, with only polishing, picking up delayed roadmap I had pre-GftW duration, and planning out distribution for production release at the end of six-months GftW duration.&lt;/p&gt;
&lt;h2&gt;
  
  
  Progress on objectives
&lt;/h2&gt;

&lt;p&gt;On the GftW roadmap doesn't have much significant hiccup during the development. There's a budget relocation during on hardware budgeting which is expected since I wouldn't have set on hardware I'd like to use since computers and laptops lining ups would change a lot between the time I wrote my proposal and the time I actually got the grant fund. I also settled the schedules with my contractor and agreed that their works will start at early October (this already delayed due to Covid), creating videos for marketing and explainer purpose for the rest of the grant duration--which means, promotional videos are in progress.&lt;/p&gt;

&lt;p&gt;The documentation of ProgNovel is in progress since I plan to hold back writing documentation for features that yet I deem stable (or might get refactored during the development). Documentation on features outlined in GftW proposal however, like revshare and affiliate marketing, has been online, though isn't practical right now since ProgNovel hasn't been go into production yet and the documentation might get a rewrite once I settle on the flow of how ProgNovel is going to be used by users. (they're here: &lt;a href="https://demo.prognovel.com/help/monetization"&gt;https://demo.prognovel.com/help/monetization&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Speaking of revshare and affiliate marketing, these features turned out quite well considered that it can be reused by others through open-source &lt;a href="https://community.interledger.org/prognovel/simple-and-composable-web-monetization-advanced-features-with-webfunding-js-3nkn"&gt;Webfunding.js&lt;/a&gt; library. I was kinda like how Webfunding.js turning out with chainable Web Monetization class that currently I'm experimenting with, since it would be straightforward if I'm (or other dev) wished to extend the feature beyond revshare and affiliate marketing; as an example of this, a few days since I wrote my recent post about Webfunding.js, I extend it with a useful utility function called &lt;code&gt;.setBiasGroup()&lt;/code&gt; which allows payment pointer addresses to be separate into groups and their own rates.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://community.interledger.org/images/ioEanqblVuorMaSelP-sbGKHxhZc5nj28Xqrm0ZgbGo/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL2VmZ3dwaDJy/aWdkNWU1ejUxdjZ0/LnBuZw" class="article-body-image-wrapper"&gt;&lt;img src="https://community.interledger.org/images/ioEanqblVuorMaSelP-sbGKHxhZc5nj28Xqrm0ZgbGo/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL2VmZ3dwaDJy/aWdkNWU1ejUxdjZ0/LnBuZw" alt="Webfunding.js set bias group" width="739" height="221"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With this Webfunding.js one-line utility function, I'm able to change how groups of payment pointers interact when picking up winner payment address when calculating the revshare pool. This allows me to manage rates of payment pointers by groups in ProgNovel, as seen on &lt;a href="https://demo.prognovel.com/help/monetization/2-setup-web-monetization-website-staff"&gt;website staff&lt;/a&gt; against payment pointers from &lt;a href="https://demo.prognovel.com/help/monetization/3-setup-web-monetization-novel-staff"&gt;novel authors and contributors&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Beyond that, the developments of Web Monetization features of ProgNovel (chapter locks, affiliate marketing, etc) has been delivered in the latest iteration of ProgNovel. In month 4 I plan to release Web Component plugins based on ProgNovel but later I reckon focusing on Webfunding.js might be more helpful to the community in general than the plugins I previously planned on.&lt;/p&gt;
&lt;h2&gt;
  
  
  Key activities
&lt;/h2&gt;

&lt;p&gt;There's not much of key activities to be listed here since this funded project meant for solo development, if I am to be honest, mostly involving tinkering through ProgNovel codebases in VS Code, consuming articles and tech-related youtube videos I subscribed for knowledge refresh and inspiration. Every two or three days I opened this community space to see if there's a notification for me, checking out for what others are doing with GftW projects. &lt;/p&gt;

&lt;p&gt;Aside from that, I'm also occasionally cross-check how well the site perform in different browsers and devices. With this I found there are few UI bugs in Safari and some features are unavailable when browsing ProgNovel on Android TV web browsers.&lt;/p&gt;
&lt;h2&gt;
  
  
  Communications and marketing
&lt;/h2&gt;

&lt;p&gt;There's not much marketing reach needed for this project since mostly during the six months of GftW funded duration spent on developing the codebase. However, I do post a few of community space posts like &lt;a href="https://community.interledger.org/prognovel/sneak-peek-of-revenue-sharing-in-prognovel-59ip"&gt;this&lt;/a&gt; and &lt;a href="https://community.interledger.org/prognovel/simple-and-composable-web-monetization-advanced-features-with-webfunding-js-3nkn"&gt;this&lt;/a&gt;. There are also two pre-GftW funded duration of community space posts that I published for the introduction of ProgNovel.&lt;/p&gt;

&lt;p&gt;I'm also waiting for my contractors to finish marketing videos for ProgNovel, which (should be) begin the video production somewhere around early October.&lt;/p&gt;
&lt;h2&gt;
  
  
  What’s next?
&lt;/h2&gt;

&lt;p&gt;As for the short term goal is for me to finalized UI and user flow for instant affiliate link feature--and while at it, preparing a more stable design of &lt;a href="https://community.interledger.org/prognovel/simple-and-composable-web-monetization-advanced-features-with-webfunding-js-3nkn"&gt;Webfunding.js&lt;/a&gt; to include the said feature for open source and public use after ProgNovel's grant funded duration completed. This month goal also is where documentation see more update since many of Web Monetization-related features of ProgNovel have become more stable.&lt;/p&gt;
&lt;h2&gt;
  
  
  What community support would benefit your project?
&lt;/h2&gt;

&lt;p&gt;Please visit a few of my discussion threads and share your thoughts on the discussed topics. It won't take much of your time to share your opinions but we all will benefits from more voices as we can inspire each other with our own point of view and ideas.&lt;/p&gt;
&lt;h2&gt;
  
  
  Additional comments
&lt;/h2&gt;

&lt;p&gt;For now there's no additional comment for me to share.&lt;/p&gt;
&lt;h2&gt;
  
  
  Relevant links/resources  (optional)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://demo.prognovel.com"&gt;ProgNovel demo site&lt;/a&gt;&lt;br&gt;
&lt;a href="https://demo.prognovel.com/help/monetization"&gt;Learn how Web Monetization works in ProgNovel&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;tools:&lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/prognovel" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&gt;
      &lt;img src="https://community.interledger.org/images/0_hu_7AVUbwLtiw9mCLFdV9pqImXJ3Rx4bZsKG1n_Eg/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL2lt/YWdlcy9TNXhNLWt0/RjNXM2xjNFo2REVq/a0FmaHNnZ21pWEpS/TTVQeC1oZTVTaDh3/L3JzOmZpbGw6MTUw/OjE1MC9tYjo1MDAw/MDAvYXI6MS9hSFIw/Y0hNNkx5OWpiMjF0/L2RXNXBkSGt1YVc1/MFpYSnMvWldSblpY/SXViM0puTDNKbC9i/VzkwWldsdFlXZGxj/eTkxL2NHeHZZV1J6/TDI5eVoyRnUvYVhw/aGRHbHZiaTl3Y205/bS9hV3hsWDJsdFlX/ZGxMekUxL05pOWxa/alpoWlRNeFpDMHgv/WW1Ga0xUUTNNRFV0/T0daaC9PQzAyT1RJ/eU5tSTJNVFkxL09E/WXVhbkJu" alt="ProgNovel" width="150" height="150"&gt;
      &lt;div class="ltag__link__user__pic"&gt;
        &lt;img src="https://community.interledger.org/images/2iy9azh5wa3twCPVtFmESNML-ozYmWNiPSVgYbixbUc/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL2lt/YWdlcy90cThCQm1V/WVl2cGdWTVlKaWhP/R3czMnhkNjllMmVn/MzJ5ZUh2MWdnaFJz/L3JzOmZpbGw6MTUw/OjE1MC9tYjo1MDAw/MDAvYXI6MS9hSFIw/Y0hNNkx5OWpiMjF0/L2RXNXBkSGt1YVc1/MFpYSnMvWldSblpY/SXViM0puTDNKbC9i/VzkwWldsdFlXZGxj/eTkxL2NHeHZZV1J6/TDNWelpYSXYvY0hK/dlptbHNaVjlwYldG/bi9aUzh4TWpVdk1H/TmpNVGc1L1pUSXRa/bVJoTnkwME9EZGsv/TFdGbVpUSXROalEy/TUdZeC9PVGxsTUdN/d0xuQnVadw" alt="" width="128" height="128"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/prognovel/simple-and-composable-web-monetization-advanced-features-with-webfunding-js-3nkn" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Simple and composable Web Monetization advanced features with Webfunding.js (UPDATED)&lt;/h2&gt;
      &lt;h3&gt;Radhy for ProgNovel ・ Sep 8 '21 ・ 3 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#revenueshare&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#revshare&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#sneakpeak&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;br&gt;
please visit my discussion threads:&lt;br&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/radhyr" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://community.interledger.org/images/2iy9azh5wa3twCPVtFmESNML-ozYmWNiPSVgYbixbUc/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL2lt/YWdlcy90cThCQm1V/WVl2cGdWTVlKaWhP/R3czMnhkNjllMmVn/MzJ5ZUh2MWdnaFJz/L3JzOmZpbGw6MTUw/OjE1MC9tYjo1MDAw/MDAvYXI6MS9hSFIw/Y0hNNkx5OWpiMjF0/L2RXNXBkSGt1YVc1/MFpYSnMvWldSblpY/SXViM0puTDNKbC9i/VzkwWldsdFlXZGxj/eTkxL2NHeHZZV1J6/TDNWelpYSXYvY0hK/dlptbHNaVjlwYldG/bi9aUzh4TWpVdk1H/TmpNVGc1L1pUSXRa/bVJoTnkwME9EZGsv/TFdGbVpUSXROalEy/TUdZeC9PVGxsTUdN/d0xuQnVadw" alt="radhyr"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/radhyr/what-do-you-think-is-the-biggest-barrier-for-people-to-adopt-web-monetization-3060" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;What do you think is the biggest barrier for people to adopt Web Monetization?&lt;/h2&gt;
      &lt;h3&gt;Radhy ・ Jul 1 '21 ・ 1 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#discuss&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webmonetization&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/radhyr" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://community.interledger.org/images/2iy9azh5wa3twCPVtFmESNML-ozYmWNiPSVgYbixbUc/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL2lt/YWdlcy90cThCQm1V/WVl2cGdWTVlKaWhP/R3czMnhkNjllMmVn/MzJ5ZUh2MWdnaFJz/L3JzOmZpbGw6MTUw/OjE1MC9tYjo1MDAw/MDAvYXI6MS9hSFIw/Y0hNNkx5OWpiMjF0/L2RXNXBkSGt1YVc1/MFpYSnMvWldSblpY/SXViM0puTDNKbC9i/VzkwWldsdFlXZGxj/eTkxL2NHeHZZV1J6/TDNWelpYSXYvY0hK/dlptbHNaVjlwYldG/bi9aUzh4TWpVdk1H/TmpNVGc1L1pUSXRa/bVJoTnkwME9EZGsv/TFdGbVpUSXROalEy/TUdZeC9PVGxsTUdN/d0xuQnVadw" alt="radhyr"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/radhyr/dividend-revenue-sharing-12ig" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Dividend Revenue Sharing&lt;/h2&gt;
      &lt;h3&gt;Radhy ・ Jun 5 '21 ・ 5 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#community&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#revshare&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#rafiki&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#essay&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/radhyr" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://community.interledger.org/images/2iy9azh5wa3twCPVtFmESNML-ozYmWNiPSVgYbixbUc/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL2lt/YWdlcy90cThCQm1V/WVl2cGdWTVlKaWhP/R3czMnhkNjllMmVn/MzJ5ZUh2MWdnaFJz/L3JzOmZpbGw6MTUw/OjE1MC9tYjo1MDAw/MDAvYXI6MS9hSFIw/Y0hNNkx5OWpiMjF0/L2RXNXBkSGt1YVc1/MFpYSnMvWldSblpY/SXViM0puTDNKbC9i/VzkwWldsdFlXZGxj/eTkxL2NHeHZZV1J6/TDNWelpYSXYvY0hK/dlptbHNaVjlwYldG/bi9aUzh4TWpVdk1H/TmpNVGc1L1pUSXRa/bVJoTnkwME9EZGsv/TFdGbVpUSXROalEy/TUdZeC9PVGxsTUdN/d0xuQnVadw" alt="radhyr"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/radhyr/revenue-sharing-on-rafiki-mega-thread-2565" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Revenue Sharing on Rafiki Mega Thread&lt;/h2&gt;
      &lt;h3&gt;Radhy ・ Jun 1 '21 ・ 2 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#discuss&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#revshare&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#community&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#megathread&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;ProgNovel introduction:&lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/prognovel" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&gt;
      &lt;img src="https://community.interledger.org/images/0_hu_7AVUbwLtiw9mCLFdV9pqImXJ3Rx4bZsKG1n_Eg/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL2lt/YWdlcy9TNXhNLWt0/RjNXM2xjNFo2REVq/a0FmaHNnZ21pWEpS/TTVQeC1oZTVTaDh3/L3JzOmZpbGw6MTUw/OjE1MC9tYjo1MDAw/MDAvYXI6MS9hSFIw/Y0hNNkx5OWpiMjF0/L2RXNXBkSGt1YVc1/MFpYSnMvWldSblpY/SXViM0puTDNKbC9i/VzkwWldsdFlXZGxj/eTkxL2NHeHZZV1J6/TDI5eVoyRnUvYVhw/aGRHbHZiaTl3Y205/bS9hV3hsWDJsdFlX/ZGxMekUxL05pOWxa/alpoWlRNeFpDMHgv/WW1Ga0xUUTNNRFV0/T0daaC9PQzAyT1RJ/eU5tSTJNVFkxL09E/WXVhbkJu" alt="ProgNovel" width="150" height="150"&gt;
      &lt;div class="ltag__link__user__pic"&gt;
        &lt;img src="https://community.interledger.org/images/2iy9azh5wa3twCPVtFmESNML-ozYmWNiPSVgYbixbUc/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL2lt/YWdlcy90cThCQm1V/WVl2cGdWTVlKaWhP/R3czMnhkNjllMmVn/MzJ5ZUh2MWdnaFJz/L3JzOmZpbGw6MTUw/OjE1MC9tYjo1MDAw/MDAvYXI6MS9hSFIw/Y0hNNkx5OWpiMjF0/L2RXNXBkSGt1YVc1/MFpYSnMvWldSblpY/SXViM0puTDNKbC9i/VzkwWldsdFlXZGxj/eTkxL2NHeHZZV1J6/TDNWelpYSXYvY0hK/dlptbHNaVjlwYldG/bi9aUzh4TWpVdk1H/TmpNVGc1L1pUSXRa/bVJoTnkwME9EZGsv/TFdGbVpUSXROalEy/TUdZeC9PVGxsTUdN/d0xuQnVadw" alt="" width="128" height="128"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/prognovel/modern-jamstack-pwa-platform-for-web-novel-contents-prognovel-1p2j" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Modern Jamstack PWA platform for Web Novel Contents — ProgNovel&lt;/h2&gt;
      &lt;h3&gt;Radhy for ProgNovel ・ Mar 4 '21 ・ 5 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#mozfest&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#revshare&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#jamstack&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webnovel&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>grantreports</category>
    </item>
    <item>
      <title>Simple and composable Web Monetization advanced features with Webfunding.js (UPDATED)</title>
      <dc:creator>Radhy</dc:creator>
      <pubDate>Wed, 08 Sep 2021 12:42:55 +0000</pubDate>
      <link>https://community.interledger.org/prognovel/simple-and-composable-web-monetization-advanced-features-with-webfunding-js-3nkn</link>
      <guid>https://community.interledger.org/prognovel/simple-and-composable-web-monetization-advanced-features-with-webfunding-js-3nkn</guid>
      <description>&lt;p&gt;Beyond streaming micropayment, Web Monetization has many advanced features like revenue share and removing ads, accessible for everyone to set up on their own websites with a bit of efforts. &lt;/p&gt;

&lt;p&gt;However, not many would use them at the same time due to cumulative learning curve a website owner must tread in order to benefit from every single feature. After all, even removing ads with Web Monetization has its own tutorial page on official Web Monetization documentation. I have rework my library I wrote a year ago to include a simpler, composable practice of Web Monetization by chaining features of Web Monetization together in order to lower the barrier for people to adopt more complicated Web Monetization features.&lt;/p&gt;

&lt;h2&gt;
  
  
  🤔 How this is going to work
&lt;/h2&gt;

&lt;p&gt;Take a look of this example - let's say that three people, writers and editors, working together on an article about ocean and will receive revenue share of 4:3:2 ratio before the website owner taking share 10% of Web Monetization revenue. To attract people to subscribe to Web Monetization, they want to remove ads that wrapped under &lt;code&gt;&amp;lt;div class="ads"&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt; and also give influencers way to make money from converting URL of their article into affiliate link with 15% of profit every Web Monetization subscribers they bring. Usually to make this scenario happens the developer would spend hours trying to implement the features one by one. However, with Webfunding.js, it couldn't be more simpler than a few line of codes:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;install via NPM in your project folder&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;webfunding
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;somewhere in your Javascript&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;WebMonetization&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;webfunding&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;monetization&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;WebMonetization&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;registerPaymentPointers&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;$wallet.example.com/johnny#4&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;$wallet.example.com/lynda#3&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;$wallet.example.com/pete#2&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;$wallet.example.com/website-owner#10%&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;])&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;removeAdsOnStream&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;.ads&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;registerDynamicRevshare&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;my-awesome-website&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;15%&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;start&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In example above, I'm creating a WebMonetization object that register three of WebMonetiation advanced features; &lt;code&gt;.registerPaymentPointers()&lt;/code&gt; to set up payment pointers of creators with syntax of &lt;a href="https://github.com/prognoveljs/webfunding#relative-weight-revenue-sharing-"&gt;Webfunding.js&lt;/a&gt; to register revenue share between three creators and website owner based on agreed portions of the revenue. Next is &lt;code&gt;.removeAdsOnStream()&lt;/code&gt; that will run a DOM query selector of &lt;code&gt;ads&lt;/code&gt; class and remove it as soon as Web Monetization begins streaming. And finally, &lt;code&gt;.registerDynamicRevshare()&lt;/code&gt;, is a feature that I created from my GftW funded project &lt;a href="https://community.webmonetization.org/prognovel"&gt;ProgNovel&lt;/a&gt;, which will takes URI encoded payment pointer from &lt;code&gt;affiliate&lt;/code&gt; query string on the URL (for example &lt;code&gt;https://demo.prognovel.com/novel/yashura-legacy?affiliate=%24wallet.com%2Fexample&lt;/code&gt;) to include the foreign payment pointer to revshare pool, allowing unknown third-party to be included as an unknown payee, useful to attract influencers--this can later be stored in some kind of persistent database (currently local via IndexedDB) so that the affiliate link can also be included for future revenue for users that the influencers brought.&lt;/p&gt;

&lt;p&gt;All of this is chained à la JS functional programming which eventually end with a &lt;code&gt;start()&lt;/code&gt; command, which will begin the Web Monetization stream.&lt;/p&gt;

&lt;h2&gt;
  
  
  Great, how can I use it on my website?
&lt;/h2&gt;

&lt;p&gt;&lt;del&gt;Unfortunately, this isn't available publicly (yet) to the current version of &lt;a href="https://www.npmjs.com/package/webfunding"&gt;Webfunding.js&lt;/a&gt;. The current Webfunding.js published on NPM still use old syntax of Fundme.js (its predecessor) and only revshare feature available to try.&lt;/del&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EDIT:&lt;/strong&gt; This is already available to try in &lt;a href="https://www.npmjs.com/package/webfunding"&gt;Webfunding.js&lt;/a&gt; version 0.2.6 above, although at this moment the documentation on NPM hasn't been updated to the new syntax. There will be changes and the API isn't stable right now so please don't use this for production yet.&lt;/p&gt;

&lt;p&gt;Completing Webfunding.js and its resources (currently) isn't on my roadmap unfortunately, due to the funded GftW is my other project - but the good news is &lt;del&gt;I'm already got it working on my local computer, albeit lots of rough edges need to be polished, so if anyone interested in trying let me know in the comment, maybe I can publish some early version of this.&lt;/del&gt; (this is already published in Webfunding.js v0.2.6, but with caveat explained above!)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt; that there's still many features of Web Monetization will come to Webfunding.js, some of them yet unexplored that might be useful to create entirely new business models for creators. For example, previously I tried to include &lt;a href="https://webmonetization.org/docs/receipt-verifier"&gt;receipt verification&lt;/a&gt; but later found that there's no way to implement it without having to deploy an additional backend due to CORS issue - which is something beyond the scope of a Javascript library like Webfunding (currently!). This feature might return in the future version of Webfunding.js, though... so stay tuned and &lt;a href="https://community.webmonetization.org/prognovel"&gt;follow ProgNovel&lt;/a&gt; for future news!&lt;/p&gt;

&lt;p&gt;Cheers&lt;br&gt;
🎉🎉🎉&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>revenueshare</category>
      <category>revshare</category>
      <category>sneakpeak</category>
    </item>
    <item>
      <title>Sneak peek of revenue sharing in ProgNovel</title>
      <dc:creator>Radhy</dc:creator>
      <pubDate>Sun, 25 Jul 2021 04:57:44 +0000</pubDate>
      <link>https://community.interledger.org/prognovel/sneak-peek-of-revenue-sharing-in-prognovel-59ip</link>
      <guid>https://community.interledger.org/prognovel/sneak-peek-of-revenue-sharing-in-prognovel-59ip</guid>
      <description>&lt;p&gt;Hi guys!&lt;/p&gt;

&lt;p&gt;It's been almost two months since the start of my project with GftW and I'm happy to show a little bit of what I'm currently working on.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://community.interledger.org/images/Sm3pfPkuK__N_y29gBEErcSAtcX5n1H1Yjh3Sn6rLqA/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL20yN3Yxd2Js/M21zOW1jNGhsOWJk/LmpwZw" class="article-body-image-wrapper"&gt;&lt;img src="https://community.interledger.org/images/Sm3pfPkuK__N_y29gBEErcSAtcX5n1H1Yjh3Sn6rLqA/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL20yN3Yxd2Js/M21zOW1jNGhsOWJk/LmpwZw" alt="Revenue Share in ProgNovel" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since the start of ProgNovel, revenue share with Web Monetization has been one of the main feature of ProgNovel - which, additionally, has been expanded and explored to ProgNovel's experimental affiliate marketing system (which soon will be receiving a design overhaul!). As the star feature of ProgNovel, revshare is getting a little love, with the emerging revshare stats that will be the main focus of an UI that readers, creators, and contributors to check how revenue from Web Monetization API will be distributed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://community.interledger.org/images/mGE0-Jor7dCquxsYVleNRn7i1fQuSc61eXpym9tZJkc/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL3N0Yjh3b3Bw/bHBuazR4OG52MDEz/LmpwZw" class="article-body-image-wrapper"&gt;&lt;img src="https://community.interledger.org/images/mGE0-Jor7dCquxsYVleNRn7i1fQuSc61eXpym9tZJkc/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL3N0Yjh3b3Bw/bHBuazR4OG52MDEz/LmpwZw" alt="Revshare stats" width="528" height="207"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Don't be fooled by the same 40 numbers above; they'll show everyone's share later on, as this is still a WIP feature, there's still tons of things to do! ProgNovel will be launched at the end of my project's grant duration which is around the end of this year; and by that time, the final product of how revshare is gonna look in ProgNovel will be finalized.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EDIT 1 - 26 Jul, 2021:&lt;/strong&gt;&lt;br&gt;
I managed to add overlay'd avatars today though it still not reflecting real users' avatars. I reckon I'd integrated them with Gravatar service, though that I must edit a big chunk of the ProgNovel backend to do that.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://community.interledger.org/images/224Hnvv7HpB75b5zYMfwDsyweRAFWrD6EeeBjtdUMlQ/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL3AzeHVkejU1/emE1ZDM0aGZlNnhi/LmpwZw" class="article-body-image-wrapper"&gt;&lt;img src="https://community.interledger.org/images/224Hnvv7HpB75b5zYMfwDsyweRAFWrD6EeeBjtdUMlQ/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL3AzeHVkejU1/emE1ZDM0aGZlNnhi/LmpwZw" alt="new rev share" width="880" height="299"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EDIT 2 - 7 Aug, 2021:&lt;/strong&gt;&lt;br&gt;
I returned to tweak my library &lt;a href="https://www.npmjs.com/package/webfunding"&gt;WebfundingJS (formerly Fundme.js)&lt;/a&gt; to create revshare stats and leaderboard feature instead developing it to ProgNovel, allowing me to re-use the works I've done on revshare later in the future.&lt;/p&gt;

&lt;p&gt;The current screenshot of revshare stats in ProgNovel, which is about to be done with some details left to fill.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://community.interledger.org/images/GNg4xQXa27yX9DOsjmD4D5VuQ8z1WfUOnK3_6DZ529U/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL3ppcDh5bWhw/MWVoNG1ncXZkMWtq/LnBuZw" class="article-body-image-wrapper"&gt;&lt;img src="https://community.interledger.org/images/GNg4xQXa27yX9DOsjmD4D5VuQ8z1WfUOnK3_6DZ529U/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL3ppcDh5bWhw/MWVoNG1ncXZkMWtq/LnBuZw" alt="Revshare aug" width="880" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See you later!&lt;/p&gt;

</description>
      <category>revshare</category>
      <category>sneakpeek</category>
    </item>
    <item>
      <title>Modern Jamstack PWA platform for Web Novel Contents — ProgNovel</title>
      <dc:creator>Radhy</dc:creator>
      <pubDate>Thu, 04 Mar 2021 17:28:30 +0000</pubDate>
      <link>https://community.interledger.org/prognovel/modern-jamstack-pwa-platform-for-web-novel-contents-prognovel-1p2j</link>
      <guid>https://community.interledger.org/prognovel/modern-jamstack-pwa-platform-for-web-novel-contents-prognovel-1p2j</guid>
      <description>&lt;h2&gt;
  
  
  Project overview
&lt;/h2&gt;

&lt;p&gt;ProgNovel is (soon to be) open-source platform for web novel contents with the capability of modern web app, including Progressive Web App's offline and installable capability. It is hosted statically on Jamstack hosting and serverless backend (with &lt;a href="https://workers.cloudflare.com/"&gt;Cloudflare Workers&lt;/a&gt;), ensuring affordable but blazing fast websites for indie web novelists and small online novel publishers alike.&lt;/p&gt;

&lt;p&gt;The project aims to provide free and decentralized platforms for indie creators to take on venture capital-backed companies on web novel industry that currently dominated by a few big tech companies' hands, like Tencent-backed Qidian Literature, Wattpad, Amazon Kindle, Naver, Kakaopage, and so on. A few features that historically been exclusive to the native mobile apps, like offline reading, have been implemented in ProgNovel, allowing small indie players to compete even on mobile devices.&lt;/p&gt;

&lt;p&gt;ProgNovel demo:&lt;br&gt;
&lt;a href="https://demo.prognovel.com"&gt;https://demo.prognovel.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ProgNovel development roadmap:&lt;br&gt;
&lt;a href="https://demo.prognovel.com/roadmap/"&gt;https://demo.prognovel.com/roadmap/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Project team
&lt;/h2&gt;

&lt;p&gt;Currently, the project only has me as the sole contributor. I'm working on it as the frontend dev, designing UX/UI myself, writing some documentation (only starting), and am actually an aspiring web novelist myself. Back when I'm dropped out from college in 2016 to commit on my writing I have no interest in getting into traditional publishing industry in my country, prefer on get my toes dirty on internet indie novelist venture, and ProgNovel project sorta happened along the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we are doing
&lt;/h2&gt;

&lt;p&gt;Much of the development of ProgNovel been spent on making the app fast and cheap to be operated on static and serverless hosting environments. This is due to most indie web novelist wouldn't want to be in a position of being burdened financially when hosting their own platform to showcase their novels, when platforms from big companies already promised free-to-publish (but with restrictions) medium anyone could use. With ProgNovel, anyone could publish their story without having to worry about staff approval to get paid for their story unlike &lt;a href="https://support.wattpad.com/hc/en-us/articles/360037395112-Joining-Wattpad-Paid-Stories"&gt;Wattpad's paid story program&lt;/a&gt;, and anyone wouldn't need to pay anything to monetize their content as Web Monetization API, unlike most ads networks, doesn't require paid custom domains to get started (note: hosting statically on Netlify and other Jamstack host is free! And ProgNovel even more optimized to take advantage of the generous free-tier hosting provided by Jamstack hosting companies!)&lt;/p&gt;

&lt;p&gt;As part of this effort, for example, is the rework of backend API written in Cloudflare Workers starting back in November--which is actually a response to &lt;a href="https://blog.cloudflare.com/workers-kv-free-tier/"&gt;Cloudflare's decision to make KV Workers free for free-tier users&lt;/a&gt;.&lt;br&gt;
&lt;a href="https://community.interledger.org/images/4uYcDZjW8jaihdYcoO3yFXrZn3f1hH4mO7rVlgPji28/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL2x1bTd0c2tz/dWY2dGRpYWo0cXR4/LmpwZw" class="article-body-image-wrapper"&gt;&lt;img src="https://community.interledger.org/images/4uYcDZjW8jaihdYcoO3yFXrZn3f1hH4mO7rVlgPji28/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL2x1bTd0c2tz/dWY2dGRpYWo0cXR4/LmpwZw" alt="KV Worker" width="880" height="632"&gt;&lt;/a&gt;&lt;strong&gt;Image above:&lt;/strong&gt; ProgNovel's build engine has been rewriting; instead of serving markdown files for content individually, it is now being published as single JSON document for each novel, only uploaded to a single key of KV Workers, ensuring lowest latency, better caching, and improve API hosting cost-effectiveness by several times due to all contents stored in a single key enabling ProgNovel to fetch several chapters in a single API request (in short, pay once for several pages).&lt;/p&gt;

&lt;p&gt;Rewriting backend API also led me to develop CLI for ProgNovel à la Jamstack frameworks--although, in reality, instead parsing markdown to HTML, ProgNovel convert markdown files (or any other sources in the future) to a single flat JSON (to be stored in a single key of KV Workers as mentioned previously). The build engine although is very early version is already quite fast, due to the usage of WebAssembly in parsing markdowns (thanks to &lt;a href="https://github.com/rsms/markdown-wasm"&gt;markdown-wasm&lt;/a&gt;) and incremental build already in place to ensure only modified files get parsed. More works needed to be done to improve the build engine, but overall I'm happy about the current Jamstack-y direction.&lt;br&gt;
&lt;a href="https://community.interledger.org/images/NOmHbrDTIT0jZ7dESQvViBBRUjhgCb7v0gol0LXmuLY/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL3ZjZGVnd3Zh/bjM4dTZiMDNra3lx/LnBuZw" class="article-body-image-wrapper"&gt;&lt;img src="https://community.interledger.org/images/NOmHbrDTIT0jZ7dESQvViBBRUjhgCb7v0gol0LXmuLY/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL3ZjZGVnd3Zh/bjM4dTZiMDNra3lx/LnBuZw" alt="ProgNovel CLI" width="805" height="420"&gt;&lt;/a&gt;&lt;strong&gt;Image above:&lt;/strong&gt; The benefits of having to rewrite API and developing CLI not only for hosting cost-effective and better latency performance, as the new CLI also brings in build engine that reads contributors' names and map them to their Web Monetization payment pointers respectively (along with typo helpers!), making splitting revenue share easier for long novels that have many contributors (which historically have generated a lot of bad blood in the community due to disagreements on rev share).&lt;/p&gt;

&lt;p&gt;As a demo, I picked a few non-profits Web Monetization payment pointers (&lt;a href="https://community.webmonetization.org/grantfortheweb/non-profit-payment-pointers-2890"&gt;source here&lt;/a&gt;), and now Web Monetization revenue share for the demo is live:&lt;br&gt;
&lt;a href="https://community.interledger.org/images/6yJhLvzDCDlz9bDMXj4GLWFHBX8Zp102r_4iiihrzQU/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL2FicTZqbWVz/Z3RwZG10cGczeWYz/LmpwZw" class="article-body-image-wrapper"&gt;&lt;img src="https://community.interledger.org/images/6yJhLvzDCDlz9bDMXj4GLWFHBX8Zp102r_4iiihrzQU/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL2FicTZqbWVz/Z3RwZG10cGczeWYz/LmpwZw" alt="ProgNovel revenue share API" width="857" height="273"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;for more information about revenue share in ProgNovel, head to &lt;a href="https://community.webmonetization.org/radhyr/prognovel-s-built-in-revenue-share-in-jamstack-based-markdowns-1995"&gt;https://community.webmonetization.org/radhyr/prognovel-s-built-in-revenue-share-in-jamstack-based-markdowns-1995&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;There also a few features being implemented in ProgNovel already, most notably client-side bookmarking, dark mode and theme color picker, offline reading (which works just like novel platform mobile app since ProgNovel is already PWA), configurations for font size and font weight when reading novels, and asynchronous content rendering (sort of kinda browsers' &lt;code&gt;content-visibility&lt;/code&gt; for more snappy DOM rendering when navigating through novel chapters, but custom made for ProgNovel to avoid bugs and more support for future ProgNovel's plugins).&lt;/p&gt;

&lt;p&gt;ProgNovel has come a long way since I first began prototyping it a few years ago. It has now evolved much like modern "app-like" web app from back then. With more and more features added in, however, it still got almost the same velocity and performance as back when I started moving this project to use Svelte 3 framework.&lt;/p&gt;

&lt;p&gt;As a reference, I diligently check the web app performance through Google's Lighthouse test, and I'm happy to say that ProgNovel managed to keep 95~100 score for performance, not to mention the speed for repeating visits and navigating through pages even more blazing fast due to ProgNovel heavily implementing &lt;a href="https://web.dev/apply-instant-loading-with-prpl/"&gt;PRPL pattern strategy&lt;/a&gt;.&lt;br&gt;
&lt;a href="https://community.interledger.org/images/BO2syNQwD8dLlCsDRoq8tnSgUzaBz3mlp3TIXAGQJKY/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL3Ixamp2aXNl/OXN4ODYwaW9kdzRj/LnBuZw" class="article-body-image-wrapper"&gt;&lt;img src="https://community.interledger.org/images/BO2syNQwD8dLlCsDRoq8tnSgUzaBz3mlp3TIXAGQJKY/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL2FydGlj/bGVzL3Ixamp2aXNl/OXN4ODYwaW9kdzRj/LnBuZw" alt="ProgNovel Lighthouse Score" width="880" height="552"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What community support would benefit our project?
&lt;/h2&gt;

&lt;p&gt;Due to several API rewriting and the sudden development of CLI (Jamstack-y) build engine, ProgNovel is still under private repo at this point. That and the lack of hardware for development has made the progress of ProgNovel slow. So unfortunately I'm not open for community contribution at the moment.&lt;/p&gt;

&lt;p&gt;However, if you're fine with a novel with subpar grammar and errors, please check out my novel &lt;a href="https://demo.prognovel.com/novel/yashura-legacy"&gt;Yashura Legacy&lt;/a&gt;. It's been hurriedly assembled for ProgNovel demo, and around the first 10 chapters available to read there. Please let me know if you find it interesting, comments are very much appreciated as extra motivation for me! (&lt;strong&gt;note:&lt;/strong&gt; ProgNovel still hasn't integrated with comment system yet, so please let me know your thoughts on my novel here) &lt;/p&gt;

&lt;h2&gt;
  
  
  Link Round Up!
&lt;/h2&gt;

&lt;p&gt;main project demo:&lt;br&gt;
&lt;a href="https://demo.prognovel.com/novel/yashura-legacy"&gt;https://demo.prognovel.com/novel/yashura-legacy&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;the rev share open source I wrote for ProgNovel:&lt;br&gt;
&lt;a href="https://github.com/prognovel/fundme"&gt;https://github.com/prognovel/fundme&lt;/a&gt; (deprecated - the project will later be moved to a new repo and name)&lt;/p&gt;

&lt;p&gt;article I wrote about rev share on ProgNovel:&lt;br&gt;
&lt;a href="https://community.webmonetization.org/radhyr/prognovel-s-built-in-revenue-share-in-jamstack-based-markdowns-1995"&gt;https://community.webmonetization.org/radhyr/prognovel-s-built-in-revenue-share-in-jamstack-based-markdowns-1995&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Highlight other projects
&lt;/h2&gt;

&lt;p&gt;There are many cool projects hosted here on Web Monetization community, but if I have to choose myself then they'll be:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://community.webmonetization.org/enclavegames"&gt;Enclave Games&lt;/a&gt;&lt;br&gt;
&lt;a href="https://community.webmonetization.org/defoldwm"&gt;Defold Foundation&lt;/a&gt;&lt;br&gt;
&lt;a href="https://community.webmonetization.org/p5xjs_editor"&gt;p5.js Editor&lt;/a&gt;&lt;br&gt;
&lt;a href="https://community.webmonetization.org/efwb"&gt;Exploring the future of Web Monetization&lt;/a&gt;&lt;br&gt;
&lt;a href="https://community.webmonetization.org/wmfirefox"&gt;Exploring Web Monetization through Firefox&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EDIT (27 Jul, 2021)&lt;/strong&gt;&lt;br&gt;
Update demo site with official domain.&lt;/p&gt;

</description>
      <category>mozfest</category>
      <category>revshare</category>
      <category>jamstack</category>
      <category>webnovel</category>
    </item>
    <item>
      <title>ProgNovel's Built-in Revenue Share in JAMstack based markdowns</title>
      <dc:creator>Radhy</dc:creator>
      <pubDate>Thu, 10 Dec 2020 10:05:44 +0000</pubDate>
      <link>https://community.interledger.org/prognovel/prognovel-s-built-in-revenue-share-in-jamstack-based-markdowns-1995</link>
      <guid>https://community.interledger.org/prognovel/prognovel-s-built-in-revenue-share-in-jamstack-based-markdowns-1995</guid>
      <description>&lt;p&gt;Hello, all! I'm excited to get myself onboard here. Many thanks to web monetization and dev.to teams to deliver this awesome community site!&lt;/p&gt;

&lt;p&gt;As my first post here I want to demonstrate my project that I proposed for Grant for the Web funding (which unfortunately rejected in the first call for proposal). To wait for second chance call for the previous proposal opened, I thought it'd be nice to share my progress is.&lt;/p&gt;

&lt;p&gt;Before I jump in probably I need to explain what ProgNovel, my project, is. At the very heart ProgNovel is a web app "template", though recently in development it slowly evolves into the realm of framework. In my passion of driving decentralized independent novel authors owned platform (as I am an indie author myself), ProgNovel embracing Progressive Web App, JAMstack, and serverless architecture as its first-class citizen to get the most cost-effective web app as possible. The ultimate goal is to let authors bootstrap a PWA web app platform (to rival mobile apps made by million dollars companies) that they can own themselves with only paying when there are already people paying for their works.&lt;/p&gt;

&lt;p&gt;Think of it as serverless-ly JAMstack site but for web novels. &lt;/p&gt;

&lt;p&gt;One thing about web novel is that, unlike your usual blog-based content, its serialised over lots and lots of pages make it quite different than your usual web content publishing sites. It's common to see authors or some fans translators to not updating their table of contents, mostly due to WordPress doesn't designed to publish serialised content in mind (though, nowadays, some WP themes helped). Some blogs articles may serialized into several posts, but in contemporary web novels, it's very common to see novel spawned over hundreds of chapter pages, even in China web novel industry thousands of chapters already the norm. I believe for this very reason, if user experience is first to be considered, there's a need to design a platform not with common tools made for bloggings, but for independent authors authoring their novels, like many tools especially created for marketers to bootstrap their e-commerce.&lt;/p&gt;

&lt;p&gt;ProgNovel is still in development and I've made a few change of direction since Grant for the Web's first call for the proposal. There are several development milestones and major bug fixes that I've made over the last few months. But since this is Web Monetization community, of course I'll be talking about monetization specifically. I'm going to talk about my experience designing revenue share right into the heart of ProgNovel. To understand why there's a need for customized tools for web novel authors to do this, let me point out the my thoughts on pain points of composing revenue share:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In independent community content creators, collaborating with strangers is common, like people do with open source in Github. With many people come and go splitting up revenue isn't a trivial task to do manually. (much easier to pay people per task instead, but that'd be commissioning, instead of revenue sharing)&lt;/li&gt;
&lt;li&gt;With potentially thousands of chapters to work with, the previously hard task becomes even harder.&lt;/li&gt;
&lt;li&gt;Compose them in markdown the JAMstack way make them even worse.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://community.interledger.org/images/NHzDrxrg67zZ6fOII0INxT1KZvDr2ypm8PHQeYG4yDU/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy9p/LzBhemI0d2dqNzFp/dG5sZXd3aGlrLnBu/Zw" class="article-body-image-wrapper"&gt;&lt;img src="https://community.interledger.org/images/NHzDrxrg67zZ6fOII0INxT1KZvDr2ypm8PHQeYG4yDU/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy9p/LzBhemI0d2dqNzFp/dG5sZXd3aGlrLnBu/Zw" alt="Markdown Frontmatter" width="848" height="162"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;&lt;strong&gt;Image:&lt;/strong&gt; Markdown above might look like it's fine. But there are two mistakes that probably would make contributors uncompensated.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem with sharing revenue
&lt;/h2&gt;

&lt;p&gt;In community-centric working group, the best way to do revenue sharing is to not talking about revenue at all. Particularly people who coordinated over Discord channels or forums who only know each others' internet usernames. By what I mean not talking about revenue sharing, this partly due to many people getting in collaboration with strangers is because they love what they are doing, or simply want the projects they involved with to get released more steadily and prevent them from becoming dead projects at all. Like, how many developers out there doing pull requests on open source projects expecting they'd be drenched in shares of donation money?&lt;/p&gt;

&lt;p&gt;The other and more urgent reason is that if there's money to be involved, inevitably there's a party going to be responsible to compensate the other party. This can be a content creators turned website owners paying their fellow content creators, or authors and translators paying for editors as well as proofreaders. All is fine until someone can get uncompensated, intentionally or unintentionally, like that ambiguous typo example image I showed previously.&lt;/p&gt;

&lt;p&gt;I've witnessed some guy got lynched online because he made a mistake when doing a PayPal payment to someone and they eventually called him out on the public forum. And to experience them over some innocent typos? Nope, no thanks.&lt;/p&gt;

&lt;p&gt;This is also the reason why I'm getting into Web Monetization API in the first place. It's the simplest tool available on the web to make revenue sharing without having to have a conversation about revenue at all. The most ideal way would someone makes a pull request to have their payment pointers (or someone else's payment pointers) to be included in the projects. And then get involved in the work. Just that. No need to talk about money. The paying party would have the revenue share rate per task (weights in probabilistic revenue share) they needed help with to be available in public, then if someone okay with that, they can just go ahead apply to see if they are the right people for the job. Without the explicit responsibility to compensate people then the drama about unpaid or underpaid contributions can be avoided. When the collaboration is over people can part way in good faith and thus the community have less toxic things needed to deal with.&lt;/p&gt;

&lt;p&gt;ProgNovel approaches composing revenue share over 3 phase; with only one parts that both paying party and receiver party needs to deal with (that is, registering the receiver's payment pointer into the project).&lt;/p&gt;

&lt;p&gt;The first part is in the site's settings which can be found in the project root folder in form of YAML document (or maybe TOML too in the future). It is (or it's copy) should be accessible in public so that potential contributors can assess how the project's manager compensate collaborators. As you can see below, the ratio of contributions over authors, translators (if foreign works), editors, and proofreaders is 5:4:3:2 Probabilistic Revenue Share weights per chapters, accumulate in every chapters contributors are credited in, and calculated after the platform takes 10% of the revenue.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://community.interledger.org/images/XQN-gjiLocieWIK9xG2RN6QmUzYM8CIzBLlgu9mIGVI/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy9p/L3VkM213emR3NXN1/Nmt5ajN6cmU1LnBu/Zw" class="article-body-image-wrapper"&gt;&lt;img src="https://community.interledger.org/images/XQN-gjiLocieWIK9xG2RN6QmUzYM8CIzBLlgu9mIGVI/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy9p/L3VkM213emR3NXN1/Nmt5ajN6cmU1LnBu/Zw" alt="Site Settings" width="855" height="487"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The second part is where everyone should involved in. It's the YAML document on registering everyone's payment pointers. It's edited whenever there's a new contributor joining in.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://community.interledger.org/images/JK-A59iRwsYHPDwOGSuUX9n3T6UBQEbcHWdJm2b3IYc/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy9p/LzNoaThzMHF1YzN3/ZjNmb2JyMXprLnBu/Zw" class="article-body-image-wrapper"&gt;&lt;img src="https://community.interledger.org/images/JK-A59iRwsYHPDwOGSuUX9n3T6UBQEbcHWdJm2b3IYc/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy9p/LzNoaThzMHF1YzN3/ZjNmb2JyMXprLnBu/Zw" alt="Contributions Settings" width="715" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At this point the conversation about revenue share should be minimal and there should be no promise of "paying the other party" which can lead to fight if things don't go as everyone's planned. The contributors that signed up should know the performance of the works they involved in, and they should already know at which rate they would be compensated with.&lt;/p&gt;

&lt;p&gt;It's simple and straightforward. But the problem now is back to the pain points I previously stated; you might wonder, why would I put random gibberish such as Kabooom and Wowee as contributors examples?&lt;/p&gt;

&lt;p&gt;The reality is usernames that are harder to spell and remember than those are very common on the web. Unthoughtful implementation of revenue sharing around this issue would be a disaster. No one would want a conversation that goes on like this:&lt;/p&gt;

&lt;p&gt;A: "Hey, your name is hard to write in every single chapter. Can you change it to a simpler one?"&lt;/p&gt;

&lt;p&gt;B: "What should I do? But I like this username."&lt;/p&gt;

&lt;p&gt;A: "Are you sure you don't want to change it? Don't you want to get paid?"&lt;/p&gt;

&lt;h2&gt;
  
  
  Enter ProgNovel CLI
&lt;/h2&gt;

&lt;p&gt;ProgNovel CLI is command line tools that (planned) to be published through NPM. Since last year I was hesitating to choose the default way to manage content for ProgNovel. Should I just export documents from Google Docs? Should I just let people outsource their contents to headless CMS (which I doubt will provide features worth of the price for niche contents like web novels)? One change that made me choose markdown is the plugins that I made with web component, which actually composable in markdowns on some markdown parsers if HTML tags to be included.&lt;/p&gt;

&lt;p&gt;Beside compiling chapters to be consumed as JAMstack API ProgNovel CLI also offers a way to fix type on contributors name, using a library that based on &lt;a href="https://en.wikipedia.org/wiki/S%C3%B8rensen%E2%80%93Dice_coefficient"&gt;Sørensen–Dice coefficient&lt;/a&gt; to find similarity between strings. The below image is an example when typos occurred when using command &lt;code&gt;prognovel build&lt;/code&gt; or just &lt;code&gt;prognovel&lt;/code&gt; for shorthand:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://community.interledger.org/images/C9VREpjqjnOk2mdeOYlzFrAC6QeKM3smJXW8_-nzf44/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy9p/L245a2cxNjN2YjY0/OGRmNTkwbDUxLnBu/Zw" class="article-body-image-wrapper"&gt;&lt;img src="https://community.interledger.org/images/C9VREpjqjnOk2mdeOYlzFrAC6QeKM3smJXW8_-nzf44/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy9p/L245a2cxNjN2YjY0/OGRmNTkwbDUxLnBu/Zw" alt="Building" width="880" height="459"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Someone who compiling the chapters can either go the to problematic chapter or fixing the typos in bulk, with just one command line &lt;code&gt;prognovel fix-typo&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://community.interledger.org/images/B-OmJWuMFMh9hndXwS1v6dOF77NrtM9jNXzxTaXxpmQ/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy9p/L2VwMDdua3RnMHA2/dWozaXJvbGVuLnBu/Zw" class="article-body-image-wrapper"&gt;&lt;img src="https://community.interledger.org/images/B-OmJWuMFMh9hndXwS1v6dOF77NrtM9jNXzxTaXxpmQ/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy9p/L2VwMDdua3RnMHA2/dWozaXJvbGVuLnBu/Zw" alt="Fixing Typos" width="409" height="173"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The CLI then would find the problematic chapters and do simple find and replace:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://community.interledger.org/images/OHrIOGrDVX53Yb6GO3dqiPEBhCnGXTnQCXkCv3K2f9c/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy9p/L2hkbXRvc3EzdHp3/MHp1ZHRrcDk3LnBu/Zw" class="article-body-image-wrapper"&gt;&lt;img src="https://community.interledger.org/images/OHrIOGrDVX53Yb6GO3dqiPEBhCnGXTnQCXkCv3K2f9c/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy9p/L2hkbXRvc3EzdHp3/MHp1ZHRrcDk3LnBu/Zw" alt="Typo fixed 1" width="880" height="258"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://community.interledger.org/images/Cd-CFqnK_BCdVgmQiIwkqiZVGQqA68z0giQ6dV4delY/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy9p/LzVyc25oMW9oZTJ3/bXN1aGtzNmhyLnBu/Zw" class="article-body-image-wrapper"&gt;&lt;img src="https://community.interledger.org/images/Cd-CFqnK_BCdVgmQiIwkqiZVGQqA68z0giQ6dV4delY/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy9p/LzVyc25oMW9oZTJ3/bXN1aGtzNmhyLnBu/Zw" alt="Typo fixed 2" width="880" height="176"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The shares would be then compiled along with the novel's metadata in static JSON with format of &lt;a href="https://github.com/ProgNovel/fundme"&gt;Fundme.js&lt;/a&gt; (my other project that I planned to have its name changed), which then can be used to generate Probabilistic Revenue Share either in the backend or the browser.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://community.interledger.org/images/vAD63Ckdja2f6hchJhj4_I21cgo--iSxSm2suGXkUPQ/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy9p/L2lqaHhkd3M0ZDY2/ODNkZzVwaDluLnBu/Zw" class="article-body-image-wrapper"&gt;&lt;img src="https://community.interledger.org/images/vAD63Ckdja2f6hchJhj4_I21cgo--iSxSm2suGXkUPQ/w:880/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy9p/L2lqaHhkd3M0ZDY2/ODNkZzVwaDluLnBu/Zw" alt="Rev Share Result" width="699" height="240"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusions
&lt;/h2&gt;

&lt;p&gt;Collaborating over the internet is usually casual but can be complicated because everyone's want (and should have) their private information protected. Web Monetization API offers a solution in a very simple but effective way, even in its early phase. For me it's the reason why it totally rocks.&lt;/p&gt;

&lt;p&gt;Implementing it in ProgNovel has been an adventure for me. And I'm sure there's more challenge ahead that need to be addressed: should the contribution points be tamper proof? Should the project owners have the right to cancel the contributions of other people when a problem occurred?&lt;/p&gt;

&lt;p&gt;Other challenges also raised on technical level. One of them is build performance; this is a Javascript, NodeJS project, can it really compile ten of thousands of chapters every time without having to wait half an hour? &lt;/p&gt;

&lt;p&gt;At first, ProgNovel is not meant to be using build time to compile chapters, instead serve it on-the-fly through Cloudflare Workers. But since I'm already developing the CLI, I'm anticipating the issue by choosing WebAssembly based markdown parser, and implement my own incremental build so that markdowns that hasn't been changed won't be compiled along with others. It also only output in JSON or ArrayBuffer at most (to be uploaded to &lt;a href="https://blog.cloudflare.com/building-with-workers-kv/"&gt;Cloudflare Workers KV&lt;/a&gt;), instead building static HTML like other JAMstack frameworks do, so I'm expecting the build time won't be the most painful development issue along the road.&lt;/p&gt;

&lt;p&gt;There's also consideration for future expansion to also host web comics/manga for artists and to provide e-book for authors who also want to publish on e-book platforms like Kindle and others. However, since I'm a web novelist myself, I'll take a look on these plans after I'm satisfied with the current development.&lt;/p&gt;

</description>
      <category>demonstration</category>
      <category>jamstack</category>
      <category>revenueshare</category>
      <category>personalthought</category>
    </item>
  </channel>
</rss>
