<?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>DEV Community: Kendraio</title>
    <description>The latest articles on DEV Community by Kendraio (@kendraio).</description>
    <link>https://dev.to/kendraio</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F3714%2F38a42404-2b00-484e-a2a6-300f259ed82d.jpeg</url>
      <title>DEV Community: Kendraio</title>
      <link>https://dev.to/kendraio</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kendraio"/>
    <language>en</language>
    <item>
      <title>Kendraio FundOSS  </title>
      <dc:creator>Antonio Talarico</dc:creator>
      <pubDate>Mon, 14 Jun 2021 09:53:12 +0000</pubDate>
      <link>https://dev.to/kendraio/kendraio-fundoss-2f6e</link>
      <guid>https://dev.to/kendraio/kendraio-fundoss-2f6e</guid>
      <description>&lt;p&gt;Throw between two and five dollars to Kendraio today and we'll end up receiving up to an extra $20 in matched funding! FundOSS is a  new system for fundraising open source software that rewards projects based on the size of their community rather than the amounts they raise. &lt;/p&gt;

&lt;p&gt;So the multiples on the matched funding are bigger for the smaller the amount donated. Hence $2 gives the greatest multiplier! You need to have a GitHub account to donate. But that's easy to get. &lt;/p&gt;

&lt;p&gt;Head to &lt;a href="https://fundoss.org/collective/kendraio"&gt;https://fundoss.org/collective/kendraio&lt;/a&gt; and donate a few dollars! And then tell your friends, family, and loved ones!&lt;/p&gt;

</description>
      <category>kendraio</category>
      <category>funding</category>
      <category>opensource</category>
      <category>nonprofit</category>
    </item>
    <item>
      <title>$500 USD developer bounty! </title>
      <dc:creator>Antonio Talarico</dc:creator>
      <pubDate>Tue, 27 Apr 2021 13:22:32 +0000</pubDate>
      <link>https://dev.to/kendraio/500-usd-developer-bounty-5en1</link>
      <guid>https://dev.to/kendraio/500-usd-developer-bounty-5en1</guid>
      <description>&lt;p&gt;Who? Fullstack JavaScript developer&lt;br&gt;
When? Anytime from now&lt;br&gt;
What? Integrating the open-source music information encyclopedia MusicBrainz within Kendraio Player, a proof-of-concept for a multi-service player for music streaming using web monetisation technology. &lt;/p&gt;

&lt;p&gt;We want to give $500 to whoever can create an interface where you can look up as well as upload information to &lt;a href="https://musicbrainz.org/"&gt;MusicBrainz&lt;/a&gt; via &lt;a href="https://app.kendra.io/player/all"&gt;Kendraio Player&lt;/a&gt; in &lt;a href="https://www.kendra.io/kendraio-app"&gt;Kendraio App&lt;/a&gt;. We want users to be able to use Kendraio Player to display and also upload information to and from MusicBrainz.&lt;/p&gt;

&lt;p&gt;Kendraio App is a general framework for creating low-code applications. Kendraio App was originally created to service the creative/music industry to enable easy asset and rights management both locally and on third-party platforms. But what we've ended up creating is a generic data browser that plugs into remote APIs and enables highly configurable low-code interfaces to be built. As part of our project for Grant for the Web, we developed Kendraio Player, an end-to-end reimagining of the interactions between streaming services, artists and consumers and how we can monetise music on the web to create the healthier, more open and fair internet that Grant for the Web strives to see built. MusicBrainz is an open-source, community-led music encyclopedia.&lt;/p&gt;

