Turborepo monorepo structure, with blog and resume as two independently runnable applications
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.
Actual screenshot captured by the server browser.
All pages & views 2
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
The blog supports code highlighting (line highlighting, line numbers), article table of contents, dark mode, and KBar search
The resume application is designed with NextUI, supports dark mode, and displays contact information via KBar
Configuration is centralized in packages/core/constants, allowing settings for analytics IDs, colors, avatar, favicon, and social links
Provides the create-comet-land scaffolding, and also supports forking or cloning the repository to run locally
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.
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
Generate the project with npx create-comet-land or yarn create comet-land, or directly fork or clone this repository
- 2
After cloning, first run yarn to install dependencies, then run yarn turbo run dev or yarn dev
- 3
By default, the blog is at localhost:3000 and the resume at localhost:3001
- 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
For deployment, refer to the Vercel or GitHub Pages instructions in the documentation; Utterances comments require a corresponding GitHub repository
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis 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
https://github.com/hyesungoh/comet-land/blob/main/LICENSEhttps://github.com/hyesungoh/comet-land/blob/main/README.md`comet-land` has own generate package [`create-comet-land`](https://github.com/hyesungoh/create-comet-land)
Original README
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 [](https://github.com/hyesungoh/comet-land/actions/workflows/codeql.yml) [](https://github.com/hyesungoh/comet-land/actions/workflows/CI.yml) [](https://codecov.io/gh/hyesungoh/comet-land) [](https://dashboard.cypress.io/projects/yiddyz/runs) [](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)에서 확인하실 수 있습니다.  <h2 align="center"> [`BLOG DEMO ☄️`](https://comet-land-blog.vercel.app/) </h2>  <h2 align="center"> [`RESUME DEMO 💫`](https://comet-land-resume.vercel.app/) </h2>  - 👔 Code highlight with line-highlight, line-numbers - 🎨 Design with [NextUI](https://nextui.org/) - 🍽 Table of contents - 🎩 Dark mode  - ⌨️ Search with [KBar](https://kbar.vercel.app/) - 🔨 Configurable - 🔊 [Utterances](https://utteranc.es/) Comment - 🔭 Google Analytics - 🔥 Hotjar - 🏄 Lighthouse score  ## Resume Feature - 🎨 Design with [NextUI](https://nextui.org/) - 🎩 Dark mode - ⌨️ Contact with [KBar](https://kbar.vercel.app/) - 🔨 Configurable - 🔭 Google Analytics - 🔥 Hotjar - 🏄 Lighthouse score  ## 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
Explore similar templates
Compare previews and descriptions within the same stack and category.

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
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
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
A blog starter built on Next.js 12 and Tailwind CSS 3, integrating TypeScript, ESLint, Prettier, and PostCSS.
Next.js · Blog

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