A simple and efficient link shortener.
- A super-easy-to-use JSON API;
- Your data is stored in an sqlite3 database. Backup with
rsync
orscp
; - A clean, no-fuss web interface;
- A documentation.
With HTTPie, simply type http POST :4000/s url=https://elixir-lang.org
(for instance).
You can test what you get with http http:https://localhost:4000/l/20gd6ne
.
the POST request will, in case of success, return this schema:
{
"longUrl": "https://elixir-lang.org",
"shortUrl": "http:https://localhost:4000/l/20gd6ne",
"status": "success"
}
Queerlink requires Elixir v1.4 and (it's in your best interest) OTP20.
Don't forget to export the PORT
and MIX_ENV
environment variables, the latter being prod
when you're reading for launching live!
Next:
- Install dependencies with
mix deps.get
; - In an
prod
environment, don't forget to generate a secret key base withmix phx.gen.secret
and add this snippet inconfig/prod.secret.exs
:
config :queerlink, QueerlinkWeb.Endpoint,
secret_key_base: "mysecret"
- Create and migrate your database with
mix ecto.create && mix ecto.migrate
; - Install Node.js dependencies with
npm install
; - Start the beast with
iex -S mix phx.server
$ export MIX_ENV=prod PORT=4000
$ cd assets/ && npm i
$ ./node_modules/brunch/bin/brunch b -p
$ cd ../ && mix phx.digest
$ mix release --env=prod
$ _build/prod/rel/queerlink/bin/queerlink migrate
$ _build/prod/rel/queerlink/bin/queerlink start|foreground|console
The doc/nginx/
directory contains the necessary configuration to run Queerlink behind an Nginx reverse proxy.
You can find a wrk lua script in doc/
as well.
This software is licensed under the MIT license.