❤️ A modern, open-source portfolio template for developers that can automatically import GitHub profile and repository information, built with the Nuxt ecosystem ❤️
English
·
简体中文
·
日本語
Directory
The images above show the home page at medium size. Click here to view more screenshots.
Nano Portfolio is a developer portfolio web application integrated with GitHub Octokit and the Nuxt 3 ecosystem. It includes modules such as Nuxt-UI, Nuxt-Mongoose, Pinia, and i18n. All modules are officially compatible with Nuxt 3, and all code in this project uses the Composition API and ESM.
- Nuxt3 with composition API
- Pinia
- Vite
- TailwindCSS
- Nuxt-UI
- MongoDB with Mongoose
- Localization with i18n
- Email integration with Resend
- TypeScript with ES6+ syntax
- Dockerfile
- NodeJS LTS 24 or above
Clone this repository and move to the project folder.
$ git clone https://github.com/gaomingzhao666/nano-portfolio.git # clone
$ cd nano-portfolioInstall dependencies and run the project with your preferred package manager.
# pnpm - recommend
$ pnpm install # install dependencies
$ pnpm dev # run# npm - Node default package manager
$ npm install # install dependencies
$ npm run dev # run# yarn
$ yarn # install dependencies
$ yarn run dev # run- Clone or download this project.
- Ensure you have
Docker Desktopinstalled on your computer. - Install the
Docker extensionin yourVScode. - Right-click the
Dockerfilein this project and select theBuild Imageoption. - Open
Docker Desktopand run the container.
You can use this project to create your own portfolio. It automatically imports information from your GitHub repositories and your profile using your GitHub account.
- Generate a GitHub Personal Access Token
- Navigate to the
githubInfo.tsfile located in theutilsfolder within theserverdirectory - Replace the placeholder token with your own
Personal Access Tokento enable server-side APIs to return your GitHub information - Update the data on the
AboutandContactpages with appropriate information - Have fun and enjoy customizing your portfolio
For security, use an environment variable instead of placing a plain token in a
.tsfile that might be pushed to a public repository.
The @nuxtjs/seo module is used to improve SEO performance in this project. You can configure it in the nuxt.config.ts file with some information about your site.
Here is an example of SEO configuration code in nuxt.config.ts:
// see https://nuxtseo.com/
site: {
title: 'Nano Portfolio',
url: 'https://nano-portfolio-ruby.vercel.app',
},
schemaOrg: {
identity: 'Person',
},
seo: {
meta: {
description:
'A modern and open-source developers portfolio template that can automatically import Github profile and repository information, made by Vue/Nuxt ecosystem and Octokit APIs',
themeColor: [
{ content: '#111827', media: '(prefers-color-scheme: dark)' },
{ content: 'white', media: '(prefers-color-scheme: light)' },
],
colorScheme: 'dark light',
},
},
robots: {
// Tell Google not to index /test and /error pages
disallow: ['/test', '/error'],
},
ogImage: {
enabled: false,
},See this documentation if you want to see a complete guide.
Everything is ready out of the box. You can configure SEO metadata for each page in the /src/i18n/seo/ folder and modify it based on your needs.
This project is developed by gaomingzhao666@Nano.

