# lua.sh - Scalable & Open-Source URL Shortener **lua.sh** is a next-generation, scalable, and open-source URL shortener built with the modern stack of Laravel, Vue 3, and Inertia.js. Designed to be fast, flexible, and developer-friendly, **lua.sh** empowers you to create and manage your own professional URL shortening service with ease. Whether you're an individual looking for branded, trackable links or a business aiming to scale with advanced analytics and custom domains, **lua.sh** is your perfect solution. It’s lightweight, fully customizable, and ready to grow with your needs. ## 🌟 Features - 🌐 **Shorten URLs**: Quickly shorten long URLs with an intuitive interface. - πŸ“Š **Detailed Analytics**: Track clicks, referers, devices, geolocation, and more with a comprehensive dashboard. - ⚑ **Custom Domains**: Add and manage custom domains to create branded URLs. - πŸ”— **Custom URL Slugs**: Personalize your links with memorable, custom slugs. - πŸ“± **Responsive Design**: Enjoy a mobile-friendly front end built with Vue 3 and TailwindCSS. - πŸ”’ **Authentication & Authorization**: Protect the service with secure authentication and manage permissions for team-based usage. - πŸ’‘ **Link Expiration & Management**: Set expiration dates for links and manage them effortlessly. - πŸ” **Secure by Design**: Includes built-in CSRF protection, rate-limiting, and HTTPS support. --- ## πŸ› οΈ Tech Stack ### **Backend** - [Laravel](https://laravel.com/): A robust PHP framework designed for high-performance, scalable applications. - [MySQL](https://www.mysql.com/): Reliable relational database for storing and managing data. ### **Frontend** - [Vue 3](https://vuejs.org/): A progressive, reactive JavaScript framework for creating modern interfaces. - [Inertia.js](https://inertiajs.com/): Seamlessly integrates server-side rendering with single-page app features. - [TailwindCSS](https://tailwindcss.com/): Utility-first CSS framework for designing clean and responsive UIs. ### **Middleware** - [Inertia.js](https://inertiajs.com/): Combines Laravel and Vue into a smooth SPA-like experience. --- ### Images ![Analytics](.github/screenshot/analytics.png) ![Events](.github/screenshot/events.png) **Dark Mode is also available** ![Dark Mode](.github/screenshot/events-dark.png) --- ## πŸš€ Getting Started ```bash composer install npm install cp .env.example .env php artisan key:generate # OAuth signing keys for the API and the MCP server. These are gitignored, # so every environment generates its own β€” without them the api guard # rejects every token. php artisan passport:keys php artisan migrate --seed npm run dev ``` The seeders create the plans and the Passport personal access client that API keys are issued from. Both are idempotent, so `php artisan db:seed` is safe to re-run on deploy. ### Optional integrations Each of these stays off until its credentials are set, so a self-hosted install only shows what it can actually use: | | Environment variables | |---|---| | Google sign-in | `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET` | | GitHub sign-in | `GITHUB_CLIENT_ID`, `GITHUB_CLIENT_SECRET` | | PostHog analytics | `POSTHOG_ENABLED=true`, `POSTHOG_API_KEY` | ### MCP server The app ships an MCP server at `/mcp`, authenticated with OAuth. Connect an assistant from **Settings β†’ Authentication**, where the server URL and the current connections are listed. A connection can only act on the workspace it was authorised from. ## 🌟 Premium Domains - Cloud Only **lua.sh** provide you access to an array of sleek and memorable domains for your shortened URLs: - πŸ”— **lua.sh**: The default, clean, and professional option. For self-hosting or local development, please check the [Self Hosting](https://developers.lua.sh/self-hosting) or [Local Development](https://developers.lua.sh/local-development) guides. ## Contributors ✨
Paulo Castellano
Paulo Castellano

πŸ’»
Victor Gazotti
Victor Gazotti

πŸ’»
Muhammad Saim
Muhammad Saim

πŸ’»
Ibon Azkoitia
Ibon Azkoitia

πŸ’»
Add your contributions
## πŸ’Ž Sponsors A big thanks to our sponsors and partners who make Lua possible. If you're interested in sponsoring Lua and supporting the project, please check out our profile on [GitHub sponsors](https://github.com/sponsors/luadotsh) ❀️ [mercantive.com](https://mercantive.com) β€’ [changelogfy.com](https://changelogfy.com)