A beautiful, modern Linktree-like website built with Next.js and Tailwind CSS. Perfect for showcasing your social media links, portfolio, and contact information.
- π¨ Modern Design: Beautiful gradient background with glass morphism effects
- π± Responsive: Works perfectly on all devices (mobile, tablet, desktop)
- π Easy Configuration: Manage all links through environment variables
- π Vercel Ready: Optimized for easy deployment on Vercel
- π‘οΈ Open Source Safe: No sensitive data in the codebase
- β‘ Fast Loading: Built with Next.js for optimal performance
- π― SEO Optimized: Proper meta tags and Open Graph support
- π Anti-Scraping Contact Info: SVG-based contact details for privacy protection
- π Legal Pages: Built-in imprint and privacy policy pages
- πΌοΈ Auto-Asset Download: Automatically downloads external assets during build
- π Auto-Generated CV: Automatically generates PDF CV from YAML during build
- π Customizable: Fully configurable through environment variables
npm installCopy the example environment file and customize it:
cp env.example .env.localEdit .env.local with your information:
# Profile Configuration
NEXT_PUBLIC_PROFILE_NAME="Your Name"
NEXT_PUBLIC_PROFILE_BIO="Your bio or description"
NEXT_PUBLIC_PROFILE_IMAGE="https://example.com/your-image.jpg"
# Contact Information (SVG URLs for anti-scraping)
NEXT_PUBLIC_CONTACT_NAME_SVG="https://example.com/contact-name.svg"
NEXT_PUBLIC_CONTACT_STREET_SVG="https://example.com/contact-street.svg"
NEXT_PUBLIC_CONTACT_CITY_SVG="https://example.com/contact-city.svg"
NEXT_PUBLIC_CONTACT_COUNTRY_SVG="https://example.com/contact-country.svg"
# Additional Contact Information
NEXT_PUBLIC_CONTACT_EMAIL="your@email.com"
NEXT_PUBLIC_WEBSITE_URL="https://yourwebsite.com"
# Links Configuration (JSON format)
NEXT_PUBLIC_LINKS='[
{
"title": "GitHub",
"url": "https://github.com/yourusername",
"icon": "π»"
},
{
"title": "Twitter",
"url": "https://twitter.com/yourusername",
"icon": "π¦"
},
{
"title": "LinkedIn",
"url": "https://linkedin.com/in/yourusername",
"icon": "πΌ"
}
]'npm run devOpen http://localhost:3000 to see your site!
This project includes a powerful CV auto-generation feature that creates a professional PDF from a YAML file.
π― OPTIONAL FEATURE: The site works perfectly without CV functionality!
- If you don't provide CV data, the site will deploy successfully without the CV download button
- The CV feature is completely optional and won't cause build failures
How it works:
- Optional: Provide your CV data either via
master_cv.yamlfile ORMASTER_CV_YAMLenvironment variable - Optional: Set CV-related environment variables (name, email, etc.)
- Run
npm run devornpm run build- CV is auto-generated aspublic/cv.pdf(if data provided) - If no CV data is provided, the site builds normally and simply doesn't show the CV download button
Benefits:
- π Always up-to-date: Edit YAML, rebuild, done!
- π Version control: Track CV changes in Git (when using file approach)
- π€ ATS-friendly: Optimized for Applicant Tracking Systems
- π¨ Consistent formatting: Professional layout every time
- π Hidden AI messages: Include invisible text for AI scanning systems
- βοΈ Cloud-ready: Deploy to Vercel without committing personal data
Setup (Option 1 - Local File - Recommended for Development):
# OPTIONAL - Only if you want CV functionality
# 1. Copy the example template and edit with your information
cp example_master_cv.yaml master_cv.yaml
# 2. Set environment variables in .env.local:
CV_NAME="Your Name"
CV_EMAIL="your@email.com"
CV_PHONE="+1234567890" # Optional
CV_LOCATION="City, Country" # Optional
CV_LINKEDIN="linkedin.com/in/yourprofile" # Optional
CV_WEBSITE="yourwebsite.com" # Optional
CV_GITHUB="github.com/yourusername" # Optional
# 3. Generate CV manually (or it auto-generates on build/dev)
npm run generate-cvSetup (Option 2 - Environment Variable - Recommended for Vercel/Production):
# OPTIONAL - Only if you want CV functionality
# 1. In Vercel dashboard or .env.local, set MASTER_CV_YAML with your CV content:
# Copy the entire content of your master_cv.yaml and paste as the value
# Example in .env.local:
MASTER_CV_YAML='
summary: |
Your professional summary here...
experience:
- company: "Company Name"
role: "Your Role"
...
'
# 2. Set CV-related environment variables as shown in Option 1
# This approach keeps your CV data private while allowing cloud deploymentSetup (Option 3 - No CV - Simplest for Quick Start):
# Don't create master_cv.yaml
# Don't set MASTER_CV_YAML environment variable
# The site will work perfectly without CV functionality!
# The CV download button simply won't appear on your pagemaster_cv.yaml structure:
summary: Professional summaryexperience: Work history with achievementseducation: Academic backgroundskills: Organized by categoriesprojects: Key projects with technologieslanguages: Language proficienciescv_config: PDF settings and secret messages for AI
See example_master_cv.yaml for a complete template with placeholder data.
- Use a square image (recommended: 400x400px or larger)
- Supports any image format (JPG, PNG, WebP, etc.)
- Can be hosted anywhere (GitHub, Imgur, your own server)
- Auto-download: External images are automatically downloaded during build
- Create SVG files with your contact details
- Host them on GitHub or any web server
- SVGs are automatically downloaded during build
- Contact info is displayed as non-downloadable, inverted images
Each link supports:
title: Display name for the linkurl: The destination URLicon: Optional emoji or icon (supports any emoji)
- Imprint:
/imprint- Legal notice with contact information - Privacy Policy:
/privacy- GDPR-compliant privacy policy - Both pages use SVG-based contact information
The site uses Tailwind CSS for styling. You can customize:
- Colors in
tailwind.config.js - Animations in
app/globals.css - Layout in
app/page.tsx
- Push your code to GitHub
- Connect your repository to Vercel
- Add environment variables in Vercel dashboard
- Deploy!
# Install Vercel CLI
npm i -g vercel
# Deploy
vercel
# Set environment variables
vercel env add NEXT_PUBLIC_PROFILE_NAME
vercel env add NEXT_PUBLIC_PROFILE_BIO
vercel env add NEXT_PUBLIC_PROFILE_IMAGE
vercel env add NEXT_PUBLIC_LINKSIn your Vercel dashboard, add these environment variables:
Profile Configuration:
NEXT_PUBLIC_PROFILE_NAME: Your nameNEXT_PUBLIC_PROFILE_BIO: Your bioNEXT_PUBLIC_PROFILE_IMAGE: URL to your profile image
Contact Information (SVG URLs):
NEXT_PUBLIC_CONTACT_NAME_SVG: URL to name SVGNEXT_PUBLIC_CONTACT_STREET_SVG: URL to street SVGNEXT_PUBLIC_CONTACT_CITY_SVG: URL to city SVGNEXT_PUBLIC_CONTACT_COUNTRY_SVG: URL to country SVG
Additional Contact:
NEXT_PUBLIC_CONTACT_EMAIL: Your email addressNEXT_PUBLIC_WEBSITE_URL: Your website URL
Links:
NEXT_PUBLIC_LINKS: JSON string of your links
LinksCollection/
βββ app/
β βββ components/
β β βββ ContactInfo.tsx # SVG-based contact component
β βββ imprint/
β β βββ page.tsx # Legal notice page
β β βββ layout.tsx # Imprint metadata
β βββ privacy/
β β βββ page.tsx # Privacy policy page
β β βββ layout.tsx # Privacy metadata
β βββ globals.css # Global styles and Tailwind CSS
β βββ layout.tsx # Root layout with metadata
β βββ page.tsx # Main page component
βββ scripts/
β βββ generate-cv.js # Auto-generate CV from YAML
β βββ download-assets.js # Auto-download external assets
βββ public/
β βββ cv.pdf # Auto-generated CV (gitignored)
β βββ assets/ # Auto-downloaded assets (gitignored)
βββ master_cv.yaml # Your CV data (gitignored, create from example)
βββ example_master_cv.yaml # CV template with placeholder data
βββ env.example # Environment variables template
βββ next.config.js # Next.js configuration
βββ tailwind.config.js # Tailwind CSS configuration
βββ vercel.json # Vercel deployment configuration
βββ package.json # Dependencies and scripts
npm run dev- Start development server (auto-generates CV first)npm run build- Build for production (auto-generates CV and downloads assets)npm run start- Start production servernpm run lint- Run ESLintnpm run generate-cv- Manually generate CV from master_cv.yamlnpm run download-assets- Manually download external assets
The codebase is structured for easy extension:
- New Link Types: Add them to the
LinkDatainterface - Custom Styling: Modify
app/globals.cssortailwind.config.js - Analytics: Add tracking in the
handleLinkClickfunction - New Pages: Add them to the
app/directory - Contact Fields: Add new SVG URLs to environment variables
- Asset Downloads: Modify
scripts/download-assets.jsfor new asset types
Development Mode:
- Uses external URLs directly from environment variables
- No asset downloading required
- Faster development iteration
Production Build:
- Automatically downloads all external assets
- Creates self-contained static site
- No external dependencies at runtime
This project is open source and available under the MIT License.
- Built with Next.js
- Styled with Tailwind CSS
- Deployed on Vercel
- Inspired by Linktree
Happy linking! π