Skip to content
Β 
Β 

Latest commit

Β 

History

39 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ”— LinkID

Your professional identity, simplified.

One username. Clean, predictable links for every platform.

Next.js TypeScript Prisma PostgreSQL Tailwind CSS License: MIT PRs Welcome Stars


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

✨ Features

Core

  • 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

Auth & Security

  • 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

UX & Design

  • πŸŒ™ 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

Developer Experience

  • πŸ—οΈ 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

πŸ› οΈ Tech Stack

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

πŸš€ Live Demo

Try it live: https://linkid.qzz.io

Example profile: linkid.qzz.io/vishnu
Platform redirect: linkid.qzz.io/vishnu/github


πŸ“¦ Installation

Prerequisites

  • Node.js >=20.9.0
  • PostgreSQL >=14
  • npm / yarn / pnpm

1. Clone the Repository

git clone https://github.com/vishnukothakapu/linkid.git
cd linkid
npm install

2. Configure Environment Variables

cp .env.example .env

Edit .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_SECRET with openssl rand -base64 32

3. Set Up the Database

# Run migrations
npx prisma migrate dev

# (Optional) Open Prisma Studio to inspect data
npx prisma studio

🐳 Docker Setup (optional)

docker-compose up -d   # starts PostgreSQL
npx prisma migrate dev
npm run dev

4. Start the Development Server

npm run dev

Open http://localhost:3000 πŸŽ‰


πŸ“ Folder Structure

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

🧭 Usage Guide

Creating Your LinkID

  1. Sign up at linkid.qzz.io/register
  2. Pick your unique username (e.g., vishnu)
  3. Paste your profile URLs β€” platform is detected automatically
  4. Share linkid.qzz.io/vishnu everywhere

Supported Platforms

Platform Route Example
GitHub /github linkid.qzz.io/vishnu/github
LinkedIn /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 /instagram linkid.qzz.io/vishnu/instagram
Facebook /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

🀝 Contributing

We love contributions! LinkID is an open-source project and welcomes PRs of all sizes.

πŸ‘‰ Read the Contributing Guide β†’

Quick Start for Contributors

# 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 GitHub

πŸ—ΊοΈ Roadmap / Open Issues

See GitHub Issues for tasks open to contributors.

πŸ“„ License

Distributed under the MIT License. See LICENSE for more information.


πŸ™ Acknowledgements

  • 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!

About

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages