Try it now!

Inspiration

Most people are aware of URL shorteners like Bitly for shortening large unwieldy links to make them easier to share. While Atlassian's share feature provides a shorter link, it's still reaaally long.

Atlassian raw link [~96 characters]

yourcompany.atlassian.net/wiki/spaces/SPACE/pages/123456789/Great+for+SEO+But+This+Thing+Is+Long

Atlassian share link [~38 characters]

yourcompany.atlassian.net/l/c/abcdefgh

What it does

Creates short links for Confluence pages and Jira issues.

Shortlink [max 15 characters]

team.sc/abcdefg

Features:

  • Links automatically created with fast and easy access.
  • Short and readable domain name: team.sc (think "team shortcut").
  • Bad words removed from auto-generated link ID.
  • Super fast 301 redirects using serverless computing at the edge.

How I built it

  • React and Atlaskit
  • Cloudflare Worker + Workers KV
  • Confluence content properties
  • Jira entity properties

Challenges I ran into

  • DNS is always a tricky one.
  • Implementing wildcard routing.

Accomplishments that I'm proud of

  • Finding a short and readable domain name that was available (albeit expensive).
  • Determining the best number of characters to go with for the ID. I'm using [a-zA-Z0-9] with no dashes or underscores. With 6 characters you have 62^6 (~56 billion) unique addresses. But with 7 characters you have 62^7 (~3.5 trillion) unique addresses. Since the shortener is limiting URLs to the "*.atlassian.net" hostname it's unlikely to ever hit 56 billion, but adding one more character dramatically increases the scalability. I assume this is why Bitly also uses 7 characters.

What I learned

  • This was my first Jira app so lots of learnings there. For starters I assumed there would be an equivalent getContentProperty() and setContentProperty() function for Jira. Turns out it's all through REST calls.

What's next for Shortlinks+ for Confluence & Jira

  • Deploy to the Atlassian marketplace.
  • Add simple analytics to show visits over time through the short link.

Built With

Share this project:

Updates