https://github.com/abdul-rozzaq/link-shortener
Modern URL Shortener with click tracking, expiration, dark mode, and Next.js + Express.
https://github.com/abdul-rozzaq/link-shortener
click-tracking dark-mode expressjs mongodb nextjs nodejs one-page-app responsive-ui tailwindcss url-shortener
Last synced: about 1 month ago
JSON representation
Modern URL Shortener with click tracking, expiration, dark mode, and Next.js + Express.
- Host: GitHub
- URL: https://github.com/abdul-rozzaq/link-shortener
- Owner: abdul-rozzaq
- License: mit
- Created: 2025-04-13T17:32:47.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2025-04-13T17:42:48.000Z (about 1 month ago)
- Last Synced: 2025-04-13T20:56:07.586Z (about 1 month ago)
- Topics: click-tracking, dark-mode, expressjs, mongodb, nextjs, nodejs, one-page-app, responsive-ui, tailwindcss, url-shortener
- Language: TypeScript
- Homepage:
- Size: 89.8 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 🔗 Link Shortener
A minimal, dark-themed URL shortener with click tracking, expiration handling, and beautiful UI — built using **ExpressJS + MongoDB** for the backend, and **Next.js (App Router)** for the frontend.
---
## ✨ Features
- ✅ Shorten any long URL in one click
- 📊 Track click count for each short link
- 🕒 Handle expired links gracefully
- ❌ Custom 404 and Expired pages
- 🌙 Beautiful **dark mode** design (black & white)
- 📱 Fully responsive UI for mobile and desktop
- ⚡ Redirect via `/go/:code` routes using Next.js dynamic routing---
## ⚙️ Tech Stack
### 🧠 Backend
- Node.js + ExpressJS
- MongoDB (Mongoose ORM)
- RESTful API
- URL expiration logic
- Click count tracking### 🎨 Frontend
- React (Next.js 14, App Router)
- TailwindCSS
- Axios for API calls
- Loader animations & error handling---
## 🚀 How It Works
1. Paste your long URL
2. Click "Shorten"
3. Get a short link like `https://yourdomain.com/go/abc123`
4. Each visit updates the click count
5. If the link is expired or not found, the user is redirected to a custom error page---
## 👨🏻💻 Author
**Backend** by [@saidnurmuhammadulloxon](https://t.me/saidnurmuhammadulloxon)
**Frontend** and open-source UI by the community---
## 📸 Screenshot
![]()
![]()
![]()
![]()