My name is Beerd. I'm a high school student in the Netherlands. One of my favourite things to do when I get home from school is programming. You can see some of my projects on my website
I spent a lot of time thinking about what kind of app I wanted to build. When I was going through all my emails, I got frustrated by the amount of emails I received from CircleCI about failed builds. Then I decided to create a Monday app that would help me and others to make my development workflow easier and more structured.
Another reason why I started building this app is that I wanted to gain more programming experience. I already had some experience with React, so that was not a big problem. However, the integration part was a bit more challenging for me, because I have never built something like that before.
What it does
My app is built to help you create an overview of your failed builds. First of all, you can create automations that will create new items on your board when triggered. You can then create other automations that will trigger when a new item is added to your board. This way you can for example create a due date, or notify someone. You can even track the time it took before the status was set to "Fixed" and create leaderboards tracking who can fix problems the fastest. See some screenshots of this
For this project, I have used a number of technologies. I already knew some of them, but some were new for me.
The first one is React. I used this for the dashboard widget. I already built a webshop with React (see my portfolio, so I already had some experience, but as always, I learned new tricks.
Another technology I used for this app is Firebase. This is built by Google and provides a lot of functionality. The main reason I used it was Firestore, a cloud database. I use this to manage the user integration subscriptions. This was the first time for me to use this, so I gained a lot of experience there.
I also used the CircleCI api for this project. I was already familiar with using CircleCI. The problem with the CircleCI API was that there was no API wrapper that has all the functionality I needed, so I had to build this myself. I had never done something like that before, so this was also a great addition to my skills.
This might be a bit obvious, but I also used Monday.com. I found out that using Monday.com is very easy and intuitive. Everything was well documented and easy to find. There were some limitations I found and problems I faced (see the next section), but the Monday developers are already fixing most of those problems.
Challenges I faced
Unfortunately, the whole process of building this app didn't go exactly as planned and it didn't go completely smooth. I faced my first big challenge when I was building my integration recipe. It was not really clear to me how I could create a dropdown menu in the sentence. I couldn't find it in the documentation, but luckily I got some help from the community. I found out that the example project contained exactly what I was looking for.
Another challenge I faced was also when I tried to build my integration recipe. I wanted to add two dropdown input fields to the sentence. When I clicked the first one, it loaded the list from my server, but the second one did not work and vice versa. I spent the whole day trying to fix this... Luckily, I got my answer after posting my question in the Monday.com community. It turned out to be a bug. Luckily, the Monday developers were already trying to fix this, so a couple of days later this issue was resolved.
Before making my own integration, I tried some of the pre-built integrations from Monday. When I tried the GitHub integration for example, I really liked the fact that you can add the commit id, branch name or author name to the item in the integration recipe. To see the difference: GitHub integration, CircleCI integration. If you look at the bottom at the GitHub integration, you can see that you can also add a new column. I asked how to do those two things in the Monday community. Unfortunately, it turned out that this was still in development too. Again, this was something the Monday developers were already trying to fix. This took only a week or so, and I could continue the development of my app again.
It is really amazing that the Monday developers listen to the questions and proposed features in the community. This really helped me in the development process.
Since I'm still a beginner, I didn't really know where to host my server-side code. Also, since I'm still in high school, I don't have unlimited money to spend. Luckily there is Heroku. This was an easy way for me to host my code for very little money.
Accomplishments that I'm proud of
The part that I am most proud of is the look of the dashboard widget. I spent a lot of time thinking what I could do to make it look outstanding. I tried adding all kinds of images, icons and text effects, but I did not really like it. All those effects made it look too complex and unclear. In the end, I settled with a really simple look, but with a very cool hover effect. The simple look keeps it from distracting you, but the hover effect makes it look cool.
What's next for my app?
For now, I made only one automation, because I think it is way more important for the user that the app is stable. I would love to make more automations for the user in the future based on user-feedback (for example the ability to start a build when an item has changed). This way, the integration gets more functionality.
Another thing I might add in the future is the ability to restart a build from within the dashboard widget.
A last change I have planned for the future is the way I host my app. For now, I use a free Heroku plan. This can sometimes cause a delay in the authorization flow. Whenever the Monday marketplace supports paid apps, I will use the money for a better hosting plan.
This app is built for the marketplace, so everyone can use it.