The idea for the application came from our technical writer, who often creates skeleton documentation for the end-user based on the analyst's requirements, which are gathered in Confluence. It is always tedious to work on a copy-paste basis. Switching between pages is very annoying when you have to create more than 20 pages (depending on the complexity of the product). We wanted to speed up the process of creating new pages that will be filled with content already contained on existing confluence pages.
What it does
This app allows you to create a new Confluence page based on the highlighted text on the page (after clicking Create a new page in the context menu). A new page is created as a child of the current page.
Instead of seven clicks (1. copy the text, 2. click Create new page, 3. select page type, 4. click Create button, 5. enter the title, 6. paste the copied text, 7. publish page), a user should make four quick actions: highlight text, click Create a page in the context menu, enter the title and click Save. Apart from saving time, he doesn't lose the context of the site he is currently working on.
How we built it
We used Forge UI components which helped us create the front end of our app:
We also used Forge Confluence fetch API which is a partial implementation of node-fetch and includes an Authorization header based on the context-bound fetch call.
We manage the entire project using Jira Cloud and Confluence. We have prepared the interface graphic designs in Figma.
Challenges we ran into
The problem was that through the contextual object selectedText we can only pass clean text without formatting. Unfortunately, the entire page structure and formatting cannot be moved to the new page. So we can't copy all page elements when creating a new page. This is a big limitation for this application, because, on the one hand, the user gains time, having functionality at hand, on the other hand, the time saved must be spent on reformatting the text.
This limitation we reported to the Atlassian team.
Accomplishments that we're proud of
Our beginnings with Forge were very difficult. That is why we consider it successful that the application works. What's more: it works correctly.
The strength of our solution is the lack of configuration. The application is installed and is immediately ready for use. Functionality is at hand, easily accessible.
We think that the design of the panel (glance) and the mechanics of the application's operation do not differ from the Jira standards. We believe that it is important that the end-user does not feel that he is using an external application. Our application fits perfectly into the product offered by Atlassian. Creating a new page is as easy as adding a comment - Confluence users know this action.
What we learned
This was our first contact with Forge, so everything was new to us. We learned how Forge works, what is currently possible to achieve, what not yet. In case of this app, it was important to learn how to work with Confluence fetch API and /wiki/rest/api/content resource. Worth noticing that having React background was really helpful to create the app quickly.
None of us has ever participated in any hackathon! We work with each other every day, but it is a completely different style of work than during such a competition. We were still thinking about how little time we have left, and how much is still to be done. But we can say it was worth it and it certainly is not our last time. We still want to work together :)
What's next for Create Page from Content for Confluence
The most important functionalities we would like to add to the application are:
- defining the location of a new page in the tree
- save the selected fragment as a template
A lot depends on how much Forge will offer us and in what direction its possibilities will develop. Currently, Forge is not supported on the Atlassian Marketplace. (We are looking forward to adding such support!) For this reason, we decided to add this functionality as a new feature in the existing Connect app - Content Template Macro for Confluence and publish it on the Marketplace.