Forge, AKA build an Atlassian app in a day

Written by Laura Campbell

We at Elements like a challenge, so naturally participating in Atlassian’s Codegeist is something we look forward to each year. What is Codegeist? It’s the annual developer contest that helps teams unleash their potential by building Atlassian apps. In 2020 we submitted beta versions of our Jira cloud apps Elements Connect as well as Elements Copy & Sync. We were in the starting blocks this spring, waiting for the 2021 contest. Finally this summer (for us in the northern hemisphere 😉 ) they announced it! Check out the Codegeist 2021 details and project gallery over on Devpost.

But this year it was all on Forge 😮  (okay we weren’t actually that surprised; Forge is the future of apps for Atlassian). Here’s the behind the scenes experience of our submissions SkillQuest and Office Manager.

What is Forge?

Forge is Atlassian’s new developer framework, and since it will probably be the main developer platform in the future for Atlassian apps, we actually didn’t wait for Codegeist to start to get our hands dirty. With some developers, we started “Forge Sessions”, a dedicated time to learn and explore Forge by creating apps with a real purpose. Once the Codegeist was announced, we figured it was a good opportunity to propose some of our most advanced prototypes.

Our experience developing on Forge

What we liked

Right away, we liked working with Forge because it is so fast to get a functioning app deployed on our Atlassian products. The Forge environment is really developer friendly (our thought is that non-developers are targeted by this framework). Also the fact you don’t have to worry about the infrastructure really gives you peace of mind. Forge provides Function as a Service (FaaS) to developers. All you need is to write a Javascript / Typescript function with your business logic inside, then register its name to your app manifest. Forge will automatically deploy it into an isolated FaaS environment.

What was frustrating

But we couldn’t help feeling frustrated by some lack of functionalities due to the framework being so recent. As an example, some cool locations like the Jira general pages or post installation pages are not available yet. Some new comers, like UI Kit (which allow you to build interfaces for your application) would require more components to address more common use cases. We also ran into several Forge APIs that don’t have a Typescript declaration (or are not completely typed) which can slow down development.

Even though Forge doesn’t contain all the features of is big brother, Atlassian Connect, the team is really reactive (with at least one release each two weeks) and some of the missing features are already listed on the Forge Roadmap.

Testing Forge Storage

During the process of creating an application with Forge, our plan was to not use an external backend (using a Cloud provider). Everything should be handled by Forge functions, in order to deeply test the possibilities of the framework and to quickly develop our prototypes. Note that it’s possible to build Atlassian Connect apps on Forge, to use feature of both frameworks, but it’s still in beta. This approach lead us to work heavily with a new feature: the Forge Storage, a place to store dictionaries of data, which are dedicated to our app and a tie to an Atlassian instance. Again, the Forge Storage API is recent and doesn’t provide a lot of advanced features (like advanced query or results sorting) but can be used anyway.

In the end, our Elements developers worked on 6 apps, and we submitted SkillQuest and Office Manager early September 2021. It was a bit tricky since the contest ran during our summer and some team members were on vacation, but we’re proud of what we were able to submit.

SkillQuest for JiraOffice Manager for Jira

For anyone looking to give Forge a try, some knowledge of Javascript / Typescript and some basic concepts of Jira and Confluence are necessary to be able to create an app. It should be noted that the Atlassian community for Forge was really reactive and a big help for anyone developing on Forge. 

What we learned along the way

The great thing about participating in Codegeist was that we learned just how fast you complete an app with Forge.

One of the most challenging features we worked on was the Office Manager office editor was the most complex part. We had to go back to trigonometric math and transformation matrix; that’s not something we do often when developing Jira add-ons!

Retrospectively, we wouldn’t do it the same way. It was really fun to do and a great opportunity to play with HTML Canvas, but unfortunately it’s now very complex to add some features to the map. It we had to redevelop the office editor, we’d check for third-party library first and if nothing match our need, develop by our own with maintainability as a priority.

For the future

At Elements, we will continue with our Forge sessions, and we want to explore the “Connect on Forge” app side to prepare a potential migration of our existing Atlassian Connect apps. We plan on utilizing what we learned through our participation in Codegeist by bringing everyone on our team up to speed on Forge. We’ve created a sample app developers create as an exercise so they familiarize themselves with all the features on Forge.

To learn Forge, our developers have to connect Jira to Cat as a Service so that cute cats are automatically added to new issues. The goal of the exercise is create an app with this structure that uses:

  • and also Forge triggers to automatically generate a cat picture once the issue is created;

Forge structure Jira practice app

with an end result that looks like this.