Next.jsReactBlog

notion-web — Next.js Blog Template

By minhkhuong2404

A personal website and blog template built on Next.js, TypeScript, Tailwind CSS, and the Notion API, with blog content managed in Notion, data fetched at build time, and Giscus comments integrated.

Explore the design

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

3 previews
Desktop homepage1 / 3
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 3

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-13View source

What stands out

A quick read of the recorded project description.

01

The landing page supports a customizable background image and main heading text

02

The blog page provides pagination and search

03

Each blog post has its own individual page

04

Dynamically generates an RSS feed and automatically generates a sitemap

05

Uses Notion as the blog content CMS, fetching content at build time through the Notion API

06

Integrates Giscus as the comment system

Template Details

notion-web is Khuong Lu's personal website and blog project, built with Next.js, TypeScript, Tailwind CSS, and Notion. The README states that blog posts are managed in Notion, and the site fetches content at build time through the Notion API. For features, the README lists: a landing page with a customizable background image and main heading text, a blog page with pagination and search, an individual page for each blog post, a dynamically generated RSS feed, automatically generated sitemap, Notion as the blog content CMS, and a comment section integrated through Giscus.

For configuration, the README requires cloning the repository and installing dependencies, copying the .env file, and then setting up the Notion database: you can copy the provided Notion template page, create a Notion integration to obtain the NOTION_API_KEY, connect the integration to the database page, and get the database ID from the database link for the settings, navigation, footer, and posts databases. Giscus comments require creating a site and configuring environment variables such as the repository, repository ID, category, and category ID. To run the project, use npm run start:all and visit http://localhost:3000. The README does not provide information about performance, production readiness, browser compatibility, or the deployment process.

Next.jsBlog

Is it right for your project?

Use Cases

  • Building a personal website and publishing blog posts
  • Managing blog content with a Notion database and automatically syncing it to the website
  • Adding a comment feature to a blog
  • Generating RSS subscriptions and a sitemap

Suitable For

  • Individual developers who want to manage blog content with Notion
  • Front-end developers familiar with Next.js, TypeScript, and Tailwind CSS
  • Users who need a personal website that includes a blog, RSS, and comments

Getting started & customization

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

  1. 1

    After cloning the repository, run npm install to install dependencies

  2. 2

    Copy the .env file to .env.example and fill in the environment variables

  3. 3

    Copy the Notion database template page, create a Notion integration to obtain the NOTION_API_KEY, and connect the integration to the database page

  4. 4

    Get the database ID from the Notion database link for the settings, navigation, footer, and posts databases

  5. 5

    Configure the Giscus-related environment variables (GISCUS_REPO, GISCUS_REPO_ID, GISCUS_CATEGORY, GISCUS_CATEGORY_ID), then run npm run start:all to start the project

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 that version and does not mean that external services or third-party assets are free.

Must comply with when using

  • You are allowed to use, modify, commercially use, and distribute the code of this version for free.
  • When distributing copies or substantial portions of the code, retain the original author's copyright notice and the complete 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 against 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 website content depends on the Notion API, and blog posts must be managed in Notion and fetched at build time, so using this template requires a Notion account and configuration of the relevant integration.
  • Running the project requires obtaining the NOTION_API_KEY and database ID, meaning you need to create a Notion integration and provide an API key.
  • The comment feature depends on the external Giscus service, and you need to create a Giscus site yourself and obtain configuration information such as the repository ID.
  • Enabling comments requires registering a Giscus account and creating a site, which is an additional external account requirement.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

💠 This is my personal website and blog, built using Next.js, TypeScript, Tailwind CSS, and Notion. The blog posts are managed in Notion, and the website pulls the content from the Notion API at build time.

Original README

Once you have your own duplicate page, you can get the `NOTION_API_KEY` and database IDs needed to run the project. To get your `NOTION_API_KEY`, follow these steps:

Original README

