Dev Update April

A rare relaxed day in the Streamr office back at the start of the year

Welcome to April’s Development Update!

I’m not going to lie. April was a crazy month. It doesn’t matter if you measure the number of completed JIRA issues, landed pull requests or the number of times the devs got seriously frustrated - the amount of progress in April has been absolutely remarkable. The Marketplace is almost ready to launch, which is great since its unveiling at Consensus 2018 is right around the corner.

In April we took on a few more developers to help us with the extra workload. Tim Oxley, a JavaScript guru with more than 10 years or experience, joined our team to aid with the Marketplace UI. He will stay in the front-end team as an extremely valuable player to assist with upcoming progress. Welcome to Streamr, Tim! We also drafted in two externals to help us with the UI, Tommi Keskitalo and Jukka Lähetkangas, both of whom are experienced front-end developers.

Below you will find a more detailed list of what the team has done during the last month. Unsurprisingly the list is a bit longer than earlier Dev Updates, simply because the team managed to do so much more than ever before. So please take a look and if you have any questions come talk to us in our chat room for devs in Rocket or in Telegram. Shortly, you will see the result of all our hard work when Marketplace is launched in Consensus 2018, on 16th of May, 10:10 EDT. I hope you’ll join us!


  • Deployment of Java 8 and then Marketplace API and then AWS S3 keys to production
  • Make API and User Guide documentation public
  • Multiple API endpoints for Marketplace
  • Allow updating of price, owner, and beneficiary of paid, unpublished Products
  • Backend: permissions linked to subscriptions now actually expire at endsAt
  • Backend API: support “free product” flow
  • Modify Product Creation endpoint to support free products
  • Fix issue with cross-domain cookies and response headers
  • Add File upload AWS environment variables to streamr-docker-dev
  • Product JSON response body changes:
  • Return prices as strings
  • Add missing thumbnailUrl
  • Add isFree boolean
  • Fixed a GORM deserialization bug exposed by The Tram Demo
  • Add initial product categories to Marketplace
  • Figured out what was causing duplicate results in Products API listing endpoints, fix is in progress


  • Marketplace: Fixed multiple issues regarding the mapping of the Products between the API and the UI
  • Marketplace: Added the option to get some info from public Infura provider instead of MetaMask
  • Marketplace: Implemented multiple helpers for formatting the price of a Product
  • Marketplace: Added multiple utils to check the info from the smart contract, eg:
  • DATA/USD rate
  • Product subscription status
  • Marketplace: Store all prices and rates as strings in the UI and use BigNumbers for calculations
  • Marketplace: Fix issues with setting a gas limit
  • Marketplace: Start to use the latest deployments of the smart contracts
  • Setup the redirecting from the old blog urls to the new ones (after starting to use the Medium blog)
  • Implement the base for the rebranding of the landing page
  • Implement the new About Us page in landing page


  • Marketplace product image thumbnail and hero image scaling
  • Show owner of the Product in Marketplace
  • API endpoint for Streams w/share permission
  • Run findbugs and fix scariest bugs
  • Increase the maximum amount of results per one API request from 100 to 1000
  • Add parameter to API to return Streams without their configs
  • Add Stream created and updated dates
  • Backend for the login flow of Marketplace
  • Add support for removing troll user’s products
  • Add endpoint for getting Related Products


  • Marketplace contract deployed in the mainnet, still subject to change (pending external audit)
  • DATA/USD price oracle deployed
  • Smart contract watcher for Marketplace backend deployed


  • Add basic CI for Marketplace
  • Add frontend tests to the engine and editor CI pipeline
  • Fix engine editor deployment templat
  • Setup staging environment
  • Improve engine-editor docker experience for frontend developers
  • Create docker image for Ethereum Watcher
  • Reopen and fix Java8 compatibility issues
  • Fix functional tests — In progress
  • Setup CD for Marketplace
  • Set up and prepare Marketplace url for launch (IP-blocked before that)
  • Deploy staging and production environment for Marketplace
  • Analyse Marketplace deployment options
  • Fix webpack error for dev environment
  • Update engine and editor to support variables in mail configuration
  • Fix travis caching for Marketplace


  • Marketplace: Added support for modal dialogs
  • Rework on how product tiles function
  • Add support for showing toast style notifications
  • Implement login flow
  • Pagination support for product listing view
  • Publishing/unpublishing status for products is now shown


  • Purchase dialog should wait until setting allowance is accepted from Metamask popup
  • Implement set allowance help dialog
  • Product purchase dialog doesn’t now show “approved” if the buyProduct transaction fails
  • Check login session from Engine and Editor, add login key to API calls
  • Implement publish product flow
  • Add free product to My Purchase
  • Edit / Create Product: Show a warning if no cover image is set
  • Refactor all modals to use the same base
  • Add transaction for updating paid and published product price


  • Marketplace Product inline editor
  • Marketplace Product listing filters functionality
  • Transitioning Marketplace app from the Mock API to the official Streamr API
  • Add authorization for Marketplace Product edit page
  • Product publish flow refactored
  • My Product Tiles edit and publish shortcuts actions added


  • Refactor Streamr JS client to use webpack and ES6
  • In addition to subscribing to streams, Streamr JS client now supports creating and managing streams as well as producing data points to streams
  • Added more data-api instances to handle growing incoming/outgoing traffic


  • Verify user’s edit/publish permissions for product
  • Detect and display subscription status
  • Filter out uiChannel streams from stream selector
  • Fix stream + category selection when creating product
  • Use real data/USD conversion rate instead of constant
  • Prefill owner and beneficiary addresses in price dialog
  • Implement a Stream selector to the Product create/edit page
  • Add editable product category
  • Add stream selector for searching, selecting & add streams in product editor


  • Fix various small bugs related to internal changes on how we handle price
  • Improving API with help of our backend developers
  • Fix issues with our docker image and API
  • Validate products in-app before submitting
  • Add and humanize in-app product validation messages
  • Add new “missing product” views for different kind of product listing pages
  • Refactor product lists as configurable and add new views, my purchases and products
  • Fix a bug with uploading product images
  • Fix a bug with ethereum addresses in price dialog
  • Add more functionalities in setting price in dialog for product


  • Prevent user from editing product price after deployment if the Product is free
  • Implement & style warning dialog prompt if Metamask account not detected
  • Fix a bug related to Set Product Price state corruption
  • Rework Set Product Price dialog UX
  • Styled and improved the behavior of Set Access Period dialog
  • Prevent user from attempting to use set bigger allwance than they have balance


  • Finished web3 actions for buying the product
  • Updated logos in Rocket Chat
  • Fixed routing (basename + history) and updated Marketplace staging
  • Implement the “Set Price” dialog
  • Implement the landing page rebranding, will be published soon
  • Prepared new en.po file for translation
  • Copied the top navigation from the landing page to Marketplace