evilfactorylabs / gow

Licence: MIT license
URL shortener for evlfctry.pro

Programming Languages

go
31211 projects - #10 most used programming language
reason
219 projects
HTML
75241 projects
Dockerfile
14818 projects
javascript
184084 projects - #8 most used programming language
Makefile
30231 projects
shell
77523 projects

Projects that are alternatives of or similar to gow

reactor
🚀 Native Actors for Reason and OCaml
Stars: ✭ 70 (+141.38%)
Mutual labels:  reasonml
throw-me
A url shortener made with nextjs and postgresql database operated with Prisma
Stars: ✭ 34 (+17.24%)
Mutual labels:  url-shortener
bs-lwt
BuckleScript bindings for Lwt
Stars: ✭ 26 (-10.34%)
Mutual labels:  reasonml
bs-Zarith
Support Bigint, Q (rational numbers) and Z (integer numbers) in BuckleScript.
Stars: ✭ 15 (-48.28%)
Mutual labels:  reasonml
agda-mode-vscode
agda-mode on VS Code
Stars: ✭ 112 (+286.21%)
Mutual labels:  reasonml
bs-css-core
BuckleScript statically typed DSL for CSS (forked from https://github.com/SentiaAnalytics/bs-css)
Stars: ✭ 15 (-48.28%)
Mutual labels:  reasonml
hello-ppx-esy
A simple example of a ppx with Reason and esy
Stars: ✭ 38 (+31.03%)
Mutual labels:  reasonml
mpngin
A simple and fast URL shortener with built in stats.
Stars: ✭ 31 (+6.9%)
Mutual labels:  url-shortener
rescript-jest
ReScript bindings for Jest
Stars: ✭ 274 (+844.83%)
Mutual labels:  reasonml
qnd
Quick and Dirty development builds
Stars: ✭ 19 (-34.48%)
Mutual labels:  reasonml
laravel-url-shortener
URL shortener for Laravel
Stars: ✭ 26 (-10.34%)
Mutual labels:  url-shortener
yaus
Deprecated URL shortener
Stars: ✭ 26 (-10.34%)
Mutual labels:  url-shortener
bs-downshift
BuckleScript bindings for Downshift
Stars: ✭ 21 (-27.59%)
Mutual labels:  reasonml
dwarf
A O(1) URL shortener microservice backed by redis and gRPC communication.
Stars: ✭ 33 (+13.79%)
Mutual labels:  url-shortener
reason-phoenix
ReasonML/ReScript bindings for the Phoenix javascript library
Stars: ✭ 14 (-51.72%)
Mutual labels:  reasonml
delta
A modern file uploader + URL shortner written in node for your private cloud. low memory overhead + secure
Stars: ✭ 103 (+255.17%)
Mutual labels:  url-shortener
zone
A URL shortener / note sharing service.
Stars: ✭ 18 (-37.93%)
Mutual labels:  url-shortener
ocaml-mqtt
MQTT client for OCaml/ReasonML
Stars: ✭ 14 (-51.72%)
Mutual labels:  reasonml
dokusho
Simple Japanese reading stats tracker
Stars: ✭ 12 (-58.62%)
Mutual labels:  reasonml
rebez
Cubic bezier implementation in Reason / OCaml.
Stars: ✭ 31 (+6.9%)
Mutual labels:  reasonml

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].