Skip to content

Latest commit

 

History

History
62 lines (37 loc) · 2.09 KB

README.md

File metadata and controls

62 lines (37 loc) · 2.09 KB

Shorty

A simple redirection service that routes any path to any URL - or in brief, a short URL service, depending on the length of your domain name.

System requirements

Quickstart

Build the app first:

go build -o shorty

You can use --help or -h with any command to learn more about Shorty usage.

./shorty --help

Start the app:

./shorty start

Configuration

Shorty can be configured via CLI flags or environment variables. Refer to help text for more detail.

The most important flag is --token|-t|SHORTY_TOKEN which is unset by default, meaning that authentication is not enabled and anyone can modify your redirects. Set a token secretly and add it to your client to prevent unauthenticated access.

Usage

You can use the following commands to manage your redirects:

  • shorty add <path> <destination> adds a redirect
  • shorty rm <path> removes a redirect
  • shorty get <path> gets the destination of a redirect
  • shorty list <path> lists all redirects

⚠️ You can add, remove, or get any path other than /* (the default "all-path"). This is a special case used for listing redirects and requires authentication if --token|-t|SHORTY_TOKEN is set.

These commands connect to the running Shorty instance, so you need to make sure you have started it first. Make sure to set --token|-t|SHORTY_TOKEN as well if you have enabled token authentication.

If you provide --url|-u|SHORTY_URL then you can use Shorty as a remote CLI. By default it will connect to the local Shorty instance.

Since all Shorty interaction goes through a REST API, it's easy to use another client (such as Postman) or develop your own client to manage Shorty. This is left as an exercise for the reader.

Docker usage

This project is packaged as a Docker image in GitHub Container Registry for ease of use.

docker run --rm -ti -v './your-data-dir:/shorty/data' -p '3000:3000' ghcr.io/annybs/shorty:develop

License

See LICENSE.md