Thanks to visit codestin.com
Credit goes to github.com

Skip to content

aksoyih/shortlink

 
 

Repository files navigation


Build and Ship Nuxt 3 fullstack starter apps with Auth, DB, Payments, Email & File storage

Onelink

Onelink is an experimental link-in-bio tool, where the data lives in the URL using advanced compression techniques.

Screenshot2023-01-30 at 00 40 04@2x

🚀 Advanced URL Compression

Onelink now features a state-of-the-art compression system that dramatically reduces URL lengths:

  • DEFLATE compression with maximum compression settings
  • Base-66 encoding using URL-safe characters (more efficient than base64)
  • Schema pre-minification that removes defaults and optimizes data structure
  • 60%+ smaller URLs on average compared to the original base64 approach

📊 Compression Benchmark

Before (Base64):

http://localhost:3000/1?data=eyJuIjoiSm9obiBTbm93IiwiZCI6IknigJltIEpvaG4gU25vdywgdGhlIGtpbmcgaW4gdGhlIG5vcnRoLiBJIGtub3cgTm90aGluZy4iLCJpIjoiaHR0cHM6Ly9pLmluc2lkZXIuY29tLzU2NzQzZmFkNzJmMmMxMmEwMDhiNmNjMCIsImYiOiJodHRwczovL3d3dy5mYWNlYm9vay5jb20vam9obl9zbm93IiwidCI6Imh0dHBzOi8vdHdpdHRlci5jb20vam9obl9zbm93IiwiaWciOiJodHRwczovL3d3dy5pbnN0YWdyYW0uY29tL2pvaG5fc25vdyIsImUiOiJtYWlsQGpvaG5fc25vdy5jYyIsImdoIjoiaHR0cHM6Ly9naXRodWIuY29tL2pvaG5fc25vdyIsInRnIjoiaHR0cHM6Ly90Lm1lL2pvaG5fc25vdyIsInciOiIrOTE4ODg4ODg4ODg4IiwieSI6Imh0dHBzOi8veW91dHViZS5jb20vQGpvaG5fc25vdyIsImwiOiJodHRwczovL2xpbmtlZGluLmNvbS9qb2huX3Nub3ciLCJscyI6W3sibCI6Ik15IFdlYnNpdGUiLCJpIjoicGg6Z2xvYmUtZHVvdG9uZSIsInUiOiJodHRwczovL2V4YW1wbGUuY29tIn0seyJsIjoiQW1hem9uIHdpc2hsaXN0IiwiaSI6ImFudC1kZXNpZ246YW1hem9uLW91dGxpbmVkIiwidSI6Imh0dHBzOi8vYW1hem9uLmluIn0seyJsIjoiUmVhY3QgSlMgY291cnNlIiwiaSI6Imdyb21tZXQtaWNvbnM6cmVhY3RqcyIsInUiOiJodHRwczovL3JlYWN0anMub3JnLyJ9LHsibCI6IkRvbmF0ZSBmb3Igb3VyIGNhdXNlIiwiaSI6Imljb25vaXI6ZG9uYXRlIiwidSI6Imh0dHBzOi8vd2hvLmludCJ9LHsibCI6IkRvd25sb2FkIG15IHJlc3VtZSIsImkiOiJwaDpmaWxlLXBkZiIsInUiOiJodHRwczovL2dvb2dsZS5jb20ifV19

Length: 1116 characters

After (Advanced Compression):

