Next.jsReactPortfolio

nxt-lnk — Next.js Portfolio Template

By realvjy

nxt-lnk is a Next.js-based bio link page template that manages personal information and links via BioData.js and LinksData.js, and can be self-hosted on Vercel or Netlify with a custom domain.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

2 previews
Desktop homepage1 / 2
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 2

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-09-30View source

What stands out

A quick read of the recorded project description.

01

Based on Next.js, maintains personal information and links through two data files: BioData.js and LinksData.js

02

Links are rendered grouped by type; social types display as an icon row, while others appear as blocks

03

Each link can be individually enabled or disabled via the on field; avatar supports switching between hexagonal and oval shapes

04

Styles are written with styled-components; frontend blocks are centralized in components/WebLinks.js

05

Includes built-in next-seo configuration and explains how to integrate Google Analytics via Vercel environment variables

06

Supports deployment to Vercel or Netlify and binding a custom domain

Template Details

nxt-lnk is a personal bio link page template written in Next.js, positioned as a self-hosted alternative to link aggregation platforms like Linktree, suitable for creators who love coding. Page content is maintained through two data files, data/BioData.js and data/LinksData.js, allowing updates to name, username, avatar, description, sub-description, and various links without deep component changes. Links are grouped by the type field; social types appear as a single row of icons below the description, while other types render as blocks. Each link can be individually enabled or disabled via the on field.

The template uses styled-components for styling, with frontend blocks centralized in components/WebLinks.js. Adding or adjusting blocks requires modifying both the type in LinksData.js and the corresponding filter and render code in WebLinks.js. The avatar supports hexagonal (nftAvatar: true) and oval display modes. The title defaults to reading title.svg, and the Featured banner is controlled by newProduct and newProductUrl. The template automatically switches to dark mode based on system configuration.

For deployment, the README provides one-click deployment entries for Vercel and Netlify, and you can also initialize a project using create-next-app with this repository as a template. Locally, start via npm run dev or yarn dev. SEO uses next-seo, requiring modification of next-seo.config.js and filling in the full address of preview.jpg. Google Analytics is configured via Vercel environment variables with a GA 4 code. Custom domains and favicon are handled by following the hosting platform's documentation and placing favicon.ico in the public directory, respectively.

Note that using this template to update information requires basic code understanding. Adding new social icons also requires adding corresponding svg files in the public directory and may involve changes to WebLinks.js. The v2 mytiny.page builder mentioned in the README is another service by the author and is not part of this repository's code.

Next.jsPortfolio

Is it right for your project?

Use Cases

  • Creators building a self-hosted bio link aggregation page to replace third-party platforms like Linktree
  • Displaying personal social accounts, works, NFTs, and other links together on one page
  • Initializing a Next.js project using this repository as a template, then modifying data files and components as needed
  • Deploying to Vercel or Netlify and binding your own domain as a personal entry page

Suitable For

  • Creators with basic Next.js and React knowledge who are willing to edit code files directly
  • Individuals who want to self-host their link page and bind an independent domain
  • Developers who need to display links grouped by social, project, and other categories

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    You can initialize a project using create-next-app with this repository as a template, or use the Vercel and Netlify deployment entries in the README

  2. 2

    Run locally with npm run dev or yarn dev; by default, view at http://localhost:3000

  3. 3

    Mainly edit data/BioData.js and data/LinksData.js; place images and icons in the public directory

  4. 4

    Adding new social icons requires adding corresponding svg files in public and may require adjusting the corresponding block in components/WebLinks.js

  5. 5

    For SEO, modify next-seo.config.js and fill in the full address of preview.jpg; place favicon.ico in the public directory

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version under the MIT license from the public repository; the free scope is the code of this version and does not imply that external services or third-party assets are free.

Must comply with when using

  • Free use, modification, commercial use, and distribution of this version's code are permitted.
  • When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
  • The code is provided as-is; warranties and limitations of liability are governed by the original license and applicable law.

