One username. Clean, predictable links for every platform.
This project is part of Nexus Spring of Code 2026 (NSoC'26)
🚀 Live Demo · 📖 Docs · 🐛 Report Bug · ✨ Request Feature
LinkID is built for developers and professionals.
Stop pasting long URLs everywhere. Share clean, readable links like:
linkid.qzz.io/username/github·linkid.qzz.io/username/linkedin
- Platform Routing — Predictable links like
/github,/linkedin,/leetcode,/portfolio - Single Professional Identity — One username, all your platforms
- Auto Platform Detection — Paste any URL and the platform is detected automatically
- Public Profile Page — Shareable profile at
linkid.qzz.io/username - Real-time Dashboard — Add, edit, and delete links instantly without a page reload
- OAuth Login — Google & GitHub sign-in via NextAuth.js
- Email + Password Auth — Traditional credential-based login with bcrypt hashing
- Route Protection — Middleware-based auth guards on dashboard and API routes
- 🌙 Dark Mode — Full system, light, and dark theme support via
next-themes - 📱 Fully Responsive — Mobile-first design with Tailwind CSS
- 🔔 Toast Notifications — Instant feedback on all user actions
- 🎨 Platform Icons — Automatic icon matching for 10+ platforms
- 🏗️ Type-safe — End-to-end TypeScript with strict mode
- 🗄️ Prisma ORM — Type-safe database access with PostgreSQL
- 🚦 URL Validation — Strict per-platform URL validation before saving
- 🔄 Optimistic UI — Local state updates before server confirmation
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router) |
| Language | TypeScript |
| Styling | Tailwind CSS + shadcn/ui |
| Database | PostgreSQL |
| ORM | Prisma 7 |
| Auth | NextAuth.js v4 |
| Icons | Lucide React + React Icons |
| Notifications | React Hot Toast |
| Deployment | Vercel |
Try it live: https://linkid.qzz.io
Example profile: linkid.qzz.io/vishnu
Platform redirect: linkid.qzz.io/vishnu/github
- Node.js
>=20.9.0 - PostgreSQL
>=14 - npm / yarn / pnpm
git clone https://github.com/vishnukothakapu/linkid.git
cd linkid
npm installcp .env.example .envEdit .env with your values:
# Database
DATABASE_URL="postgresql://user:password@localhost:5432/linkid"
# NextAuth
NEXTAUTH_SECRET="your-secret-here" # openssl rand -base64 32
NEXTAUTH_URL="http://localhost:3000"
# OAuth Providers (optional but recommended)
GOOGLE_CLIENT_ID="your-google-client-id"
GOOGLE_CLIENT_SECRET="your-google-client-secret"
GITHUB_CLIENT_ID="your-github-client-id"
GITHUB_CLIENT_SECRET="your-github-client-secret"Tip: Generate
NEXTAUTH_SECRETwithopenssl rand -base64 32
# Run migrations
npx prisma migrate dev
# (Optional) Open Prisma Studio to inspect data
npx prisma studiodocker-compose up -d # starts PostgreSQL
npx prisma migrate dev
npm run devnpm run devOpen http://localhost:3000 🎉
linkid/
├── app/
│ ├── [username]/ # Public profile pages
│ │ ├── [platform]/ # Platform redirect handler
│ │ │ └── page.tsx
│ │ ├── page.tsx # Public profile page
│ │ └── ProfileCard.tsx # Profile UI components
│ ├── api/
│ │ ├── auth/ # NextAuth routes
│ │ ├── links/ # Link CRUD endpoints
│ │ │ └── [id]/ # Individual link operations
│ │ ├── profile/ # Profile update endpoints
│ │ └── username/ # Username check & creation
│ ├── components/ # Shared UI components
│ │ ├── DashboardNavbar.tsx
│ │ ├── Navbar.tsx
│ │ └── ThemeToggle.tsx
│ ├── dashboard/ # Protected dashboard pages
│ ├── login/ # Authentication pages
│ ├── profile/ # User profile settings
│ ├── register/
│ ├── globals.css
│ ├── layout.tsx
│ └── providers.tsx
├── components/
│ └── ui/ # shadcn/ui components
├── lib/
│ ├── auth.ts # NextAuth configuration
│ ├── platformIcons.ts # Platform icon registry
│ ├── platforms.ts # Platform detection & validation
│ ├── prisma.ts # Prisma client singleton
│ └── url.ts # URL utilities
├── prisma/
│ ├── migrations/
│ └── schema.prisma
├── public/
├── middleware.ts # Auth middleware
├── next.config.ts
├── tailwind.config.ts
├── tsconfig.json
└── package.json
- Sign up at linkid.qzz.io/register
- Pick your unique username (e.g.,
vishnu) - Paste your profile URLs — platform is detected automatically
- Share
linkid.qzz.io/vishnueverywhere
| Platform | Route | Example |
|---|---|---|
| GitHub | /github |
linkid.qzz.io/vishnu/github |
/linkedin |
linkid.qzz.io/vishnu/linkedin |
|
| LeetCode | /leetcode |
linkid.qzz.io/vishnu/leetcode |
| YouTube | /youtube |
linkid.qzz.io/vishnu/youtube |
| X (Twitter) | /x |
linkid.qzz.io/vishnu/x |
/instagram |
linkid.qzz.io/vishnu/instagram |
|
/facebook |
linkid.qzz.io/vishnu/facebook |
|
| Discord | /discord |
linkid.qzz.io/vishnu/discord |
| Twitch | /twitch |
linkid.qzz.io/vishnu/twitch |
| Custom Website | /your-label |
linkid.qzz.io/vishnu/blog |
We love contributions! LinkID is an open-source project and welcomes PRs of all sizes.
👉 Read the Contributing Guide →
# Fork and clone
git clone https://github.com/YOUR_USERNAME/linkid.git
cd linkid
# Create a branch
git checkout -b feat/your-feature-name
# Make changes, then push
git push origin feat/your-feature-name
# Open a Pull Request on GitHubSee GitHub Issues for tasks open to contributors.
Distributed under the MIT License. See LICENSE for more information.
- Next.js — The React framework for production
- shadcn/ui — Beautifully designed component library
- Prisma — Next-generation ORM for Node.js
- NextAuth.js — Authentication for Next.js
- Vercel — Platform for deploying Next.js apps
Made with ❤️ by Vishnu Kothakapu and contributors
⭐ Star this repo if you find it useful!