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 withCheerio.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
- atlassian-forge
- cheerio.js
- es6
- javascript
- node.js
- rest-api
Log in or sign up for Devpost to join the conversation.