The landing page supports a customizable background image and main heading text
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.
Actual screenshot captured by the server browser.
All pages & views 3
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
The blog page provides pagination and search
Each blog post has its own individual page
Dynamically generates an RSS feed and automatically generates a sitemap
Uses Notion as the blog content CMS, fetching content at build time through the Notion API
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.
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
After cloning the repository, run npm install to install dependencies
- 2
Copy the .env file to .env.example and fill in the environment variables
- 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
Get the database ID from the Notion database link for the settings, navigation, footer, and posts databases
- 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
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 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
https://github.com/minhkhuong2404/notion-web/blob/main/LICENSEhttps://github.com/minhkhuong2404/notion-web/blob/main/README.md1. Sign up for a Giscus account and create a new site.
Original README
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        💠 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).
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

Nextjs-tailwindcss-blog-template
A Next.js blog styled with Tailwind CSS. The current branch processes Markdown with Velite; the earlier Contentlayer setup is retained in a separate historical branch.
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

tailnext
Tailnext is a free, open-source template built on the Next.js 14 App Router and Tailwind CSS, created by the onWidget team.
Next.js · Blog