&lt;p&gt;If all tasks have been completed after the mutually agreed-upon time frame, you will receive a $500 reward! This bounty is proposal-based, so have a look and submit your proposal here: &lt;/p&gt;
&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/kendraio/kendraio-app/issues/184"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg"&gt;
      &lt;span class="issue-title"&gt;
        Kendraio App MusicBrainz integration (bounty)
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#184&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/dahacouk"&gt;
        &lt;img class="github-liquid-tag-img" src="https://res.cloudinary.com/practicaldev/image/fetch/s--7fYwkpRd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://avatars.githubusercontent.com/u/201752%3Fv%3D4" alt="dahacouk avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/dahacouk"&gt;dahacouk&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/kendraio/kendraio-app/issues/184"&gt;&lt;time&gt;Apr 27, 2021&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;Our second bounty is to integrate the open-source music encyclopedia &lt;a href="https://musicbrainz.org" rel="nofollow"&gt;MusicBrainz&lt;/a&gt; into &lt;a href="https://www.kendra.io/kendraio-app" rel="nofollow"&gt;Kendraio App&lt;/a&gt;. Kendraio App is our low-code 'data browser' application. Within Kendraio App we've built &lt;a href="https://app.kendra.io/player/all" rel="nofollow"&gt;Kendraio Player&lt;/a&gt;, a proof-of-concept for a multi-service music streaming player using web monetisation technology, funded by &lt;a href="https://www.grantfortheweb.org" rel="nofollow"&gt;Grant for the Web&lt;/a&gt; towards their mission to create a healthier internet.&lt;/p&gt;

