Skip to content

URL shortener web app written in Go using Chi router and PostgreSQL database. App also provides caching and tests.

Notifications You must be signed in to change notification settings

legonian/url-shortener

Repository files navigation

url-shortener

URL Shortener web application written in Go. With this app you can type some long link and get easy to share short one with a basic info about number of click your short link has.

Features

This app include following features:

  • Using net/http with Chi-router
  • PostgreSQL for database to store shortcuts
  • In-memory cache with length and durations limit
  • Clicks counter
  • Separate database code, so its easy to change database implementations
  • Tests to check different routes and functions
  • Catch interaptions and SIGTERM signal to save cache before exiting

Demo

Demo app example is running in Heroku Cloud (free dynos):

https://tiny-shortener.herokuapp.com/

Index Page

Info Page

Usage

Before running set $PORT to set server port and $DATABASE_URL for PostgreSQL connection string. Also create_pg.sql script is presented to create required table in PostgreSQL database.

App using memory cache for redirected URLs. Cache limited by size and time duration, that defined in CACHE_LIMIT and CACHE_DURATION constants in /database/cache.go.

Installation

To install:

$ git clone https://github.com/legonian/url-shortener
$ cd url-shortener
$ go get -d
$ go build

Test

App include testing of initialization, database, cache, route requests.

To run all tests:

go test -v ./...

Author

Oleh Ihnatushenko

About

URL shortener web app written in Go using Chi router and PostgreSQL database. App also provides caching and tests.

Topics

Resources

Stars

Watchers

Forks