To enable commenting functionality using Giscus, you need to set up a repository and obtain a repository ID. You can find more information on the [Giscus website](https://giscus.app/).

Original README

1. Sign up for a Giscus account and create a new site.

Original README
https://github.com/minhkhuong2404/notion-web/blob/main/LICENSEhttps://github.com/minhkhuong2404/notion-web/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-13. 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
Partly documented · 68 / 100
Technologies
Next.js · React
Website type
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
2023-09-01
Screenshot last checked
2026-10-13

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: codex-user-requested-batch-review-20261015 · 2026-10-15

Inspect the recorded source material

SHA-256: 9288f7fe818928a7a42520725d04c2e883164f6028f805ad9f13f5b3e40e7d7a

2026-10-13T20:10:36.605Z

Source file / repository
# Khuong Lu - Personal Website and Blog

![](https://img.shields.io/github/issues/minhkhuong2404/notion-web?color=0088ff)
![](https://img.shields.io/github/languages/top/minhkhuong2404/notion-web)
![](https://img.shields.io/github/manifest-json/v/minhkhuong2404/notion-web)
![](https://img.shields.io/github/discussions/minhkhuong2404/notion-web)
![](https://img.shields.io/github/deployments/minhkhuong2404/notion-web/production)
![](https://img.shields.io/website?down_color=red&up_message=running&url=https%3A%2F%2Fwww.luminhkhuong.edu.vn)
![](https://img.shields.io/github/last-commit/minhkhuong2404/notion-web)

💠 This is my personal website and blog, built using Next.js, TypeScript, Tailwind CSS, and Notion. The blog posts are managed in Notion, and the website pulls the content from the Notion API at build time.

## Notable Features

- Landing page with customizable background image and hero text
- Blog page with pagination and search functionality
- Separate pages for each blog post
- Dynamically generated RSS feed
- Automatic sitemap generation
- Notion as a CMS for blog content management
- Integration with Giscus for comment section

## Setup & Config
To get started with this project, follow these steps:

To get started with this project, you can clone the repository and install the dependencies:
```bash
git clone https://github.com/minhkhuong2404/notion-web.git
cd howz.dev
npm install
```

Copy the .env file to .env.example:
```bash
cp .env .env.example
```
### Notion Database Setup

You can duplicate the Notion page for database template [here](https://luminhkhuong.notion.site/Blog-Template-d79d594e2dd14a1ab4b0f6b324c1cae8). 

Once you have your own duplicate page, you can get the `NOTION_API_KEY` and database IDs needed to run the project. To get your `NOTION_API_KEY`, follow these steps:

1. Go to your [Notion integrations page](https://developers.notion.com/docs/getting-started#step-2-share-a-database-with-your-integration).
2. Click on the "Create new integration" button.
3. Give your integration a name and click the "Submit" button.
4. You'll now see your integration listed on the page. Click on the integration's name.
5. You should now see your integration details page. You can find your `NOTION_API_KEY` under the "Internal Integration Tokens" section.

To add your app into page, folow these steps:
1. Open your duplicated database in Notion.
2. Click on the three dots in the top-right corner of the page.
3. Then you selecting "Add connections" and choosing your app name.

To get the database IDs, follow these steps:

1. Open your duplicated database in Notion.
2. Click on the three dots in the top-right corner of the page.
3. Click on "Copy link URL."
4. You should see the database ID in the URL. It's the long string of characters between the last two forward slashes.

Update the `.env` file with your `NOTION_API_KEY` and the database IDs for your settings, navigation, footer, and posts databases. Use the `.env.example` file as a guide.

### Giscus Setup

To enable commenting functionality using Giscus, you need to set up a repository and obtain a repository ID. You can find more information on the [Giscus website](https://giscus.app/).

1. Sign up for a Giscus account and create a new site.
2. Choose the "GitHub Discussions" option as your comment platform.
3. Configure your site by providing your GitHub repository information and choosing a category name.
4. In your `.env` file, add the following variables with the values for your Giscus site:

```env
GISCUS_REPO=username/repository
GISCUS_REPO_ID=repository-id
GISCUS_CATEGORY=category-name
GISCUS_CATEGORY_ID=category-id
```

### Running the Project

To run the project, you can use the following command:
```bash
npm run start:all
```

The project will be available at [http://localhost:3000](http://localhost:3000).
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.