Next.jsReactPortfolioBlog

comet-land — Next.js Portfolio Template

By hyesungoh

comet-land is a blog and resume dual-site template built on Next.js and Turborepo, comprising separate blog and resume applications, with support for code highlighting, table of contents, dark mode, KBar search, and Utterances comments, among other configuration options.

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-10-02View source

What stands out

A quick read of the recorded project description.

01

Turborepo monorepo structure, with blog and resume as two independently runnable applications

02

The blog supports code highlighting (line highlighting, line numbers), article table of contents, dark mode, and KBar search

03

The resume application is designed with NextUI, supports dark mode, and displays contact information via KBar

04

Configuration is centralized in packages/core/constants, allowing settings for analytics IDs, colors, avatar, favicon, and social links

05

Provides the create-comet-land scaffolding, and also supports forking or cloning the repository to run locally

06

Comments use Utterances, and analytics integrates Google Analytics and Hotjar

Template Details

comet-land is a template that splits "blog" and "resume" into two independent applications, managed as a monorepo with Turborepo. In the repository, apps/blog and apps/resume correspond to the two sites; during local development, the blog runs on port 3000 and the resume on port 3001.

The blog side provides code highlighting (including line highlighting and line numbers), article table of contents, dark mode, KBar-based search, Utterances comments, and integrations with Google Analytics and Hotjar; the resume side is likewise designed with NextUI, supports dark mode, displays contact information via KBar, and integrates Google Analytics and Hotjar.

Configuration is centralized in the packages/core/constants directory, where you can adjust the GA ID and Hotjar ID for analytics services, color scheme, author avatar, default Open Graph image, favicon, and social links for GitHub, Instagram, Facebook, LinkedIn, Twitter, etc.; per-application configuration resides in apps/blog/_config/index.json and apps/resume/_config/index.json.

The project offers the create-comet-land scaffolding, which can be generated via npx create-comet-land or yarn create comet-land, or you can directly fork or clone the repository, install dependencies, and run it. Deployment paths for Vercel and GitHub Pages are given in the documentation. Usage cases listed in the README include personal sites such as hyesungoh.xyz, seulheehan.com, and thebong.net.

Limitations to note: the template itself provides only the two frontend applications for blog and resume; comments rely on Utterances (requiring a GitHub repository), and analytics rely on external services such as Google Analytics and Hotjar; the README does not state the free tiers or data compliance status of these external services. Third-party assets such as demo images, fonts, and icons must be checked separately under their respective licenses and cannot be judged solely by the code's MIT license.

Next.jsPortfolioBlog

Is it right for your project?

Use Cases

  • Building a personal tech blog that needs code highlighting, table of contents, and search
  • Creating an online resume page that shares the same configuration and design language as the blog
  • Maintaining both blog and resume sites in the same repository and deploying them separately
  • Quickly generating the project structure via create-comet-land and then modifying it as needed

Suitable For

  • Developers who want to build a personal blog and resume with Next.js
  • Developers who accept a monorepo structure and are willing to configure the two applications separately
  • Personal sites that need ready-made features such as dark mode, KBar search, and Utterances comments
  • Developers evaluating the template's real-world results by referencing existing usage cases

Getting started & customization

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

  1. 1

    Generate the project with npx create-comet-land or yarn create comet-land, or directly fork or clone this repository

  2. 2

    After cloning, first run yarn to install dependencies, then run yarn turbo run dev or yarn dev

  3. 3

    By default, the blog is at localhost:3000 and the resume at localhost:3001

  4. 4

    General configuration is in packages/core/constants; per-application configuration is in apps/blog/_config/index.json and apps/resume/_config/index.json

  5. 5

    For deployment, refer to the Vercel or GitHub Pages instructions in the documentation; Utterances comments require a corresponding GitHub repository

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 in the public repository; the free scope is the code of this version and does not mean 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

  • Demo images, fonts, icons, and other third-party assets must be checked under their respective licenses and cannot be judged solely by the code's MIT license.
  • External services such as domains, hosting, databases, payments, or AI may incur additional charges.
  • The comment feature relies on the external Utterances service and requires an associated GitHub repository to use, constituting an external service dependency.
  • Both the blog and resume integrate external analytics services Google Analytics and Hotjar; before use, you must register accounts and obtain the corresponding IDs.
  • Configuring analytics requires filling in the GA ID and Hotjar ID, meaning you must have accounts for the respective external services.
  • The create-comet-land scaffolding is located in a separate repository; using the generation method depends on that external repository.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