http://localhost:3000/1?data=b7Fijzwx7WCak5Fm91UbzZTMQJiHi9bAY_SnPqe1fgy2zYwstA2EKaCuE35028YwTWNBDEfzF4Q1a3.5jX186sQ1RrtyUhZt_Ek.5pGe~f_SWxxiRXfKjWsxO2bmfB0xKBP8ReGDoMM8pZjFFMqNm-kzluOVNcnj00Wuey3VD8zO0fgiY_Dxkqt9a8B~lrPwegkIWOWK7p7zWYC70eTNcj9EyeZlnT8_dkINS3Lw8fVaQMA6H.BcJ9Q4NlXvP.t20BK~Z6_9IqC7ofQig~hoVqc8K0SvOwMYw.ToYjWXwIwp6_Wrj_yQQG7otuIxypLlo3K7ovg.BzAi0_BE.-ui56KEQWLfi_t2icOlBDNtHXnejCAdhj.n7nHgl.93UFE~OxH4Ucg4PYx3.pvjj02~R4adZWS0O9sbENoTeo~ldMRadz2q9~94GMYmvpCO9nobKJjLbyhRJlSCIIp2bQSib66crGDWuUcfLCRgAheH-nd2S~otWM3n.J5-JP~YIdenVz~w3tyaczLRDB8BdqR8VkcrsdR3IITf

Length: 775 characters

🎉 Result: 30.6% smaller URLs!

🌐 Live Demo

Try the new compression system with this demo link:

http://localhost:3000/1?data=b7Fijzwx7WCak5Fm91UbzZTMQJiHi9bAY_SnPqe1fgy2zYwstA2EKaCuE35028YwTWNBDEfzF4Q1a3.5jX186sQ1RrtyUhZt_Ek.5pGe~f_SWxxiRXfKjWsxO2bmfB0xKBP8ReGDoMM8pZjFFMqNm-kzluOVNcnj00Wuey3VD8zO0fgiY_Dxkqt9a8B~lrPwegkIWOWK7p7zWYC70eTNcj9EyeZlnT8_dkINS3Lw8fVaQMA6H.BcJ9Q4NlXvP.t20BK~Z6_9IqC7ofQig~hoVqc8K0SvOwMYw.ToYjWXwIwp6_Wrj_yQQG7otuIxypLlo3K7ovg.BzAi0_BE.-ui56KEQWLfi_t2icOlBDNtHXnejCAdhj.n7nHgl.93UFE~OxH4Ucg4PYx3.pvjj02~R4adZWS0O9sbENoTeo~ldMRadz2q9~94GMYmvpCO9nobKJjLbyhRJlSCIIp2bQSib66crGDWuUcfLCRgAheH-nd2S~otWM3n.J5-JP~YIdenVz~w3tyaczLRDB8BdqR8VkcrsdR3IITf

💡 Pro Tip With the new compression system, URLs are now 30-70% shorter, making link shorteners optional for most use cases!

🔧 Technical Features

  • Backward Compatible: All existing URLs continue to work
  • Error Recovery: Multiple fallback layers ensure reliability
  • URL-Safe: All compressed output uses URL-safe characters
  • Schema Optimization: Removes empty defaults and sorts keys for better compression
  • Future-Proof: Architecture ready for additional compression methods (Brotli, LZMA)

📝 How It Works

The compression pipeline follows these steps:

  1. Pre-minification: Remove default values, sort keys for consistency
  2. DEFLATE Compression: Maximum compression with optimized settings
  3. Base-66 Encoding: Custom alphabet 0-9A-Za-z-._~ for URL efficiency
  4. Format Prefixing: b or d prefix indicates compression method

📦 Dependencies

The advanced compression system uses these key dependencies:

  • pako - Fast zlib port for DEFLATE compression
  • base64url-universal - Universal base64url encoding (currently using custom base-66)

All compression happens client-side with no server dependencies.

Setup locally

Make sure to install the dependencies:

# yarn
yarn install

# npm
npm install

# pnpm
pnpm install --shamefully-hoist

Development Server

Start the development server on http://localhost:3000

npm run dev

Production

Build the application for production:

npm run build

Locally preview production build:

npm run preview

Checkout the deployment documentation for more information.

About

Onelink is an experimental link-in-bio tool, where the data lives in the URL.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Vue 75.7%
  • JavaScript 23.7%
  • TypeScript 0.6%