Additional costs & items to verify

  • Using this template requires basic code understanding; it is not a no-code tool and requires editing data files and component code yourself.
  • Enabling Google Analytics requires registering a Google Analytics account to obtain a GA4 code and configuring it in Vercel project environment variables; this is an external service dependency.
  • Custom domains depend on the Vercel or Netlify hosting platform and must be operated according to platform documentation, which may involve platform account and domain fees.
  • Adding new social icons requires adding corresponding svg files in the public directory and may involve modifying components/WebLinks.js code; it is not a pure configuration operation.
  • SEO functionality requires manually modifying next-seo.config.js and filling in the full external link address of preview.jpg.
  • Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses; they cannot be judged solely based on the code's MIT license.
  • External services such as domains, hosting, databases, payments, or AI may incur additional charges.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

`nxt-lnk` template used to create your custom bio link and self-host on Vercel or Netlify using your own domain. Need little understanding of code :) ☕

Original README

In Vercel, you can set this by going to your project, then Settings and finally [Environments Variables](https://vercel.com/docs/concepts/projects/environment-variables). To get GA 4 code `G-ZXX0000XXX` follow [these steps]

Original README

Vercel/Netlify give you option to add any domain to the deployed project

Original README

Update all info and make sure to add a `newiconname.svg` file in [public](#images) folder. Then you have to add new section to frontend `components/WebLinks.js`

Original README

Already added `next-seo`. All you have to do is `update next-seo.config.js` file. Make sure to add direct link of `preview.jpg`file

Original README
https://github.com/realvjy/nxt-lnk/blob/main/LICENSE.mdhttps://github.com/realvjy/nxt-lnk/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-09-30. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.

Project checks & description sources

Template Information

Source platforms
GitHub
Documentation and maintenance reference score
More documented · 91 / 100
Technologies
Next.js · React
Website type
Portfolio
How this score is calculated

Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.

What to verify for this project

Repository update recorded
2026-04-15
Screenshot last checked
2026-09-30

A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.

The catalog identifies Next.js as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.

Use a selection guide →

How this description was prepared

AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.

Automatically checked against source and license rules; no manual editorial review.

Inspect the recorded source material

SHA-256: a42ba7e3cd2ef09597e7494bb0657d30ca4e59541c52675fd3b4b1774fe1abe5

2026-09-30T08:15:43.739Z

Source file / repository
### v2 [mytiny.page](https://beta.mytiny.page) builder is here. Explore and go live in minutes

----

# My Tiny Page (Formely Nxt Lnk)

**Custom bio links for creatives who love coding. Made this first to use for my own weblinks vjy.me/lnk**

A perfect custom alternative for linktree, bio and other shortner platform. Check live version here [nxtlnk.xyz](https://nxtlnk.xyz)

Pull requests are always welcome. In case you want inspiration or new features on what to add, check out the issues for feature requests.

Coffee fuels coding ☕️



**Table of Contents**





- [Usage](#usage)
- [Quick Start](#quick-start)
- [Manual Setup](#manual-setup)
- [Getting Started](#getting-started)
- [Images](#images)
- [Update Bio](#update-bio)
  - [Add/Update](#update-bio)
  - [Enable/Disable](#update-bio)
  - [Featured Banner](#update-bio)
- [Update Links](#update-links)
  - [Enable/Disable](#update-links)
  - [Add/Update](#update-links)
- [Frontend](#frontend)
- [SEO](#seo)
- [Google Analytics](#google-analytics)
- [Custom Domain](#custom-domain)
- [Favicon](#favicon)
- [Contributors](#contributors)

## Usage

`nxt-lnk` template used to create your custom bio link and self-host on Vercel or Netlify using your own domain. Need little understanding of code :) ☕

Usually, you don't need to worry a lot about coding if you're just updating information in `BioData.js` and `LinkData.js`. To deep dive know more  [Next.js](https://nextjs.org/docs) and [React](https://reactjs.org/docs/getting-started.html) official documentaion.

For customization used [styled components](https://styled-components.com/). If you want to customize styling you can [learn more here](https://styled-components.com/docs).

**Template auto support dark-mode depending on system cofig.**

## Quick Start

[Deploy with Vercel](https://vercel.com/import/git?s=https://github.com/realvjy/nxt-lnk) [Deploy to Netlify](https://app.netlify.com/start/deploy?repository=https://github.com/realvjy/nxt-lnk)

## Manual Setup

Run the following command to create a new project with this template:

```bash
yarn create next-app your-app-name -e https://github.com/realvjy/nxt-lnk
# or
npx create-next-app your-app-name -e https://github.com/realvjy/nxt-lnk
```

## Getting Started

Use any editor to work on editing. I use [vscode](https://code.visualstudio.com/)

First, run the development server:

```bash
npm run dev
# or
yarn dev
```

Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.

**Important files to edit or update info**
`data/BioData.js` All basic info update here
`data/LinksData.js` Contain all the links
`Components/WebLinks.js` UI and stylesheet
`Components/icons/index.js` Contain all SVG icon compo

You can start editing the page by modifying `data/BioData.js` and `data/LinksData.js`. The page auto-updates as you edit the file.

## Images

All images stored inside `public` folder of the project.

## Update Bio

**Example from** `BioData.js` :

```jsx
const bioData = [
    {
        name: 'vijay verma',
        username: '@realvjy',
        url: 'https://vjy.me',
        titleImg: true,
        avatar: '/avatar.png',
        nftAvatar: true,
        description: 'A short description/bio about you goes here',
        subdesc: 'This is secondary description. If you do not need, you can remove it',
        newProductUrl: 'https://vjy.me/lnk',
        newProduct: true,
    },
];

export default bioData;
```

**Avatar**
Just replace `avatar.png`. 200x200px will be good.

**Hex/NFT avatar view**
`nftAvatar: true` enable hex shape on avatar image.
`nftAvatar: false` made it in oval shape.

**Title**
By default `titleImg: true` and it look for `title.svg`. Replace svg with logo **logo**. Make sure to use `title.svg`  name.

**Featured banner**
`newProductUrl` and `newProduct` used for getting featured banner. You can replace the image `newproduct.png`  with any design you like.

`newProduct: true` show banner. Default is `true` make it false to hide.

## Update Links

**Example from** `LinksData.js` :

```jsx
const webLinks = [
    // All social profile
    {
        title: 'Twitter',
        url: 'https://twitter.com/realvjy',
        type: 'social',
        icon: '/twitter.svg',
        on: true
    },
    ...
    ...
    
    {
        title: 'Instagram',
        url: 'https://instagram.com/realvjy',
        type: 'social',
        icon: '/insta.svg',
        on: true
    }
];
export default webLinks;
```

**Enable/Disable Social Media**
Find `type: social` and change `on:true|false`


| Title         | on (default) |
| ------------- | ------------ |
| `Twitter`     | `true`       |
| `Instagram`   | `true`       |
| `Dribbble`    | `false`      |
| `Medium`      | `false`      |
| `Github`      | `true`       |
| `Youtube`     | `false`      |
| `Behance`     | `true`       |
| `Figma`       | `true`       |
| `Linkedin`    | `false`      |
| `Mastodon`    | `false`      |
| `Hive Social` | `false`      |
| `Post.news`   | `false`      |


Setting `on: true` show the social icon. 
The social media icons are arranged in a single row at the top of the page below description. If you want to use as list, chagne type to `type: 'other'`

**Add new Social Media link**
create a new block by copying this

```jsx
    {
        title: 'Social Name',
        url: 'https://link.com/whateverurl',
        type: 'social',
        icon: '/newiconname.svg',
        on: true
    }
```

Update all info and make sure to add a `newiconname.svg` file in [public](#images) folder.
Then you have to add new section to frontend `components/WebLinks.js`

## Frontend

All frontend customization done inside `components/WebLinks.js`. If you wante to update and add new section just look this file and update according to your need.

**Update section**

Look for Section codes. Like if you want to change `install` type to `featured` Update  the `type: 'featured'` in `LinkData.js` then update all `install` related code in `WebLinks.js` to `featured`

```js
// Collect all links filter by type - social, project, nft and other etc=
// get data for install section
const install = allLinks.filter((el) => {
  return el.type === "install" && el.on
});

...
...

{/* Featured Section */ }
<LinkSection>
  <h3>{install[0].type}</h3>
  {
    install.map((i) => {
      return (
        <Link href={i.url} passHref key={i.title}>
          <LinkBox>
            <LinkTitle><img src={i.icon} style={{ filter: 'var(--img)' }} /> {i.title}</LinkTitle> <NewUp />
          </LinkBox>
        </Link>
      )
    })
  }
</LinkSection>
{/* End Featured Section */ }
```

**Add New section**

Add new section with specific `type` in `Linkdata.js`. Then copy `LinkSection` Code to create new section in `WebLinks.js` file. Make sure to create get data of that section as well.

## SEO

Already added `next-seo`. All you have to do is `update next-seo.config.js` file. Make sure to add direct link of `preview.jpg`file, like - `https://vjy.me/preview.jpg`.

## Google Analytics

In Vercel, you can set this by going to your project, then Settings and finally [Environments Variables](https://vercel.com/docs/concepts/projects/environment-variables). To get GA 4 code `G-ZXX0000XXX` follow [these steps](https://support.google.com/analytics/answer/9304153?hl=en) 



## Custom Domain

By default vercel give you a subdomain with your project name like - [nxtlnk.vercel.app](https:nxtlnk.vercel.app). But you can add own domain. 

Vercel/Netlify give you option to add any domain to the deployed project like [vjy.me/lnk](https://vjy.me/lnk) or [nxtlnk.xyz](https://nxtlnk.xyz). All you have to do is follow official [Vercel documentaion](https://vercel.com/docs/concepts/projects/domains/add-a-domain) or [Netlify Documentaion](https://www.netlify.com/blog/2021/12/20/how-to-add-custom-domains-to-netlify-sites/)

## Favicon

Create a `favicon.ico` file and place inside `public` folder. I use [favicon.io](https://favicon.io/favicon-converter/)

## Contributors

Created by [realvjy](https://twitter.com/realvjy). You are always welcome to share your feedback on twitter or any social media platform.

If you want to contribute. Just create a pull request. 
    
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.

react-resume-template

react-resume-template

A personal resume website template for software developers, built with Next.js, React, and TypeScript and styled with Tailwind CSS. Site content is driven by a single data file at /src/data/data.tsx, with types in dataDef.ts and images in src/images/.

Next.js · Portfolio

sylph

sylph

Sylph is a minimal portfolio and blog template built on Next.js, supporting MDX/Markdown writing, light/dark themes, and automatic OG image generation. It includes sitemap, robots.txt, metadata, and syntax highlighting, with automatic blog timestamps.

Next.js · Portfolio

sleek-portfolio

sleek-portfolio

A modern, responsive portfolio template built with Next.js 15, TypeScript, Tailwind CSS, and Shadcn UI. It includes an MDX blog, project showcase, work experience timeline, and a contact form that receives messages via Telegram Bot.

Next.js · Portfolio

research-website-template

research-website-template

A React + Next.js template for research personal websites, aimed at PhD students and researchers. It centralizes publications, projects, and other content in src/data as arrays of objects, with optional fields automatically generating UI components.

Next.js · Portfolio

shadcn-portfolio

shadcn-portfolio

A developer portfolio template built with Next.js 15, shadcn/ui, Tailwind CSS, and Framer Motion, featuring an MDX blog, light and dark modes, responsive design, and SEO meta tags.

Next.js · Portfolio

minimal-next-portfolio

minimal-next-portfolio

An open-source Next.js portfolio template for developers and designers, using an object-driven config directory to manage personal information, skills, projects, experience, and contributions without changing page components.

Next.js · Portfolio