What attracted me to Neo blockchain was the developer experience it has over other blockchains. As much as I love what vscode has become, I still prefer to use a fully-featured IDE whenever I can. And I know many developers share the same sentiment. I felt the lack of tooling support for IntelliJ-based IDEs as a gap in what Neo trying to achieve. This was the inspiration for the project.
What it does
It tries to replicate what Neo Blockchain Toolkit does, but for IntelliJ based IDEs.
As of right now within any Intelli IDE (Idea, Pycharm, Webstorm etc) you can
- Create and manage private nets
- Explore blocks and transactions
- Create wallets, transfer assets
- Deploy and invoke contract in private net
How I built it
I've already had some experience working on IntelliJ plugins. Both Kotlin and Java can be used to write IntelliJ plugins. I've used Java as that's what I'm most comfortable in.
Challenges I ran into
Lots of challenges :) Many of them are very technical. For example
- Calling the integrated terminal in the IDE to run neo-express private net was a big challenge.
- Managing events on different commands and updating the UI was a bit of a challenge. Intellij uses Java Swing (not JavaFx). And Java Swing is a bit painful. :) I have more respect for ReactJs now.
Challenges yet to find a solution
- Keeping a track of deployed contracts. Luckily neo-express has exposed an RPC endpoint for this. But this is still an issue for TestNet. Once we figure out how to tackle this, the plugin can support deploying and invoking contracts in testnet as well.
Accomplishments that I am proud of
So many. I've spent 100+ hours on a project passionately. Definitely proud of that :) It is live now. You can go ahead and start using the plugin with any IntelliJ IDE. Just search "Neo" in the IntelliJ plugin marketplace. I am super proud that I managed to do something more than an MVP.
What I learned
Learned a lot about Neo blockchain. Learned a lot about intellij platform. I think I'm past the learning curve. Hoping I can implement the remaining features way faster.
What's next for Intellij Plugin for Neo Blockchain
This is just an initial version of the plugin. This is a project which requires more time and resources. I've done the best I can do in the hackathon timeframe. There is a bunch of incomplete features, bugs, etc.
These are some of the features planned medium/long term.
- Debugging (This is huge)
- Import nep6wallet****
- Support Testnet and Mainnet for deploying and invoking contract****
- Having templates for different IDEs. For example, if a user uses the plugin with pycharm, create templates with the neo-boa library. If the user uses Intellij Idea, create a gradle project with neow3j library.
**** Implementation is mostly done for these. But need a lot of testing and tweaking.
I am hoping to work on this even if I don't win the hackathon. But winning will definitely help me deliver these way faster.