Lynx is a self-hosted link shortner application. It allows you to shorten, track, and manage links with ease.
It is built with SQLite, making it lightweight, easy to manage, and perfect for projects of any scale. No complex database setup required, it offers a hassle-free way to handle your links while ensuring reliability and performance.
-
Choice pages - Create choice pages to allow users to navigate to multiple destinations from a single short URL, offering flexibility and boosting conversions.
-
Customizable slug -Define meaningful, unique slugs for your short urls like ac.me/help or ac.me/shop etc.
-
Password protected links - Secure your shortened links with passwords and ensure only authorized users can access the resource.
-
QR Code - Automatically generate QR codes for every shortened link, simplifying access and sharing.
-
Teams - Collaborate efficiently by creating teams, allowing shared access and management.
-
Custom domains - Enhance branding by using multiple custom domains for your short links, providing flexibility and a customized experience for different audiences or campaigns.
-
Analytics - Gain insights into link performance with detailed analytics, including click counts, geographic data, and device statistics.
- PHP >= 8.2
- Laravel >= 11.x
Follow below steps to install it locally -
git clone https://github.com/frikishaan/lynx.git
composer install
npm install
npm run build
Run the database migrations using the following command -
php artisan migrate
Optionally, seed the test data into the database using -
php artisan db:seed
Use the following command to create a account in the system -
php artisan lynx:create-account
Lynx handles the click analytics asynchronously using the Laravel's powerful queue system. By offloading analytics to background tasks, Lynx maintains optimal performance for users while managing data processing in the background. To start processing the queue items run the following command -
php artisan queue:work
Note - For long-running workers in production, ensure you supervise them using a process manager like Supervisor or Laravel Horizon for better reliability.
Lynx utilizes Laravel's task scheduling system to handle schduled jobs in the application.
Currently, Lynx includes a job which deletes the expired links in the system, provided they are marked for deletion. To run the scheduled jobs use the following command -
php artisan schedule:run
For continuous scheduling in production checkout the Laravel's documentation.