Skip to content
This repository has been archived by the owner on Jun 24, 2023. It is now read-only.

evilfactorylabs/gow

Repository files navigation

gow

Simple URL shortener with simple analytics.

gow

Motivation

This program is powering our internal url shortener (evlfctry.pro) which is to track link distribution without tracking any personal data.

Technologies

  • Go
  • SQLite
  • Reason React (Web)

Goals

  • Minimal dependencies
  • Minimal memory footprint
  • No personal data tracking

Development

Make sure you have Go & SQLite installed (and its dependencies), if not, you know what's next.

  • Build the application: make
  • Run the server: TOKEN=<token> ./gow

If you want to develop the web as well, you need to open a new terminal session and run npm run dev in web directory.

Environment variables

  • TOKEN - Used for creating via REST_API, default: (empty)
  • HOST - Helpful when you are using reverse proxy, default: localhost
  • PORT - Helpful in case you don't use container technology, default: 3030
  • SLACK_WEBHOOK - (Optional) Slack Webhook URL to send incoming request to Slack, default: (empty)

For now (v0.2.0), authorization is done in Layer 7 (Load Balancer), but I will fix this.

Deployment

There are 2 ways to run this program in Production.

Quick way

  • Pull the image: docker pull evilfactorylabs/gow:<version>
  • Run it: docker run -d -e TOKEN="<token>" -v ~/data:/app/data evilfactorylabs/gow:<version>

As Binary

  • Clone repo
  • Build code: make
  • Run program: TOKEN=<token> ./gow

As Docker Container

  • Build image: docker build -t . evilfactorylabs/gow:latest
  • Run image: docker run -d -e TOKEN="<token>" -v ~/data:/app/data evilfactorylabs/gow:<version>

Roadmap

  • v1.0.0 — stable basic functionality [api, web]
  • v1.1.0 — show total hits on index & stats page [api, web]
  • v1.2.0 — functionality to delete existing slug [api]
  • v1.3.0 — authentication functionality, not rely on token (like now) [api, db]
  • v1.4.0 — make migration easier and more reliable [db]
  • v1.5.0 — fancy chart! [web]

Maintainer(s)

License

(c) 2020 evilfactorylabs, under MIT License.