An implementation of Go-Links, written in Kotlin
KotLink is a solution for creating and sharing memorable URL aliases, which takes its inspiration from Google’s internal Go-Links system.
KotLink works by letting people install a tiny browser extension that activates when the person first types kk in the address bar and then presses space. While activated, the extension is providing autocomplete based on the database of aliases, and after the user has hit enter, it will redirect the user to the actual URL that matches the provided alias (or to the search page, if such an alias does not exist).
For example, if someone has already created an alias for vim shortcuts
that maps to https://vim.rtorr.com
,
by typing kk␣vim␣shortcuts↵, the user will be redirected to the actual link.
Please beware that to make use of the browser extension, you will first need to set up a dedicated KotLink server, as it’s going to store all the links / namespaces for your team.
Chrome and Firefox extensions require some configuration before they can be used.
With Vivaldi via manually registering KotLink as a search engine
MacOS and Alfred users can install this workflow (requires Node.js 8+ and the Alfred Powerpack):
npm install --global alfred-kotlink
KotLink server requires an instance of PostgreSQL as the backend store, and encapsulates all the logic around storing / resolving URL aliases, as well as UI for creating / editing them.
Assuming you have Docker and docker-compose
installed,
you can run KotLink server on your machine for evaluation purposes with the following commands:
git clone https://github.com/ilya40umov/KotLink.git && cd KotLink
./gradlew bootRun
Alternatively, if you don’t want to clone the repository, you can use the following set of commands:
docker network create kotlink-network
docker run --name kotlink-postgres \
--network kotlink-network \
-e POSTGRES_USER=kotlinkuser \
-e POSTGRES_PASSWORD=kotlinkpass \
-e POSTGRES_DB=kotlink \
-d postgres:13.3
docker pull ilya40umov/kotlink
docker run --rm --name kotlink-server \
--network kotlink-network -p 8080:8080 \
-e SPRING_DATASOURCE_URL=jdbc:postgresql://kotlink-postgres:5432/kotlink \
ilya40umov/kotlink
Now if you open http://localhost:8080/
you will be redirected to KotLink UI,
which, after you have signed in with your Google account, will allow you to add namespaces and aliases.
At this point, you can finally install the Kotlink browser extension, open its Options (Preferences in Firefox), and configure it to access your local KotLink server:
http://localhost:8080
http://localhost:8080/ui/extension_secret
).Please, note that to allow accessing KotLink UI under your custom domain name / IP address, you will need to obtain OAuth 2.0 client credentials from Google API Console and provide them to your KotLink server via environment variables (see more on this in Deployment Guide). Through environment variables, you will also be able to restrict who can access your KotLink server.
When you are done evaluating, you can run the following command to clean up containers from your machine:
./gradlew composeDownForce
or if you chose the second approach:
docker rm -f kotlink-postgres && docker network rm kotlink-network
For the detailed instructions on how to permanently set up your own KotLink server, take a look at the Deployment Guide.
If you would like to contribute to the project, take a look at the Engineering Guide.