A modern and elegant URL shortener built with Next.js 16, offering an intuitive user interface and advanced features to manage your shortened links.
- π URL Shortening: Transform your long links into short and memorable ones
- π¨ Custom Links: Create short links with a custom alias (reserved for premium users)
- π Secure Authentication: Sign up and login system with JWT
- π User Dashboard: Manage all your links from a dedicated interface
- π Dark/Light Mode: Adaptive interface with customizable themes
- β‘ Optimal Performance: Integration with Vercel Analytics and Speed Insights
- π― Premium: Advanced features for premium users
- Framework: Next.js 16 with App Router
- Language: TypeScript
- Database: MySQL with mysql2
- Authentication: JWT (jsonwebtoken) with bcryptjs
- UI/UX:
- Tailwind CSS 4
- Radix UI (accessible components)
- Lucide React (icons)
- next-themes (theme management)
- ID Generation: nanoid
- Analytics: Vercel Analytics & Speed Insights
Before you begin, make sure you have installed:
git clone https://github.com/libnaus/nova.git
cd novabun installCreate a MySQL database:
mysql -u root -pCREATE DATABASE nova;
USE nova;Import the database schema:
mysql -u root -p nova < nova_schema.sqlCreate a .env.local file at the root of the project:
# MySQL Database
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=your_password
DB_NAME=nova
# JWT Secret (generate a secure random key)
JWT_SECRET=your_very_secure_jwt_secretImportant: Generate a secure JWT_SECRET:
# With Node.js
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"In development mode:
bun devThe application will be accessible at http://localhost:3000
In production mode:
bun build
bun start| Variable | Description | Required | Default |
|---|---|---|---|
DB_HOST |
MySQL database host | Yes | localhost |
DB_PORT |
MySQL port | No | 3306 |
DB_USER |
MySQL user | Yes | root |
DB_PASSWORD |
MySQL password | Yes | - |
DB_NAME |
Database name | No | nova |
JWT_SECRET |
Secret to sign JWT tokens | Yes | - |
- Paste your long URL in the input field
- Click "Shorten"
- Copy and share your short link!
- Log in with a premium account
- Enter your URL
- Customize the alias in the "Custom link" field
- Shorten and share!
- Log in to your account
- Click on the dashboard icon
- View, copy, or delete your links
Contributions are welcome! Feel free to:
- Fork the project
- Create a branch (
git checkout -b feature/improvement) - Commit your changes (
git commit -m 'Add a feature') - Push to the branch (
git push origin feature/improvement) - Open a Pull Request
All contents located in the /public/ directory, including files, assets, and media, are Β© 2025 Timeo Bavart. All rights reserved. No part of these materials may be copied, distributed, or used without explicit permission from the copyright holder.
This project is licensed under the GNU General Public License v3.0. See the LICENSE file for more details.