2018-07-29 12:03:19 +00:00
# Golang URL Shortener
2017-10-29 19:38:19 +00:00
2018-02-02 07:58:12 +00:00
[![Build Status ](https://travis-ci.org/mxschmitt/golang-url-shortener.svg?branch=master )](https://travis-ci.org/mxschmitt/golang-url-shortener)
[![GoDoc ](https://godoc.org/github.com/mxschmitt/golang-url-shortener?status.svg )](https://godoc.org/github.com/mxschmitt/golang-url-shortener)
[![Go Report Card ](https://goreportcard.com/badge/github.com/mxschmitt/golang-url-shortener )](https://goreportcard.com/report/github.com/mxschmitt/golang-url-shortener)
[![Coverage Status ](https://coveralls.io/repos/github/mxschmitt/golang-url-shortener/badge.svg?branch=master )](https://coveralls.io/github/mxschmitt/golang-url-shortener?branch=master)
2017-11-08 15:52:37 +00:00
[![License ](https://img.shields.io/badge/License-MIT-blue.svg )](https://opensource.org/licenses/MIT)
2018-05-25 20:26:40 +00:00
[![Download ](https://api.bintray.com/packages/mxschmitt/golang-url-shortener/travis-ci/images/download.svg?version=0.1 ) ](https://bintray.com/mxschmitt/golang-url-shortener/travis-ci/0.1#files)
2018-02-05 13:04:47 +00:00
[![Docker Pulls ](https://img.shields.io/docker/pulls/mxschmitt/golang_url_shortener.svg )](https://hub.docker.com/r/mxschmitt/golang_url_shortener/)
2017-11-03 10:45:16 +00:00
2017-11-06 21:02:22 +00:00
## Main Features
2017-10-29 19:38:19 +00:00
2017-10-29 23:05:56 +00:00
- URL Shortening
- Visitor Counting
2017-11-09 08:44:20 +00:00
- Expirable Links
2017-11-06 21:02:22 +00:00
- URL deletion
2018-05-08 18:34:32 +00:00
- Multiple authorization strategies:
2019-03-20 07:28:01 +00:00
- Local authorization via OAuth 2.0 (Google, GitHub, Microsoft, and Okta)
2018-05-08 18:34:32 +00:00
- Proxy authorization for running behind e.g. [Google IAP ](https://cloud.google.com/iap/ )
2017-11-08 15:52:37 +00:00
- Easy [ShareX ](https://github.com/ShareX/ShareX ) integration
- Dockerizable
2018-05-07 20:48:37 +00:00
- Multiple supported storage backends
- High performance local database with [bolt ](https://github.com/boltdb/bolt )
- Persistent non-local storage with [redis ](https://redis.io/ )
2017-10-29 19:38:19 +00:00
2017-11-28 18:45:43 +00:00
## [Webinterface](https://so.sh0rt.cat)
2017-11-12 15:18:17 +00:00
![Short URLs ](https://user-images.githubusercontent.com/17984549/32700384-955d9336-c7c4-11e7-9fab-4141a86a375c.png )
---
![Generate ShareX Configuration ](https://user-images.githubusercontent.com/17984549/32700395-cf9f057a-c7c4-11e7-9d2b-7523c8a95a20.png )
2018-11-01 23:38:47 +00:00
## Documentation
2017-10-29 19:38:19 +00:00
2018-02-02 07:58:12 +00:00
- [Installation ](https://github.com/mxschmitt/golang-url-shortener/wiki/Installation )
- [Configuration ](https://github.com/mxschmitt/golang-url-shortener/wiki/Configuration )
- [Setting up OAuth ](https://github.com/mxschmitt/golang-url-shortener/wiki/Setting-up-OAuth )
- [ShareX Usage ](https://github.com/mxschmitt/golang-url-shortener/wiki/ShareX )
2017-10-29 22:49:36 +00:00
2017-11-06 21:02:22 +00:00
## Why did you built this
2017-11-01 17:00:28 +00:00
2017-11-21 20:35:45 +00:00
Only because I just want to extend my current self hosted URL shorter (which was really messy code) with some more features and learn about new techniques like:
2017-11-08 15:52:37 +00:00
2017-11-09 08:30:15 +00:00
- Golang unit testing
2017-11-08 15:52:37 +00:00
- React
- Makefiles
- Travis CI
2017-11-09 08:30:15 +00:00
- Key / Value databases
2017-11-19 17:42:07 +00:00
- Dockerfile and Docker Image Creation