Making a web admin panel for Kodular apps

I've been looking into a block-based programming tool called Kodular recently. I do have quite a bit of experience in text-based programming, but I was looking for a tool that would let me quickly prototype ideas.

I found out that many apps developed with the platform had in-app admin panels that people had made themselves, which I thought was neat. But then I realized after looking into some details, that these admin panels had major security holes that malicious users were already taking advantage of.

So I built Panel. Panel is a web admin panel for Kodular apps that has security best practices built in, is powered by the blockchain (hehe block-based programming and blockchain), and requires minimal modification to set up.

Developing Panel

Panel was not the easiest project to take on, but not really the hardest either. I decided to go with Blockstack for decentralized blockchain storage, after considering many options including centralized databases. I chose Blockstack since it wouldn't really cost much/anything and it would be extremely secure. I put together a static website that would be able to connect to Blockstack from the client side, and store data.
Since I was making a Kodular extension, I needed to use the programming language Java to create my extension. This was a bit of a problem since I personally don't like the Java language that much. I put together a simple Java program that would grab data from Blockstack using the same method used on the client side, but without authentication, so that apps would only be able to read data.

The good, the bad, and the bugs

Panel was working out so far, but I ended up spending 3 hours debugging my Java program (which is actually pretty short if you think about it in the context of programming). There were a lot of workarounds I had to use, and a big pile of errors and warnings. Thanks Oracle, I definitely always wanted a programming language that gives meaningless errors.
There were also many bugs that did not show up in testing, but I'm getting ahead of myself. Also, I found out that it takes up to 24 hours for data to be visible to the extension.
Once I had finished debugging (which took a whole day), I posted Panel on the Kodular community.

An extension on the rise

People were loving my extension for some reason.

Except for a few things I launched on Product Hunt, my projects usually weren't that successful. I didn't really have high hopes for this one. Boy, was I not ready for what was to happen.
Within the first few hours, people were liking, commenting, and signing up for accounts like crazy. I spent a large portion of my day replying to people's messages and answering questions. Even people who usually never really tried out extensions that much were signing up and giving feedback.

The return of the bugs

As I mentioned earlier, some bugs managed to get through testing. Peter, a community member and moderator let me know that there was a bug where no data was fetched. I found out that some info needed to use the extension was not displayed properly in the web dashboard, and I fixed it as soon as possible.
Sadly, there was a bug I couldn't fix. Blockstack can take a while to make data publicly visible, and this wasn't mentioned clearly enough. The most I could do was let people know. At least I did that.

A conclusion and lessons learned

I've learned a few things through this, such as that Java is a mess, things can always go wrong, and things can always have a chance of working out. That last one is actually hard to believe for more than 5 seconds for me, though.

Before any of this turns into motivational mumbo jumbo, I'm going to end this post. Thanks for reading! If you have any questions, please leave them in the comments.

Comments

  1. This comment has been removed by the author.

    ReplyDelete
  2. Do you have any plans to develop Panel any further. I really loved testing this.

    ReplyDelete

Post a Comment

Popular posts from this blog

How to make a fancy parallax scrolling website

My latest app: Collage!