A Link Shortener
- Rust 61%
- HTML 38.5%
- Dockerfile 0.5%
| .forgejo/workflows | Changes in changelog | |
| src | Changes in changelog | |
| templates | UI overhaul ai removal | |
| .gitignore | Changes in changelog | |
| build.rs | index uses new css without AI! | |
| Cargo.lock | Changes in changelog | |
| Cargo.toml | Changes in changelog | |
| CHANGELOG.md | Changes in changelog | |
| crawl-list.txt | bot detection | |
| Dockerfile | Changes in changelog | |
| example_config.toml | Changes in changelog | |
| README.md | Changes in changelog | |
Clifford
Simple (as in usage and hosting) link shortener.
Usage
The simplest usage is to just run/compile binary. By default it will keep link DB in a Sqlite file links.db inside directory it was ran from,
and will bind to port 3000 for address 0.0.0.0
To change the defaults check the example_config.toml
Features
- Permament Link shortening (duh)
- Support for Sqlite and Postgres
- Deletion of shortened links, using passkey returned when creating a link
- Links can be either custom or will be randomly generated when left empty (length defined by admin)
- One-time short links
- Protected by either admin defined password, or by integrated Altcha support.
- Simple middleware that protects links form being accessed by (some known) bots
- Above middleware also supports embeds for platforms like Discord, Signal, etc. (For not it returns from a silly list of sentences, will be made customizable later)
- Everything is baked into a single binary, including both backend and frontend
Warning
This thing is still in active development.
(削除) Also current CSS was made using Claude, it's meant to be temporary but for now it is AI generated. (削除ここまで) Not anymore! Now project is AI free :)
Planned future features
- Making it more service based, meaning multiple instances could run under one database and not have any issue. (Current limitation against it: altcha salts are instance-dependent, meaning if client solves altcha challenge on one instance, and then sends request to another one, verification will fail.)
- Administration panel, so you don't need to directly modify sqlite to remove links as an admin
- More configuration possibilities
- Custom text in frontend
- Possibly some refactoring to make code more readable
- Generally maintaining this to make it work great
Dedication
Crawl list was taken from https://github.com/monperrus/crawler-user-agents Mommy list taken from https://github.com/Gankra/cargo-mommy/blob/main/responses.json Name was chosen by