Self-hosted, url-based redirection service
Find a file
Armin Friedl 1782a97bcb
All checks were successful
continuous-integration/drone/push Build is passing
Make docker default configuration production ready
2020-11-08 20:16:36 +01:00
snip Make docker default configuration production ready 2020-11-08 20:16:36 +01:00
.drone.yml Add CI build 2020-10-26 17:39:44 +01:00
.gitignore Initial commit 2020-10-20 21:33:56 +00:00
.snipenv Make docker default configuration production ready 2020-11-08 20:16:36 +01:00
.snipenv.local .snipenv configuration 2020-11-08 14:20:41 +01:00
Dockerfile Make docker default configuration production ready 2020-11-08 20:16:36 +01:00
LICENSE Add README, fix license, add querysheet 2020-11-06 02:03:07 +01:00
package-lock.json Success page, prettifying shortener 2020-11-06 00:46:58 +01:00
package.json Add README, fix license, add querysheet 2020-11-06 02:03:07 +01:00
Pipfile .snipenv configuration 2020-11-08 14:20:41 +01:00
Pipfile.lock .snipenv configuration 2020-11-08 14:20:41 +01:00
querysheet.http Add README, fix license, add querysheet 2020-11-06 02:03:07 +01:00
README.md Add README, fix license, add querysheet 2020-11-06 02:03:07 +01:00
snip.svg First version 2020-10-26 17:17:00 +01:00
snip_screen.png Add README, fix license, add querysheet 2020-11-06 02:03:07 +01:00
TODO.org Add README, fix license, add querysheet 2020-11-06 02:03:07 +01:00
webpack.common.js Success page, prettifying shortener 2020-11-06 00:46:58 +01:00
webpack.dev.js First version 2020-10-26 17:17:00 +01:00
webpack.prod.js Working shortener with some style 2020-10-30 00:59:31 +01:00

Snip

Build Status

No-fuzz link shortener.

Snip Screenshot

Getting started

Snip is a self-hosted link shortener. It provides an API and a web interface. Dependencies are managed with pipenv and npm. Snip runs on flask the frontend is assembled with webpack. All this is rather simple in practice.

Run from docker

The simplest way to get started is to run snip from the regularily published docker containers.

docker run -p5000 arminfriedl/snip:latest

Then navigate your browser to http://localhost:5000. Alternatively, you can also query the REST API. For an example see the querysheet.http in this repository. If you want to run it manually you can also install snip and its dependencies yourself.

Install Dependencies

To install the dependencies for snip, you need pipenv and npm installed on your system. Then run:

pipenv install --dev
npm install --dev

Build Snip

The snip backend itself needs no separate build step. However, the frontend needs to be assembled by webpack.

# Run a development build with continuous update
npm run watch

# Run a production build
npm run publish

Run Snip

From the repository root run:

export FLASK_ENV=production # or development
export FLASK_APP=snip

pipenv run flask run

Flask will tell you where you can reach snip, per default http://localhost:5000.

Contribute

If you want to contribute to snip feel free to send patches to dev[at]friedl[dot]net. Alternatviely, you can issue a pull request on GitHub which will be cherry picked into my tree. If you plan significant long-term contributions drop me a mail for access to the incubator repository.

Github Users

If you are visiting this repository on GitHub, you are on a mirror of https://git.friedl.net/incubator/snip. This mirror is regularily updated with my other GitHub mirrors.

Like with my other incubator projects, once I consider snip reasonable stable the main tree will move to GitHub.