MCPcopy Index your code
hub / github.com/abdibrokhim/notlink

github.com/abdibrokhim/notlink @0.0.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release 0.0.1 ↗ · + Follow
32 symbols 48 edges 17 files 5 documented · 16%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

language feedback github stars

crates discord x(twitter) follow

The Fastest URL Shortener Ever

it takes less than 1s to shorten a URL.

try notl.ink

Super Simple.   Blazingly Fast.   Open Source.

<a href="https://yaps.gg">Report Bug</a>
·
<a href="https://yaps.gg">Request a Feature</a>
·

Join us on Discord · Follow us on X

*

⭐ If you find notlink interesting, consider starring this repo to help spread the word.

*

notlink is officially live on Product Hunt!

live demo

About The Project

This is notlink - a blazingly fast URL shortener ever built with Rust programming language. It is designed to be simple, secure, and fast. notlink is open-source and free to use. It is also fully customizable and can be self-hosted on your own server. Join us!!.

live demo

Built With

notlink is built with the following awesome open-source technologies: - Rust - Actix - Diesel - Shuttle - Neon - NextJS - Typescript

notlink's UI could be found in this repo

Features

  1. Shorten URLs: Convert long URLs into short, easy-to-share links.

  2. Data Encryption: Encrypt stored URLs to enhance security and protect user data.

  3. Expiration Dates: Enable URLs to expire after a certain date or number of uses.

  4. API Access: Provide a minimal RESTful API for programmatic access to the URL shortener.

Roadmap

  1. Custom URL Aliases: Allow users to create custom shortened URLs.

  2. QR Code Generation: Automatically generate QR codes for each shortened URL.

Quick Start

Clone the repository:

git clone https://github.com/abdibrokhim/notlink.git

Install the dependencies with:

cargo install

Copy the .env.example file to .env:

cp .env.example .env

Replace with your stuff:

DATABASE_URL=postgresql://...:...@.../...?sslmode=require
CRYPTO_KEY=...
HOST=...

Generate a secure random key (you can use openssl command line):

openssl rand -hex 32

Run the development server with:

cargo shuttle run

Send request here: http://localhost:8000. You may try to run the tests with. But there's no tests yet, lol. Anyway refer to APITESTS.md for examples of how to test the API endpoints.

Tutorial 🥳

Tutorial is available on TUTORIAL.md. Check it out!!

For the video tutorial, you can check it out on YouTube

live tutorial

Donate & Support

Crypto

  • Bitcoin: bc1qpylxaqwapk0tgdmpnnljj545z4lk2z9q5us6p6
  • Ethereum: 0xb4a8e71d82e8Bf84a02C7770585F9cD8b267aDB9
  • Solana: 4MpPHapcdb5MwRy57juUQ2wUt1EJo8BYqXsYKwSfCvz1

Wanna learn more about me? refer to my official website.

Contributing

Contributing is highly encouraged! Even if you are not planning to submit any code, joining our Discord server and providing feedback helps us a lot!

Check out our CONTRIBUTING.md and find the appropriate repo above to contribute to.

Open Community

Join the awesome community on Discord

Credits

Logo made by Ibrohim Abdivokhidov (@abdibrokhim). Follow him on LinkedIn and/ or X (twitter)

Star History

Star History Chart

⭐ If you find notlink interesting, consider starring this repo to help spread the word.

Contributors ✨

Thanks goes to these wonderful people:

Made with contrib.rocks.

Core symbols most depended-on inside this repo

get_crypto_key
called by 2
src/utils/keys.rs
encrypt_url
called by 1
src/utils/crypto.rs
decrypt_url
called by 1
src/utils/crypto.rs
init_secrets
called by 1
src/utils/keys.rs
get_pg_url
called by 1
src/utils/keys.rs
random_short_code
called by 1
src/utils/rcode.rs
find_by_short_code
called by 1
src/db/operations.rs
find_by_original_url
called by 1
src/db/operations.rs

Shape

Function 24
Class 8

Languages

Rust100%

Modules by API surface

src/db/operations.rs9 symbols
src/utils/keys.rs4 symbols
src/db/models.rs4 symbols
src/utils/crypto.rs2 symbols
src/routes/wupdate.rs2 symbols
src/routes/wcreate.rs2 symbols
src/routes/shorten.rs2 symbols
src/routes/expire.rs2 symbols
src/main.rs2 symbols
src/utils/rcode.rs1 symbols
src/routes/redirect.rs1 symbols
src/routes/getshorturls.rs1 symbols

For agents

$ claude mcp add notlink \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page