Skip to content

byawitz/linkos

Repository files navigation

Fully featured Open-source URL Shortener | Beta Documentation

About

Linkos is an open-source URL Shortener, packed with many useful features, realtime processing and custom audience targeting.

🏗 Development status:

  • ✅ Idea
  • 👉 Alpha
  • 🏗 Beta
  • ⏳ Release

Architecture

Linkos is being built with microservice architecture, with stateless logic parts that are ready for a small and large scale.

Stack:

What Tech
Backend Bun, Hono
Links DB PostgreSQL
OLAP DB ClickHouse
Message Queue Kafka + KRaft
Cache Redis
Frontend Vue with Tabler theme
Extension Vue with WXT
Cronjob Croner
Realtime Soketi

For SSL use either Nginx & certbot, or any domain-level SSL as Cloudflare.

Deploying

Container Description Notes
Traefik Application Proxy Standalone application
Postgres Clicks DB Standalone application
ClickHouse OLAP DB Standalone application
Redis Cache DB Standalone application
Kafka Message Queue Standalone application
Linkos A stateless backend API & Dashboard
Linkos Links Links entrypoint Provider
Analytics Kafka consumer Worker
Webhooks Kafka consumer Worker
Scheduler Cron Runner

Features:

Feature Description Quota / Notes
Short links Number of links can be created each month Unlimited
Campaign Create and manage links by campaigns and get stats for campaign in general Unlimited
Redirect link Changing link destination Unlimited
Custom URI Set your own short link hash Unlimited
Custom domain Set custom domain for your links Unlimited
Clicks How many time each link can be clicked Unlimited
QR Generate branded link QR code Unlimited
Private Private links protected with password Unlimited
Expiration Make link expire in N time Unlimited
I Redirect Redirect with info and Continue button Unlimited
Plus page Behind the link page. Unlimited
Webhooks Get notified when click, goal oriented
Meaning every X clicks, etc.
Unlimited
Device targeting Target link by device type, brand. Unlimited
Geo targeting Geo targeting by ip-db Unlimited
Tags Organize links by tags. Unlimited
Users Multiple users. Unlimited
CSV/Bulk Short a big list of URLs 10,000+
Analytics Comprehensive link analytics, look below 3 Years
Monitor Monitor links like uptime robot Hourly
UTM Builder & Forwarder Easy UTM builder and forward the UTM data
Parameter passing Pass all other parameters
API The same API being used by the dashboard but with a Token
Backup Easy automate backup to any S3-compatible storage
OAuth2 login For now Google, Apple & Facebook
2FA Enable 2fa with SMS (Plivo, Twilio) and OTPT
Easy firewalling For easy endpoint firewalling all api would be behind /v1/api endpoint
And, all management would be behind admin endpoint and it's changeable in the .env file
GDPR, CCPA, PECR Compliance with GPDT, CCPA and PECR.
SSO/SAML Azure AD, Google Workspace. Later

Analytics

Feature Description
Clicks Number of clicks
QR scans How many times the link was accessed through the QR code
it will work as links with QR code have a qr in the URL
Country Country origin
Device Device type, and brand
Referer URL referrer

Tests

You can run the e2e tests locally using act by running

act -W ".github/workflows/test.yml" pull_request -P ubuntu-latest=catthehacker/ubuntu:act-22.04 --cache-server-addr host.docker.internal