Dashboarding tools like redash and superset give power to the users in terms of creating their own dashboards. I wanted to do something similar but using JQL instead. Existing charting solutions are either too simple or too complicated, I wanted to create something in between so that folks are able to create complex charts without delving into expensive third party products.
What it does
It allows the user to create customizable charts and tables purely through JQL. Users are able to generate multiple charts from the same table source and also have the ability to export the table to csv for consumption elsewhere. Users are also able to even create text widgets that are powered by Markdown.
How I built it
I used atlassian-connect-express to build everything. API is mostly driven by graphql and I used typeorm as the db modeling layer. The frontend is purely made out of modern react.
Challenges I ran into
- Deploying on digital ocean was harder than I anticipated. Mostly because digital ocean's managed db's require SSL which the default ACE setup does not support. I had to fork ACE and updated it to support it
- Lack of JQL editor meant that it's not as great as a user experience as native jira would be
- Deploying SSL and testing the deployed app was challenging as I kept on encountering cryptic error messages and there's not a great reliable source for help. The forums are good but the feedback loop is too slow.
- Lots of edge cases relating to the jira search api. The jira issues search has a lot of edge cases when it comes to rendering the results in a standard way. I had to come up with my own custom converter to represent the issues in the way that is flexible enough to use inside the tables.
Accomplishments that I'm proud of
I also realised codegeist was happening 2 weeks before the deadline so I'm proud that I was able to wrap up the mvp and have something deployed. Throughout the process I also managed to submit a bunch of PRs into the ACE framework, mostly around code maintainability so that future developers have an easier time reading the code.
- https://bitbucket.org/atlassian/atlassian-connect-express/pull-requests/188 (merged)
- https://bitbucket.org/atlassian/atlassian-connect-express/pull-requests/190 (merged)
- https://bitbucket.org/atlassian/atlassian-connect-express/pull-requests/193 (merged)
- https://bitbucket.org/atlassian/atlassian-connect-express/pull-requests/194 (merged)
What I learned
- Docker and deploying on digital ocean
- Creating a typescript mono-repo
- Using github actions for CI
- Setting up sentry for monitoring
- Setting up mixpanel for analytics
What's next for Dashbodo for Jira - JQL powered dashboards
More chart types and charting options. Introduce more widgets to be added to the dashboard.