🔊 [Utterances](https://utteranc.es/) Comment

Original README

- 🔭 Google Analytics - 🔥 Hotjar

Original README

- GA ID - Hotjar ID

Original README

`comet-land` has own generate package [`create-comet-land`](https://github.com/hyesungoh/create-comet-land)

Original README
https://github.com/hyesungoh/comet-land/blob/main/LICENSEhttps://github.com/hyesungoh/comet-land/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-04. 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 · 81 / 100
Technologies
Next.js · React
Website type
Portfolio · Blog
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
2024-08-31
Screenshot last checked
2026-10-04

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.

Review declaration: [email protected] · 2026-10-04

Inspect the recorded source material

SHA-256: 5ce5e8b74cba3ecf9f1c95c5994c8f97ae2f448d4e75afa5e54a3cad3453ecdb

2026-10-04T10:20:35.118Z

Source file / repository
# Comet-land

[![CodeQL](https://github.com/hyesungoh/comet-land/actions/workflows/codeql.yml/badge.svg)](https://github.com/hyesungoh/comet-land/actions/workflows/codeql.yml) [![Continious Intergration](https://github.com/hyesungoh/comet-land/actions/workflows/CI.yml/badge.svg)](https://github.com/hyesungoh/comet-land/actions/workflows/CI.yml) [![codecov](https://codecov.io/gh/hyesungoh/comet-land/branch/main/graph/badge.svg?token=TA7LT3RQ1P)](https://codecov.io/gh/hyesungoh/comet-land) [![blog](https://img.shields.io/endpoint?url=https://dashboard.cypress.io/badge/simple/yiddyz&style=flat&logo=cypress)](https://dashboard.cypress.io/projects/yiddyz/runs) [![resume](https://img.shields.io/endpoint?url=https://dashboard.cypress.io/badge/simple/inc4yo&style=flat&logo=cypress)](https://dashboard.cypress.io/projects/inc4yo/runs)

Blog and Resume template with turborepo

한국어 문서는 [다음 링크](https://github.com/hyesungoh/hyesungoh-land/tree/main/_docs/ko-readme.md)에서 확인하실 수 있습니다.

![comet-land-blog](https://user-images.githubusercontent.com/26461307/159371599-95b2acd5-e5eb-482c-9ead-d8f601f034b5.png)

<h2 align="center">

[`BLOG DEMO ☄️`](https://comet-land-blog.vercel.app/)

</h2>

![comet-land-resume](https://user-images.githubusercontent.com/26461307/160653172-c56a3b64-dfa9-4708-bf95-fca2fff47964.png)

<h2 align="center">

[`RESUME DEMO 💫`](https://comet-land-resume.vercel.app/)

</h2>

![postGif](https://user-images.githubusercontent.com/26461307/159372336-e42c1a9c-9915-4d05-9e51-4882d681dc80.gif)

- 👔 Code highlight with line-highlight, line-numbers
- 🎨 Design with [NextUI](https://nextui.org/)
- 🍽 Table of contents
- 🎩 Dark mode

![kbarGif](https://user-images.githubusercontent.com/26461307/159372344-d628b817-d7f5-4322-813e-3468a62e79d6.gif)

- ⌨️ Search with [KBar](https://kbar.vercel.app/)
- 🔨 Configurable
- 🔊 [Utterances](https://utteranc.es/) Comment
- 🔭 Google Analytics
- 🔥 Hotjar
- 🏄 Lighthouse score

![blog lighthouse score](https://user-images.githubusercontent.com/26461307/161536154-b85caf9f-0f73-4224-a1e7-540723916ff7.gif)

## Resume Feature

- 🎨 Design with [NextUI](https://nextui.org/)
- 🎩 Dark mode
- ⌨️ Contact with [KBar](https://kbar.vercel.app/)
- 🔨 Configurable
- 🔭 Google Analytics
- 🔥 Hotjar
- 🏄 Lighthouse score

![resume lighthouse score](https://user-images.githubusercontent.com/26461307/161536162-63278484-ca52-42ed-89d4-951cd31e42c1.gif)

## How to start

`comet-land` has own generate package [`create-comet-land`](https://github.com/hyesungoh/create-comet-land)

```bash
npx create-comet-land
# or
yarn create comet-land
```

> Or using Fork or clone this repo

1. Install dependencies

```bash
yarn
```

2. Start Turbo !

```bash
yarn turbo run dev
# or just
yarn dev
```

4. Now you can see blog at `localhost:3000`, resume at `localhost:3001`

## How to configuration

Please see `packages/core/constants` directory.

and you can reconfigure at that directory's variable

- Analytics directory
  - GA ID
  - Hotjar ID
- Colors directory
  - color schema
- General directory
  - author image
  - default open-graph image
  - favicon
- SocialMedia directory
  - github
  - instagram
  - facebook
  - linkedin
  - twitter

and please check `apps/blog/_config/index.json` and `apps/resume/_config/index.json`.

This files are placing each app's configuration variable.

## How to use it

please read following link.

- [how to add blog post](https://github.com/hyesungoh/hyesungoh-land/tree/main/_docs/en-blog.md)
- [how to custom resume](https://github.com/hyesungoh/hyesungoh-land/tree/main/_docs/en-resume.md)

## How to deploy

#### [deploy with vercel (recommend)](https://github.com/hyesungoh/hyesungoh-land/tree/main/_docs/en-deploy-vercel.md)

#### [deploy with github pages](https://github.com/hyesungoh/hyesungoh-land/tree/main/_docs/en-deploy-github-pages.md)

## How to add more packages

- scope packages

```bash
cd where-you-want
yarn add package-name
```

- global packages

```bash
yarn add package-name -W
```

- global dev packages

```bash
yarn add package-name -DW
```

## Trouble shootings

check [this wiki](https://github.com/hyesungoh/comet-land/wiki/Trouble-Shooting) please! it might be help

## Use Case

- [hyesungoh.xyz](https://www.hyesungoh.xyz/)
- [seulheehan.com](https://www.seulheehan.com/)
- [thebong.net](https://thebong.net/)
- [coderoad.kr](https://blog.coderoad.kr)
- [govindkumar.in](https://www.govindkumar.in/)
- [blog.milansachani.dev](https://blog.milansachani.dev/)
- [resume.jadecode.xyz](https://resume.jadecode.xyz/)
- [jaegwan.kim](https://jaegwan.kim/)
- [min71.dev](https://resume.min71.dev)

## Inspired

I inspired below blogs and resume.

- [Overreacted](https://overreacted.io/)
- [Yceffort](https://yceffort.kr/)
- [gatsby-starter-bee](https://gatsby-starter-bee.netlify.app/)
- [vallista-land](https://vallista.kr/)
- [hyunseob.github.io/resume](https://hyunseob.github.io/resume/)

## License

MIT
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.

tailwind-nextjs-starter-blog

tailwind-nextjs-starter-blog

A Next.js and Tailwind CSS blog starter template using Contentlayer for Markdown/MDX, with built-in SEO, code highlighting, and tags. It targets personal technical blogs and migration from Jekyll/Hugo to React, and supports one-click Vercel deployment.

Next.js · Blog

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

Nextjs-tailwindcss-blog-template

Nextjs-tailwindcss-blog-template

A personal blog template built with Next.js and Tailwind CSS, using Velite to process Markdown content. It includes home, about, contact and article pages, with a demo site and a companion YouTube tutorial.

Next.js · Blog

Next-js-Blog-Boilerplate

Next-js-Blog-Boilerplate

A blog starter built on Next.js 12 and Tailwind CSS 3, integrating TypeScript, ESLint, Prettier, and PostCSS.

Next.js · Blog

nextjs-blog-theme

nextjs-blog-theme

A Next.js 15 and Tailwind CSS 4.x blog starter by Netlify, designed by Bejamas, with MDX support, dark/light theme switching, and environment-variable configuration. It includes a visual setup wizard for deploying to Netlify and manages content via local .mdx files.

Next.js · Blog

blog

blog

A personal blog forked from Timlrx's tailwind-nextjs-starter-blog, built with Next.js, React, and Tailwind CSS. Content is stored as Markdown/MDX under data/, with site, author, navigation, and project data in separate files.

Next.js · Blog