Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/eshan05/leanurl
LeanURL | Link shortener + QR code generator with analytics made using Next 15 and MongoDB
https://github.com/eshan05/leanurl
api dashboard mongodb mongoose nextjs qrcode shadcn tailwindcss url-shortener
Last synced: 15 days ago
JSON representation
LeanURL | Link shortener + QR code generator with analytics made using Next 15 and MongoDB
- Host: GitHub
- URL: https://github.com/eshan05/leanurl
- Owner: Eshan05
- License: gpl-3.0
- Created: 2024-11-26T12:18:12.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2025-01-16T19:40:47.000Z (26 days ago)
- Last Synced: 2025-01-16T20:41:21.351Z (26 days ago)
- Topics: api, dashboard, mongodb, mongoose, nextjs, qrcode, shadcn, tailwindcss, url-shortener
- Language: TypeScript
- Homepage: https://theaces.social
- Size: 2.33 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
![]()
![]()
![]()
![]()
![]()
![]()
![]()
LeanURL
Link Shortener + QR Code Generator
Visually stunning link shortener for your personal use. Powerful admin dashboard with tons of features and enhanced performance. Ease of use and scalable.
## 🍁 Overview
A Link Shortener + QR Code Generator for *personal* use or use within a *small team*. Fast, reliable and with a visually appealing UI. Scales and supports tons of extra features like scheduled live links, expiration dates and more easily integrable. Features an admin dashboard with everything you need.
### 💻 Technolgoies
[![React JS](https://skillicons.dev/icons?i=react "React JS")](https://react.dev/ "React JS") [![Next JS](https://skillicons.dev/icons?i=next "Next JS")](https://nextjs.org/ "Next JS") ![Javascript](https://skillicons.dev/icons?i=ts "Typescript") [![Mongo](https://skillicons.dev/icons?i=mongodb "Mongo")](https://www.typescriptlang.org/ "Typescript") [![Tailwind CSS](https://skillicons.dev/icons?i=tailwind "Tailwind CSS")](https://tailwindcss.com/ "Tailwind CSS") [![Vercel](https://skillicons.dev/icons?i=vercel "Vercel")](https://vercel.app/ "Vercel")
- **Language**: Typescript (Migrated)
- **Backend**: [Next.js 15](https://nextjs.org/) + [MongoDB](https://www.mongodb.com/) with Mongoose
- **Frontend**: [Next.js 15](https://nextjs.org/) + UI Components via [`shadcn/ui`](https://ui.shadcn.com/) + Tailwind
- **Others**: [Apexcharts](https://apexcharts.com/), [QR Code Styling](https://github.com/kozakdenys/qr-code-styling?tab=readme-ov-file), NanoId, IP-API, React Icons, Axios## 🚀 Features
- 🔗 **Shorten any link** and generate a corresponding **QR code** (With tons of customization! See second image). You can also assign a **custom alias** if needed.
- 📋 **Quickly copy** the shortened URL or **export the QR code** as a `PNG` file.
- 🌙 **Toggle between themes** for a personalized viewing experience (Custom theme too!).
- 🖥️ **Admin dashboard** that provides all the necessary operations to manage links, filter links, view detailed information for each, and export all data as a **CSV**.
- 🎨 **Beautiful UI elements** designed using **Tailwind CSS** and `ChadCN`, along with icons from **Lucide**. Mobile isn't left out!
- 📈 **Insightful graphs** powered by **ApexCharts**, showing detailed analytics such as the number of times a shortened URL has been used, as well as recent accesses via timestamps, device, browser and country.
- 📅 **Scheduling feature** for setting link live after a certain day and **Expiration Date** which automatically deletes the link from the database using **TTL**.
- 🏗️ **Scalable** architecture to easily add new features as needed.
- 🔒 **Restrictive** access, because who would want someone to come and abuse the service
- 😓 **Restoration** capability incase you or your team member accidentally deleted an old URL## 🤝 Usage
1. IN home page simply put in link and fill extra fields if need be and you're good to go
2. Then in admin dashboard you can perform various operations which you can see in the screenshots below
3. For the authorization part just simply go to Mongo and manually insert a document with field `q` and value of the secret code in the same collection as the URLs.## ⚙️ Setup
```shell
git clone https://github.com/Eshan05/LeanURL
cd LeanURL
npm i
# Look at .env.example
npm run dev
```## 📱 Screenshots
![HomeQR](public/images/HomeDark_QR.png)
![HomeBeigeCustomize](public/images/HomeBeige_Customize.png)
![SearchHome](public/images/SearchHome.png)
![Analytics](public/images/Analytics.png)
![AnalyticsDark_Search](public/images/AnalyticsDark_Search.png)
![MobileAnalytics_Delete](public/images/MobileAnalytics_Delete.png)
![MobileHome](public/images/MobileHome.png)
![AnalyticsDark_Edit](public/images/AnalyticsDark_Edit.png)
![AnalyticsDark_Graph](public/images/AnalyticsDark_Graph.png)
![AnalyticsDark_Recent](public/images/AnalyticsDark_Recent.png)
![AnalyticsDark_Toast](public/images/AnalyticsDark_Toast.png)
![AnalyticsDark_QR](public/images/AnalyticsDark_QR.png)
![GraphsDark](public/images/GraphsDark.png)## 📄 Additional Notes
- See LICENSE (GPLv3)
- Feel free to raise issues if you notice anything wrong
- [Hero section](https://shadcn-ui-blocks.vercel.app/blocks/hero-sections)
- [Color Picker](https://github.com/Eshan05/Miron/blob/main/components/custom-color-picker.tsx)