An implementation of Go-Links, written in Kotlin
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
browser-extension
docs
environment
gradle/wrapper
src
.codacy.yaml
.codecov.yml
.dockerignore
.envrc
.gitignore
.travis.yml
CNAME
Dockerfile
LICENSE
README.md
_config.yml
build.gradle.kts
favicon.ico
gradle.properties
gradlew
settings.gradle.kts

README.md

KotLink

License Build Status codecov Codacy Badge Docker Hub

KotLink is a solution for creating and sharing memorable URL aliases, which takes its inspiration from Google's internal Go-Links system.

Why use KotLink?

  • Get rid of bookmarks for URLs frequently used within your team
  • Speak the same language as your colleges (e.g. Matt, can you check out what is up with staging␣grafana?)
  • Search in your "intranet" quickly for a resource that you don't know the exact URL for

Overview

KotLink works by letting people install a tiny browser extension that activates when the person first types go 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).

Suggestions In Address Bar

For example, if someone has already created an alias for vim shortcuts that maps to https://vim.rtorr.com, by typing go␣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 of the links / namespaces for your team.

Supported Browsers

Chrome and Firefox extensions will require some configuration before they can be used.

KotLink Server

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.

For evaluation purposes, you can run KotLink server on your machine with the following commands, given that you have Docker installed (you may have to add sudo before all calls to docker depending on your system):

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:10.4

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.

List Aliases in UI

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:

  • set KotLink Server URL to http://localhost:8080
  • set Extension Secret to your personal extension secret, which you will find at http://localhost:8080/ui/extension_secret).

Extension Options

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:

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.

Engineering Guide

If you would like to contribute to the project, take a look at the Engineering Guide.