A free open-source URL Shortener written in Kotlin with Spring Boot
NekoShlink is a URL Shortener - it belongs to the same category as Bitly and TinyURL, but unlike them, it is completely open source and free.
It offers the following features, aside from the obvious ability to make long complex URLs shorter 😏
You have full access to the source code from NekoShlink’s Github repositories and you’re encouraged to fork and contribute!
Follow this link if you want to get up and running as quickly as possible.
If you have time to spare, read on for some background info on this project…
NekoShlink was inspired by Shlink. Shlink is a URL Shortener written in PHP. I was using it for my own short URLs, the ones I create and hand out for my training events, but over time I realised I wanted more out of the software - there were features other shorteners had that were not going to be implemented in Shlink, so… I decided to rewrite it myself using Spring Boot.
I also noticed that there was no open-source URL Shortener product targeting any of the JVM languages, which meant my rewrite could also help feel a gap. I chose Kotlin because it works well with Spring Boot, it is less verbose than Java and as close as Scala (probably my favourite language) as is possible to get while comfortably writing Spring Boot code.
In June 2022 I was given the opportunity to write another course for Pluralsight (my fourth one) and the topic was Securing REST Services Using Spring Security 5 - it seemed almost like fate, as I had just completed the core development on NekoShlink, and I was about to embark on the task of securing the product using Spring Security.
Therefore, NekoShlink is the main subject of a Pluralsight course, too!
The main code base of NekoShlink is made up of three Spring Boot Gradle projects
shlink-core
library projectshlink-cli
console-based application projectshlink-rest
web-based application projectThis main code base offers a fully functional, albeit unsecured product. Full authentication and authorisation support, with various options, is provided by separate projects
shlink-security
library projectshlink-userbase
library projectshlink-oauth-server
web-based project provides an OAuth2 auth server based on the Spring Security
Auth Server code baseFinally, another project contains miscellaneous utility classes that are more general and do not apply specifically to NekoShlink
nekosoft-utils
library project