&lt;p&gt;We want this integration to enable Kendraio App users to search and browse, and also upload information to MusicBrainz. To participate, we would like talented full-stack JavaScript developers to propose how they would integrate MusicBrainz with Kendraio App.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Timeframe: 2 weeks&lt;/li&gt;
&lt;li&gt;Bounty: $500 USD (paid out via&lt;a href="https://opencollective.com/kendraio" rel="nofollow"&gt;  https://opencollective.com/kendraio&lt;/a&gt; -- so you need to have an account here to be paid)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We're rewarding the individual (or group) that carries out this bounty in a transparent, interoperable, and easy to use way.&lt;/p&gt;

&lt;p&gt;See how our first bounty went at &lt;a href="https://github.com/kendraio/kendraio-app/issues/169"&gt;Kendraio Player Audiotarky integration&lt;/a&gt;. And see Radhy's writeup of his experience at &lt;a href="https://community.webmonetization.org/radhyr/afterthought-on-integrating-audiotarky-api-into-kendraio-app-16dk" rel="nofollow"&gt;Afterthought on integrating Audiotarky API into Kendraio App&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;Deliverables&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;A proposal written out before work starts and agreed upon beforehand in &lt;a href="https://drive.google.com/drive/folders/0B_922q-PNUCRfmtKenB1dWw4Z18tcWJCTnFITU9vN2NyVEVudV96eFU2ZnF2QW9ud2I1Vnc" rel="nofollow"&gt;our Google Drive&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Interfaces created in Kendraio App using Flows where a user can:
&lt;ul&gt;
&lt;li&gt;Look up information about a particular &lt;a href="https://musicbrainz.org/doc/MusicBrainz_Entity" rel="nofollow"&gt;MusicBrainz entity&lt;/a&gt; ("give me info about The Beatles")&lt;/li&gt;
&lt;li&gt;Browse MusicBrainz to find entities connected to a particular entity ("show me all releases by The Beatles")&lt;/li&gt;
&lt;li&gt;Search for entities matching a specific query ("show me all artists matching the query 'Beatles'").&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Interfaces created in Kendraio App using Flows where a user (artist) can:

&lt;ul&gt;
&lt;li&gt;Upload information about a specific music release to MusicBrainz via Kendraio App.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;Technical details and source code&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Kendraio App: &lt;a href="https://github.com/kendraio/kendraio-app"&gt;https://github.com/kendraio/kendraio-app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;MusicBrainz development resources: &lt;a href="https://musicbrainz.org/doc/Development" rel="nofollow"&gt;https://musicbrainz.org/doc/Development&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;MusicBrainz API: &lt;a href="https://musicbrainz.org/doc/MusicBrainz_API" rel="nofollow"&gt;https://musicbrainz.org/doc/MusicBrainz_API&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;MusicBrainz GitHub: &lt;a href="https://github.com/Borewit/musicbrainz-api"&gt;https://github.com/Borewit/musicbrainz-api&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;Evaluation&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;The bounty will be evaluated by the Kendraio Team and advisors.&lt;/li&gt;
&lt;li&gt;Evaluation will be based on the completion of the task, as well as on how transparent, interoperable and easy to use it is.&lt;/li&gt;
&lt;li&gt;The more you can commit to documenting and talking about your experience with Kendraio App the more excited we will be to work with you.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;Requirements&lt;/h1&gt;

&lt;p&gt;Candidates should have some existing experience with JavaScript and web APIs. Must be willing to document and talk about their experience of working on the tasks in this bounty.&lt;/p&gt;

&lt;h1&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;Process&lt;/h1&gt;

&lt;p&gt;Once a candidate has put themselves forward, our Kendraio developers will mentor them exclusively for 2 weeks (or more, by mutual agreement). If after the agreed-upon period tasks remain open, another candidate may be given the opportunity instead.&lt;/p&gt;

&lt;h1&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;About Kendraio&lt;/h1&gt;

&lt;p&gt;Kendraio App is a general framework for creating low-code applications. Kendraio App was originally created to service the creative/music industry to enable easy asset and rights management both locally and on third-party platforms. But what we've ended up creating is a generic data browser that plugs into remote APIs and enables highly configurable low-code interfaces to be built. And we'll use this framework as the basis of this project. Please check out these links before accepting this mission: &lt;a href="https://app.kendra.io/" rel="nofollow"&gt;Kendraio App demo&lt;/a&gt;, &lt;a href="https://github.com/kendraio/kendraio-app"&gt;Kendraio App on GitHub&lt;/a&gt;, &lt;a href="https://kendraio-app.readthedocs.io/" rel="nofollow"&gt;Kendraio App documentation&lt;/a&gt;, &lt;a href="https://www.kendra.io/kendraio-app" rel="nofollow"&gt;Kendraio App website&lt;/a&gt;. As you create this project your feedback will influence the direction and capabilities of the Kendraio framework.&lt;/p&gt;

&lt;p&gt;The Kendraio App lets users build interfaces from blocks. The blocks themselves are plumbed together with modern JavaScript, TypeScript, and are configured using JSON. We have various backend APIs, and proxy endpoints hosted using Vercel's serverless platform.&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;/div&amp;gt;
&amp;lt;div class="gh-btn-container"&amp;gt;&amp;lt;a class="gh-btn" href="https://github.com/kendraio/kendraio-app/issues/184"&amp;gt;View on GitHub&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;
 You can also find more specifications, evaluation criteria and documentation in it.
&lt;/div&gt;

</description>
      <category>bounty</category>
      <category>developer</category>
      <category>kendraio</category>
    </item>
    <item>
      <title>$500 USD developer bounty! </title>
      <dc:creator>Antonio Talarico</dc:creator>
      <pubDate>Tue, 09 Mar 2021 13:40:29 +0000</pubDate>
      <link>https://dev.to/kendraio/500-usd-developer-bounty-2b38</link>
      <guid>https://dev.to/kendraio/500-usd-developer-bounty-2b38</guid>
      <description>&lt;p&gt;Who? Fullstack Javascript developer&lt;/p&gt;

&lt;p&gt;When? Anytime from now&lt;/p&gt;

&lt;p&gt;What? Integrating fair streaming platform, Audiotarky, within Kendraio Player – a proof-of-concept media player interface for aggregating and streaming multiple services, incorporating web monetisation technology, built within &lt;a href="https://www.kendra.io/kendraio-app"&gt;Kendraio App&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Kendraio App is a general framework for creating low-code applications. Kendraio App was originally created to service the creative/music industry to enable easy asset and rights management both locally and on third-party platforms. But what we've ended up creating is a generic data browser that plugs into remote APIs and enables highly configurable low-code interfaces to be built. As part of our project for Grant for the Web, we developed &lt;a href="https://app.kendra.io/player/all"&gt;Kendraio Player&lt;/a&gt;, an end-to-end reimagining of the interactions between streaming services, artists and consumers and how we can monetise music on the web to create the healthier, more open and fair internet that Grant for the Web strives to see built. Audiotarky are building a "new music streaming platform, that puts privacy and fairness in front of algorithms and shareholders".&lt;/p&gt;

&lt;p&gt;We have an existing audio player that supports Web Monetization with Coil login - with or without a browser extension - but not yet with Audiotarky. Candidates should have some existing experience with Javascript and web API’s. Your task will be to enable a user to retrieve artist and track metadata from Audiotarky’s API using a Kendraio Flow. Bonus points for enabling an artist to import tracks to Audiotarky including payment pointers using Kendraio App. &lt;/p&gt;

&lt;p&gt;Learn more and get in touch via our GitHub issue below. &lt;/p&gt;
&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/kendraio/kendraio-app/issues/169"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg"&gt;
      &lt;span class="issue-title"&gt;
        Kendraio Player Audiotarky integration (bounty)
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#169&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/dahacouk"&gt;
        &lt;img class="github-liquid-tag-img" src="https://res.cloudinary.com/practicaldev/image/fetch/s--7fYwkpRd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://avatars.githubusercontent.com/u/201752%3Fv%3D4" alt="dahacouk avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/dahacouk"&gt;dahacouk&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/kendraio/kendraio-app/issues/169"&gt;&lt;time&gt;Mar 04, 2021&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;We're kicking off our first of four bounty programmes in collaboration with &lt;a href="https://github.com/drsm79"&gt;Simon Metson&lt;/a&gt; from &lt;a href="https://www.audiotarky.com" rel="nofollow"&gt;Audiotarky&lt;/a&gt;. Audiotarky is one of our partners in our project, Kendraio Pay, funded by Grant for the Web. Grant for the Web is founded on the belief that a healthy internet needs openness and opportunity. It's a fund by &lt;a href="https://coil.com" rel="nofollow"&gt;Coil&lt;/a&gt;, &lt;a href="https://www.mozilla.org" rel="nofollow"&gt;Mozilla&lt;/a&gt; and &lt;a href="https://creativecommons.org" rel="nofollow"&gt;Creative Commons&lt;/a&gt;, supporting an open, fair, and inclusive standard for monetising content on the web. In this bounty, we're exploring how rights management and payments operate when working with multiple DSPs.&lt;/p&gt;

&lt;h1&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;The bounty&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Timeframe: 2 weeks&lt;/li&gt;
&lt;li&gt;Bounty: $500 USD&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For this bounty, we're rewarding the individual (or group) that carries out the tasks below, in a way that is transparent, interoperable, and easy to use.&lt;/p&gt;

&lt;p&gt;We have an existing audio player that supports Web Monetization with Coil login - with or without a browser extension - but not yet with Audiotarky. Candidates should have some existing experience with Javascript and web API's. Once a candidate has put themselves forward, our Kendraio developers can work with them exclusively for 2 weeks (or more by mutual agreement). After the agreed period if tasks remain, another candidate may be given the opportunity instead.&lt;/p&gt;

&lt;h1&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;Tasks&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Enabling a user to retrieve artist and track metadata from Audiotarky's API using a Kendraio Flow.&lt;/li&gt;
&lt;li&gt;Enabling a user to play Audiotarky tracks within Kendraio Player, alongside existing DSP1 tracks.&lt;/li&gt;
&lt;li&gt;Bonus points for enabling an artist to import tracks to Audiotarky including payment pointers using Kendraio App.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We will be very flexible with any hiccups that may occur and we will hold your hand all the way. We don't like stress here at Kendraio. We just want to see people enjoying building with Kendraio App.&lt;/p&gt;

&lt;h1&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;Technical details&lt;/h1&gt;

&lt;p&gt;We have a &lt;a href="https://medium.com/kendraio/coil-web-monetization-on-mobile-no-browser-extension-20e3eff2b9f4" rel="nofollow"&gt;technical blog post&lt;/a&gt; that provides background and demonstrates a simple &lt;a href="https://kendraio-app.readthedocs.io/en/latest/workflow/intro.html" rel="nofollow"&gt;Flow&lt;/a&gt; using the Kendraio Player block with the "Web Money" block. The &lt;a href="https://app.kendra.io/player/all" rel="nofollow"&gt;more advanced Kendraio Player&lt;/a&gt; uses GraphQL to load a track list and artist payment pointers from DSP1.&lt;/p&gt;

&lt;h1&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;Source code&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/audiotarky/audiotarky.github.io"&gt;https://github.com/audiotarky/audiotarky.github.io&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kendraio/kendraio-app"&gt;https://github.com/kendraio/kendraio-app&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;Audiotarky API&lt;/h1&gt;

&lt;p&gt;Audiotarky data is available through a simple API. Currently this is not "discoverable"; you need to know the artist stub ID to find their work. There will be a genre API ~soon.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Discover artists API: &lt;a href="https://www.audiotarky.com/%24/artists/index.json" rel="nofollow"&gt;https://www.audiotarky.com/$/artists/index.json&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Discover albums API: &lt;a href="https://www.audiotarky.com/%24/albums/index.json" rel="nofollow"&gt;https://www.audiotarky.com/$/albums/index.json&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Artist details: &lt;a href="https://www.audiotarky.com/%24/artists/chris-foster/index.json" rel="nofollow"&gt;https://www.audiotarky.com/$/artists/chris-foster/index.json&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Album details: &lt;a href="https://www.audiotarky.com/%24/artists/chris-foster/hadelin/index.json" rel="nofollow"&gt;https://www.audiotarky.com/$/artists/chris-foster/hadelin/index.json&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Track details: &lt;a href="https://www.audiotarky.com/%24/artists/chris-foster/hadelin/the-seeds-of-love/index.json" rel="nofollow"&gt;https://www.audiotarky.com/$/artists/chris-foster/hadelin/the-seeds-of-love/index.json&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;Evaluation&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;The bounty will be evaluated by the Kendraio Team and advisors.&lt;/li&gt;
&lt;li&gt;Evaluation will be based on the completion of the task, as well as on how transparent, interoperable and easy to use it is.&lt;/li&gt;
&lt;li&gt;The more you can commit to documenting and talking about your experience with Kendraio App the more excited we will be to work with you.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;Kendraio Player&lt;/h1&gt;

&lt;p&gt;Kendraio Player is a media player incorporating Coil's implementation of Web Monetization  and funded by Grant for the Web. The player was built in Kendraio App. Kendraio App is a low-code dashboard creator that helps build interfaces using Flows that connect to APIs with minimal code needed. The App has an audio player block (Kendraio Player) that supports Web Monetization, using either Coil's browser extension or login API -- but it is not yet integrated with the Audiotarky streaming service.&lt;/p&gt;

&lt;p&gt;The Kendraio App let's users build interfaces from blocks. The blocks themselves are plumbed together with modern Javascript, Typescript, and are configured using JSON. We have various backend APIs, and proxy endpoints hosted using Vercel's serverless platform.&lt;/p&gt;

&lt;h1&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;Requirements&lt;/h1&gt;

&lt;p&gt;Candidates should have some existing experience with Javascript and web APIs. Must be willing to document and talk about their experience of working on the tasks in this bounty.&lt;/p&gt;

&lt;h1&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;Process&lt;/h1&gt;

&lt;p&gt;Once a candidate has put themselves forward, our Kendraio developers will mentor them exclusively for 2 weeks (or more, by mutual agreement). If after the agreed upon period tasks remain open, another candidate may be given the opportunity instead.&lt;/p&gt;

&lt;p&gt;Kendraio App is a general framework for creating low-code applications. Kendraio App was originally created to service the creative/music industry to enable easy asset and rights management both locally and on third-party platforms. But what we've ended up creating is a generic data browser that plugs into remote APIs and enables highly configurable low-code interfaces to be built. And we'll use this framework as the basis of this project.&lt;/p&gt;

&lt;p&gt;Please check out these links before accepting this mission:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://app.kendra.io/player/all" rel="nofollow"&gt;Kendraio Player&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://youtu.be/T2yXWJKIgOQ" rel="nofollow"&gt;Kendraio Player demo video&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://app.kendra.io" rel="nofollow"&gt;Kendraio App demo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kendraio/kendraio-app"&gt;Kendraio App on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kendraio-app.readthedocs.io" rel="nofollow"&gt;Kendraio App documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.kendra.io/kendraio-app" rel="nofollow"&gt;Kendraio App website&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As you create this project your feedback will influence the direction and capabilities of the Kendraio framework.&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;/div&amp;gt;
&amp;lt;div class="gh-btn-container"&amp;gt;&amp;lt;a class="gh-btn" href="https://github.com/kendraio/kendraio-app/issues/169"&amp;gt;View on GitHub&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;
 
&lt;/div&gt;

</description>
    </item>
    <item>
      <title>Coil Web Monetization on mobile - no browser extension needed</title>
      <dc:creator>Luke Stanley</dc:creator>
      <pubDate>Fri, 05 Mar 2021 14:52:29 +0000</pubDate>
      <link>https://dev.to/kendraio/coil-web-monetization-on-mobile-no-browser-extension-needed-58cc</link>
      <guid>https://dev.to/kendraio/coil-web-monetization-on-mobile-no-browser-extension-needed-58cc</guid>
      <description>&lt;p&gt;This post explains how you can use Coil's OAuth login API to stream payments from &lt;a href="https://coil.com/"&gt;Coil&lt;/a&gt; users without them having to use a browser extension. Coil has proposed and implemented a new standard to monetise content online without depending on advertising, called &lt;a href="https://webmonetization.org"&gt;Web Monetization&lt;/a&gt;. The service is built on the &lt;a href="https://interledger.org"&gt;Interledger Protocol&lt;/a&gt;. They are doing an amazing job at squaring a circle to make a better web for everyone. They have a service for Coil subscribers who pay to a personal balance, which is then distributed to content owners via Coil browser extensions, mobile apps and apps connecting to the Coil API.&lt;/p&gt;

&lt;p&gt;If you want to see what you'll learn in this article, try out our implementation in &lt;a href="https://app.kendra.io/player/all"&gt;the Kendraio Player&lt;/a&gt; and &lt;a href="https://youtu.be/T2yXWJKIgOQ"&gt;see our screencast&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/T2yXWJKIgOQ"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h1&gt;
  
  
  Setting up OAuth and login process
&lt;/h1&gt;

&lt;p&gt;Several steps are needed to set up OAuth. To get started, email Coil, fill in the &lt;a href="https://coil.com/oauth_register"&gt;web form&lt;/a&gt; on their site, make a one-off API request to get a key, and implement your own backend (to securely access Coil with a secret key) as well as your frontend to present a button and deal with various redirects as part of the OAuth authentication.&lt;/p&gt;

&lt;p&gt;Thanks to funding from Grant for the Web, we were able to add Web Monetisation support to our low-code tool, Kendraio App, which enables users to make data-driven apps with custom workflows. &lt;a href="https://www.kendra.io"&gt;Kendraio&lt;/a&gt; is a non-profit organisation and all our code is &lt;a href="https://github.com/kendraio/kendraio-app"&gt;open-source&lt;/a&gt;, so you may benefit if you're implementing your own Coil &lt;a href="https://github.com/kendraio/kendraio-app/blob/develop/src/app/blocks/web-money/web-money.component.ts"&gt;login&lt;/a&gt;  &lt;a href="https://github.com/kendraio/coil-api-proxy"&gt;integration&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Maybe you have some content you want to monetise with Coil or maybe you have already monetised and want to provide users with access to content they've already paid for with Coil. Either way, if you're interested in making this content available and monetisable without your users needing to depend on a particular browser or browser extension, then you may find this technical guide useful. &lt;/p&gt;

&lt;h1&gt;
  
  
  Step 1 - Request access and provide resources
&lt;/h1&gt;

&lt;p&gt;As outlined by &lt;a href="https://help.coil.com/docs/dev/oauth-api"&gt;Coil themselves on their docs&lt;/a&gt;, the first step is to make a Coil account.&lt;/p&gt;

&lt;p&gt;After making an account, email the Coil developers with your use-case so they can approve your use of their API. Once approved, you'll need to register your app or website by providing them with a link to your logo, privacy policy, terms of service, and a list of URLs your users may be redirected to after logging in with Coil.&lt;/p&gt;

&lt;p&gt;A word of warning: As there does not appear to be an easy way to change the list of URLs later, ensure you have a development URL or two set aside. This might be a staging URL and a localhost URL. Without this, testing the login flow could be a lot more clunky, so it's worth having a good think about what URLs you will need ahead of time.&lt;/p&gt;

&lt;p&gt;Once you've sent the form, you should be emailed a registration access token that you can use once to get a secret key. This key is needed to connect your users to their Coil accounts and the Coil API for each subsequent login.&lt;/p&gt;

&lt;p&gt;I used the Insomnia web client to make this POST request to their API at &lt;a href="https://coil.com/oauth/reg"&gt;https://coil.com/oauth/reg&lt;/a&gt; and it returned a pretty printed JSON response containing the OAuth secret key and other info. Another option is to use a curl command directly or from Postman. Be careful to store the key securely, as you only get it once and it is used for potentially sensitive activity, such as moving money around and accessing user account info.&lt;/p&gt;

&lt;h1&gt;
  
  
  Step 2 - Create Backend API
&lt;/h1&gt;

&lt;p&gt;Now that you have the key, it can be used by a login backend. The backend must use the key to verify you are who you say you are, to complete OAuth login attempts for your users.&lt;/p&gt;

&lt;p&gt;We used Vercel, a serverless (think Lambda) platform, to make our backend API. Vercel has a way of securely storing environment variables that must be manually selected. Other backend solutions have different options for secrets managers.&lt;/p&gt;

&lt;p&gt;After the user visits a Coil login URL and has been redirected back to your site with the OAuth access code parameter, your backend API will need an endpoint that accepts the OAuth access code and returns a Bilateral Transfer Protocol token.&lt;/p&gt;

&lt;p&gt;This is done by using the users OAuth code, and the secret OAuth key to request an OAuth session token from Coil's API. Once you have it, the session token is used to request the BTP token, which finally is returned to the browser. This must be done in a backend to prevent exposure of the secret OAuth key from Coil.&lt;/p&gt;

&lt;p&gt;You can &lt;a href="https://github.com/kendraio/coil-api-proxy/blob/main/pages/api/login.js"&gt;see our backend API implementation here&lt;/a&gt;, and &lt;a href="https://github.com/kendraio/kendraio-app/pull/160/files#diff-4ab6f1f490848ff5026a4b6fe621fa09bcbf9abb1ad007c0ff270d029568a8b2R76"&gt;our frontend button that calls it is here&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Step 3 - Integrate frontend 
&lt;/h1&gt;

&lt;p&gt;A unique ID is needed for each OAuth session, and a UUID generator is a good way to create one. Our frontend does this and combines it together with other URL parameters to generate a login button link to Coil.&lt;/p&gt;

&lt;p&gt;After the user clicks the link and approves your app's access to Coil, the user should be redirected back to the URL specified by you, with a token parameter. You'll need to send this token to your backend, and get a BTP token back for the user.&lt;/p&gt;

&lt;h1&gt;
  
  
  Step 4 - PROFIT!
&lt;/h1&gt;

&lt;p&gt;Once we have a BTP token for a user, it's possible to start streaming payments using the Web Monetization protocol! Thankfully, &lt;a href="https://help.coil.com/docs/dev/oauth-web-monetization-script"&gt;Coil provides a script&lt;/a&gt; that can speak this protocol and stream money! Now that the user is finally authenticated and in possession of a BTP token, we can provide the Coil script with the token. The script, like the browser extension, checks the webpage for a payment pointer meta tag. With an active BTP token, as soon as the Coil script finds the meta tag, the payment stream should start.&lt;/p&gt;

&lt;h2&gt;
  
  
  Initial setup cheat sheet
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Manually make a Coil account for the organisation&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Email &lt;a href="mailto:devs@coil.com"&gt;devs@coil.com&lt;/a&gt; with your use case &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;E.g. OAuth login is needed to support users without the browser extension)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fill out the OAuth registration form&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; At &lt;a href="https://coil.com/oauth_register"&gt;https://coil.com/oauth_register&lt;/a&gt; provide Coil with your logo, privacy policy, TOS, what URIs Coil is allowed to redirect to (don't forget production, dev and localhost URLs!) Then wait for the REGISTRATION_ACCESS_TOKEN to be emailed to you&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;OAuth registration API&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Use the REGISTRATION_ACCESS_TOKEN to register with the OIDC provider to get your client_id and client_secret by manually make a POST request to &lt;a href="https://coil.com/oauth/reg"&gt;https://coil.com/oauth/reg&lt;/a&gt; (with a lot of the same info as the prior registration step)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Login flow cheat sheet
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;We generate a random session ID&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We assemble an OAuth login URL by adding a few parameters to &lt;a href="https://coil.com/oauth/auth"&gt;https://coil.com/oauth/auth&lt;/a&gt;: client_id, session ID and a callback URL (e.g. hosted at localhost for testing, or your domain)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;User presses a login button  and visits the generated login URL&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;User returns at the callback URL, with an OAuth access code parameter from Coil (and session ID) added&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;POST the access code to our secure backend. Our own API then talks to Coil's API to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  get an OAuth token from &lt;a href="https://coil.com/oauth/token"&gt;https://coil.com/oauth/token&lt;/a&gt; using the user's access code and our secret key (from our secrets store)&lt;/li&gt;
&lt;li&gt;  use the OAuth token to get the Bilateral Transfer Protocol token for the user via &lt;a href="https://api.coil.com/user/btp"&gt;https://api.coil.com/user/btp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  return the BTP token to the browser for the next step&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A Coil Web Monetization client is run via a script and is provided with the BTP token&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When a metatag with a payment pointer is detected, the payment stream can start (and works much like the Coil extension)&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Kendraio Player block integration
&lt;/h1&gt;

