Inspiration

  • Blockchain technology and adoption have been growing in recent years. I notice that there is a gap in the current marketplace without this kind of support.
  • Also, I am passionate about this technology space. Thus, this is the right opportunity to blend them together to create a solution that can be used by people or companies that has present in the blockchain space.

What it does

  • This application empowers confluence users by providing blockchain-related macros such as checking for wallet balance, displaying transactions and NFT assets, and watching alerts for favorite wallets.

How we built it

  • Firstly, we spend quite some time understand the ever-evolving blockchain requirement. And looking for tools that can help with the development. That's where the third-party API comes in.
  • Integrating with third-party API such as Blockcypher, Etherscan, Opensea, and Coingecko.
  • Purely using Atlassian Forge framework, UI Kit. forge tunnel works like a charm. Is fast and responsive.
  • Following the example helps us kick start the development faster too.

Challenges we ran into

  • Blockchain space is bigger than what we taught. The scope keeps on increasing that we decided to simplify it to what is shown in the demo.
  • We initially wanted to use CustomUI. However, the setup is not friendly especially when we want to have multiple CustomUI pages with the "tunnel" or "hot-reload" function for quick development.
  • Due to some limitations, we use ScheduleTrigger to implement the watch function. This is after considering that the alert use is not really time-sensitive.
  • To add on, they didn't provide a way to trigger the schedule for development. For that, we opted to test by hooking it with the web trigger. (This might be a security issue in the future)
  • Besides that, calling third-party API is costly (API calls and timeout). We implemented cache using Forge's Storage. This seems to work like a charm, especially for the page that is loaded with macros.
  • Limitation of the third-party API info against what is shown on their website. We manage to use Fetch coupled with Cheerio.js to extract out information and present the expected information within the macro.
  • Also, there is Forge-related errors/problem to deal with.
    • Such as UI Kit throwing error. In some case, is hard to debug those.
    • UI Kit is not pure react. Not able to style as intended.

Accomplishments that we're proud of

  • Manage to resolve the different types of Ethereum transaction hash details. This part is mentioned in the challenges.
  • Manage to resolve the API call rate limit and timeout by introducing caching within the Forge.
  • Understand the beauty of Forge. I am into the Function-as-a-Service thing. Just that the UI Kit still needs a lot of improvement.
  • Throwing away some of the work (eg. account transaction macro) as is not fit into the story.

What we learned

  • Need more planning, which includes the story of the product before writing the application.
  • Simplifying is good, even though it throws away our previous effort.
  • The beauty of Forge's UI Kit. It is seamlessly integrated with the confluence page.

What's next for Blockscan

  • Add test
  • Improve UI/UX of the macros
  • Fix macro error cause by the third-party timeout or failed request. This also happens when the cache is cleaned.
  • Introduce own-server for watch alert, instead of depending ScheduleTrigger due to trigger inconsistency.

Built With

Share this project:

Updates