&lt;p&gt;Kendraio App, a low-code dashboard creator, helps build interfaces using Flows that connect to APIs with minimal code needed. We created a player workflow in the app and integrated a Coil login within Kendraio Player. We have a &lt;a href="https://app.kendra.io/player/basic"&gt;simplified player workflow example&lt;/a&gt; of how to use the audio player block and a "Web Money" block. It uses JSON data provided by a mapping block:&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="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;display_artist&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;Patient Pacifist&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;display_title&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;Divided&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;url&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;https://dsp1-track-uploads.s3.amazonaws.com/auth0|5fa9852a2576900076396b60/b49cd51b-6f0a-4c7a-9c69-b83b753ee867&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;paymentPointer&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;$ilp.uphold.com/QhJqdGMmjZM4&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, below, we have a block that configures the audio player with JSON:&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="p"&gt;{&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;type&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;player&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;onPlay&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="p"&gt;{&lt;/span&gt;
           &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;type&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;web-money&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="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;onPause&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="p"&gt;{&lt;/span&gt;
           &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;type&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;web-money&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;enabled&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
       &lt;span class="p"&gt;}&lt;/span&gt;
   &lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;See &lt;a href="https://app.kendra.io"&gt;here for an introduction to Kendraio&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Don't forget to check out our &lt;a href="https://github.com/kendraio/kendraio-app/issues/169"&gt;latest bounty&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;That's enough for now!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Kendraio App is a project by &lt;a href="https://www.kendra.io"&gt;Kendraio&lt;/a&gt;, the interoperability advocacy initiative. Kendraio App is an open-source dashboard application currently focused on music/media creators, copyright and related rights owners. The app was developed to investigate how the transformative benefits of interoperability can improve existing processes — and to demonstrate how they can impact business, personal and public life.&lt;br&gt;
&lt;a href="https://www.kendra.io/user/register"&gt;Subscribe to the Kendraio newsletter here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>micropayments</category>
      <category>coil</category>
      <category>webmonetization</category>
      <category>oauth</category>
    </item>
  </channel>
</rss>
