@@ -73,7 +73,7 @@ export default function Home({ posts }) {
{posts.length > MAX_DISPLAY && (
diff --git a/app/page.tsx b/app/page.tsx
index c036ba2..8b36336 100644
--- a/app/page.tsx
+++ b/app/page.tsx
@@ -1,9 +1,9 @@
import { sortPosts, allCoreContent } from 'pliny/utils/contentlayer'
-import { allBlogs } from 'contentlayer/generated'
+import { allPosts } from 'contentlayer/generated'
import HomePage from 'components/app/HomePage'
export default async function Page() {
- const sortedPosts = sortPosts(allBlogs)
+ const sortedPosts = sortPosts(allPosts)
const posts = allCoreContent(sortedPosts)
return
}
diff --git a/app/blog/[...slug]/page.tsx b/app/posts/[...slug]/page.tsx
similarity index 89%
rename from app/blog/[...slug]/page.tsx
rename to app/posts/[...slug]/page.tsx
index 858247f..cab0779 100644
--- a/app/blog/[...slug]/page.tsx
+++ b/app/posts/[...slug]/page.tsx
@@ -4,8 +4,8 @@ import 'katex/dist/katex.css'
import { components } from '@/components/common/MDXComponents'
import { MDXLayoutRenderer } from 'pliny/mdx-components'
import { sortPosts, coreContent, allCoreContent } from 'pliny/utils/contentlayer'
-import { allBlogs } from 'contentlayer/generated'
-import type { Blog } from 'contentlayer/generated'
+import { allPosts } from 'contentlayer/generated'
+import type { Post } from 'contentlayer/generated'
import PostSimple from '@/layouts/PostSimple'
import PostLayout from '@/layouts/PostLayout'
import PostBanner from '@/layouts/PostBanner'
@@ -26,7 +26,7 @@ export async function generateMetadata({
params: { slug: string[] }
}): Promise
{
const slug = decodeURI(params.slug.join('/'))
- const post = allBlogs.find((p) => p.slug === slug)
+ const post = allPosts.find((p) => p.slug === slug)
const authorList = post?.authors || ['default']
if (!post) {
return
@@ -69,13 +69,13 @@ export async function generateMetadata({
}
export const generateStaticParams = async () => {
- return allBlogs.map((p) => ({ slug: p.slug.split('/').map((name) => decodeURI(name)) }))
+ return allPosts.map((p) => ({ slug: p.slug.split('/').map((name) => decodeURI(name)) }))
}
export default async function Page({ params }: { params: { slug: string[] } }) {
const slug = decodeURI(params.slug.join('/'))
// Filter out drafts in production
- const sortedCoreContents = allCoreContent(sortPosts(allBlogs))
+ const sortedCoreContents = allCoreContent(sortPosts(allPosts))
const postIndex = sortedCoreContents.findIndex((p) => p.slug === slug)
if (postIndex === -1) {
return notFound()
@@ -83,7 +83,7 @@ export default async function Page({ params }: { params: { slug: string[] } }) {
const prev = sortedCoreContents[postIndex + 1]
const next = sortedCoreContents[postIndex - 1]
- const post = allBlogs.find((p) => p.slug === slug) as Blog
+ const post = allPosts.find((p) => p.slug === slug) as Post
const authorList = post?.authors || ['default']
const mainContent = coreContent(post)
const jsonLd = post.structuredData
diff --git a/app/blog/page.tsx b/app/posts/page.tsx
similarity index 87%
rename from app/blog/page.tsx
rename to app/posts/page.tsx
index 4dcbddc..ee9a4b6 100644
--- a/app/blog/page.tsx
+++ b/app/posts/page.tsx
@@ -1,6 +1,6 @@
import ListLayout from '@/layouts/ListLayoutWithTags'
import { allCoreContent, sortPosts } from 'pliny/utils/contentlayer'
-import { allBlogs } from 'contentlayer/generated'
+import { allPosts } from 'contentlayer/generated'
import { genPageMetadata } from 'app/seo'
const POSTS_PER_PAGE = 5
@@ -8,7 +8,7 @@ const POSTS_PER_PAGE = 5
export const metadata = genPageMetadata({ title: 'Blog' })
export default function BlogPage() {
- const posts = allCoreContent(sortPosts(allBlogs))
+ const posts = allCoreContent(sortPosts(allPosts))
const pageNumber = 1
const initialDisplayPosts = posts.slice(
POSTS_PER_PAGE * (pageNumber - 1),
diff --git a/app/blog/page/[page]/page.tsx b/app/posts/page/[page]/page.tsx
similarity index 83%
rename from app/blog/page/[page]/page.tsx
rename to app/posts/page/[page]/page.tsx
index a0a8b48..3075204 100644
--- a/app/blog/page/[page]/page.tsx
+++ b/app/posts/page/[page]/page.tsx
@@ -1,18 +1,18 @@
import ListLayout from '@/layouts/ListLayoutWithTags'
import { allCoreContent, sortPosts } from 'pliny/utils/contentlayer'
-import { allBlogs } from 'contentlayer/generated'
+import { allPosts } from 'contentlayer/generated'
const POSTS_PER_PAGE = 5
export const generateStaticParams = async () => {
- const totalPages = Math.ceil(allBlogs.length / POSTS_PER_PAGE)
+ const totalPages = Math.ceil(allPosts.length / POSTS_PER_PAGE)
const paths = Array.from({ length: totalPages }, (_, i) => ({ page: (i + 1).toString() }))
return paths
}
export default function Page({ params }: { params: { page: string } }) {
- const posts = allCoreContent(sortPosts(allBlogs))
+ const posts = allCoreContent(sortPosts(allPosts))
const pageNumber = parseInt(params.page as string)
const initialDisplayPosts = posts.slice(
POSTS_PER_PAGE * (pageNumber - 1),
diff --git a/app/sitemap.ts b/app/sitemap.ts
index 74f176c..bad6647 100644
--- a/app/sitemap.ts
+++ b/app/sitemap.ts
@@ -1,18 +1,18 @@
import { MetadataRoute } from 'next'
-import { allBlogs } from 'contentlayer/generated'
+import { allPosts } from 'contentlayer/generated'
import siteMetadata from '@/data/siteMetadata'
export default function sitemap(): MetadataRoute.Sitemap {
const siteUrl = siteMetadata.siteUrl
- const blogRoutes = allBlogs
+ const blogRoutes = allPosts
.filter((post) => !post.draft)
.map((post) => ({
url: `${siteUrl}/${post.path}`,
lastModified: post.lastmod || post.date,
}))
- const routes = ['', 'blog', 'projects', 'tags', 'members'].map((route) => ({
+ const routes = ['', 'posts', 'projects', 'tags', 'members'].map((route) => ({
url: `${siteUrl}/${route}`,
lastModified: new Date().toISOString().split('T')[0],
}))
diff --git a/app/tags/[tag]/page.tsx b/app/tags/[tag]/page.tsx
index 94a3dd2..84652fa 100644
--- a/app/tags/[tag]/page.tsx
+++ b/app/tags/[tag]/page.tsx
@@ -2,7 +2,7 @@ import { slug } from 'github-slugger'
import { allCoreContent, sortPosts } from 'pliny/utils/contentlayer'
import siteMetadata from '@/data/siteMetadata'
import ListLayout from '@/layouts/ListLayoutWithTags'
-import { allBlogs } from 'contentlayer/generated'
+import { allPosts } from 'contentlayer/generated'
import tagData from 'app/tag-data.json'
import { genPageMetadata } from 'app/seo'
import { Metadata } from 'next'
@@ -36,7 +36,7 @@ export default function TagPage({ params }: { params: { tag: string } }) {
// Capitalize first letter and convert space to dash
const title = tag[0].toUpperCase() + tag.split(' ').join('-').slice(1)
const filteredPosts = allCoreContent(
- sortPosts(allBlogs.filter((post) => post.tags && post.tags.map((t) => slug(t)).includes(tag)))
+ sortPosts(allPosts.filter((post) => post.tags && post.tags.map((t) => slug(t)).includes(tag)))
)
if (filteredPosts.length === 0) {
return notFound()
diff --git a/app/tags/page.tsx b/app/tags/page.tsx
index 4813e94..e890823 100644
--- a/app/tags/page.tsx
+++ b/app/tags/page.tsx
@@ -4,7 +4,7 @@ import { slug } from 'github-slugger'
import tagData from 'app/tag-data.json'
import { genPageMetadata } from 'app/seo'
-export const metadata = genPageMetadata({ title: 'Tags', description: 'Things I blog about' })
+export const metadata = genPageMetadata({ title: 'Tags', description: 'Things This blog about' })
export default async function Page() {
const tagCounts = tagData as Record
diff --git a/contentlayer.config.ts b/contentlayer.config.ts
index 75bf60c..7f9501b 100644
--- a/contentlayer.config.ts
+++ b/contentlayer.config.ts
@@ -60,9 +60,9 @@ const computedFields: ComputedFields = {
/**
* Count the occurrences of all tags across blog posts and write to json file
*/
-function createTagCount(allBlogs) {
+function createTagCount(allPosts) {
const tagCount: Record = {}
- allBlogs.forEach((file) => {
+ allPosts.forEach((file) => {
if (file.tags && (!isProduction || file.draft !== true)) {
file.tags.forEach((tag) => {
const formattedTag = slug(tag)
@@ -77,22 +77,22 @@ function createTagCount(allBlogs) {
writeFileSync('./app/tag-data.json', JSON.stringify(tagCount))
}
-function createSearchIndex(allBlogs) {
+function createSearchIndex(allPosts) {
if (
siteMetadata?.search?.provider === 'kbar' &&
siteMetadata.search.kbarConfig.searchDocumentsPath
) {
writeFileSync(
`public/${path.basename(siteMetadata.search.kbarConfig.searchDocumentsPath)}`,
- JSON.stringify(allCoreContent(sortPosts(allBlogs)))
+ JSON.stringify(allCoreContent(sortPosts(allPosts)))
)
console.log('Local search index generated...')
}
}
-export const Blog = defineDocumentType(() => ({
- name: 'Blog',
- filePathPattern: 'blog/**/*.mdx',
+export const Post = defineDocumentType(() => ({
+ name: 'Post',
+ filePathPattern: 'posts/**/*.mdx',
contentType: 'mdx',
fields: {
title: { type: 'string', required: true },
@@ -162,7 +162,7 @@ export const Project = defineDocumentType(() => ({
export default makeSource({
contentDirPath: 'data',
- documentTypes: [Blog, Project],
+ documentTypes: [Post, Project],
mdx: {
cwd: process.cwd(),
remarkPlugins: [
@@ -192,8 +192,8 @@ export default makeSource({
],
},
onSuccess: async (importData) => {
- const { allBlogs } = await importData()
- createTagCount(allBlogs)
- createSearchIndex(allBlogs)
+ const { allPosts } = await importData()
+ createTagCount(allPosts)
+ createSearchIndex(allPosts)
},
})
diff --git a/data/headerNavLinks.ts b/data/headerNavLinks.ts
index 81adc5a..b4965a5 100644
--- a/data/headerNavLinks.ts
+++ b/data/headerNavLinks.ts
@@ -1,6 +1,6 @@
const headerNavLinks = [
{ href: '/', title: 'Home' },
- // { href: '/blog', title: 'Blog' },
+ { href: '/posts', title: 'Posts' },
{ href: '/ideascale', title: 'Ideascale' },
{ href: '/projects', title: 'Projects' },
{ href: '/members', title: 'Members' },
diff --git a/data/memberData.ts b/data/memberData.ts
index 2e13e7b..b4e0caa 100644
--- a/data/memberData.ts
+++ b/data/memberData.ts
@@ -2,7 +2,7 @@ import { Member } from '@/app/type'
const membersData: Member[] = [
{
- name: 'Phùng Tiến Dũng | Founder',
+ name: 'Phùng Tiến Dũng',
github: 'tidvn',
avatar: 'https://avatars.githubusercontent.com/u/74198018?v=4',
company: '',
@@ -29,7 +29,7 @@ const membersData: Member[] = [
],
},
{
- name: 'Nguyễn Duy Khánh | Co-Founder',
+ name: 'Nguyễn Duy Khánh',
github: 'independenceee',
avatar: 'https://avatars.githubusercontent.com/u/108068667?v=4',
email: 'nguyenkhanh17112003@gmail.com',
@@ -51,7 +51,7 @@ const membersData: Member[] = [
},
{
- name: 'Nguyễn Hồng Sơn | Co-Founder',
+ name: 'Nguyễn Hồng Sơn',
github: 'sonson0910',
avatar: 'https://avatars.githubusercontent.com/u/91943651?v=4',
email: '',
diff --git a/data/blog/github-markdown-guide.mdx b/data/posts/github-markdown-guide.mdx
similarity index 100%
rename from data/blog/github-markdown-guide.mdx
rename to data/posts/github-markdown-guide.mdx
diff --git a/faq/customize-kbar-search.md b/faq/customize-kbar-search.md
index 6e3995e..77febe7 100644
--- a/faq/customize-kbar-search.md
+++ b/faq/customize-kbar-search.md
@@ -12,7 +12,7 @@ Add a `SearchProvider` component such as the one shown below and use it in place
import { KBarSearchProvider } from 'pliny/search/KBar'
import { useRouter } from 'next/navigation'
import { CoreContent } from 'pliny/utils/contentlayer'
-import { Blog } from 'contentlayer/generated'
+import { Post } from 'contentlayer/generated'
export const SearchProvider = ({ children }) => {
const router = useRouter()
@@ -59,21 +59,21 @@ export const SearchProvider = ({ children }) => {
You can even choose to do a full text search over the entire generated blog content though this would come at the expense of a larger search index file by modifying the `createSearchIndex` function in `contentlayer.config.ts` to:
```tsx
-function createSearchIndex(allBlogs) {
+function createSearchIndex(allPosts) {
if (
siteMetadata?.search?.provider === 'kbar' &&
siteMetadata.search.kbarConfig.searchDocumentsPath
) {
writeFileSync(
`public/${siteMetadata.search.kbarConfig.searchDocumentsPath}`,
- JSON.stringify((sortPosts(allBlogs)))
+ JSON.stringify(sortPosts(allPosts))
)
console.log('Local search index generated...')
}
}
```
-Note the change from `JSON.stringify(allCoreContent(sortPosts(allBlogs)))` to `JSON.stringify((sortPosts(allBlogs)))`.
+Note the change from `JSON.stringify(allCoreContent(sortPosts(allPosts)))` to `JSON.stringify((sortPosts(allPosts)))`.
Next, in the modified `SearchProvider`, dump the raw content to the `keywords` field in the `onSearchDocumentsLoad` prop:
diff --git a/layouts/ListLayout.tsx b/layouts/ListLayout.tsx
index 8a71f02..70111bd 100644
--- a/layouts/ListLayout.tsx
+++ b/layouts/ListLayout.tsx
@@ -4,7 +4,7 @@ import { useState } from 'react'
import { usePathname } from 'next/navigation'
import { formatDate } from 'pliny/utils/formatDate'
import { CoreContent } from 'pliny/utils/contentlayer'
-import type { Blog } from 'contentlayer/generated'
+import type { Post } from 'contentlayer/generated'
import Link from '@/components/common/Link'
import Tag from '@/components/common/Tag'
import siteMetadata from '@/data/siteMetadata'
@@ -14,9 +14,9 @@ interface PaginationProps {
currentPage: number
}
interface ListLayoutProps {
- posts: CoreContent[]
+ posts: CoreContent[]
title: string
- initialDisplayPosts?: CoreContent[]
+ initialDisplayPosts?: CoreContent[]
pagination?: PaginationProps
}
diff --git a/layouts/ListLayoutWithTags.tsx b/layouts/ListLayoutWithTags.tsx
index fe9056a..2e5ac8b 100644
--- a/layouts/ListLayoutWithTags.tsx
+++ b/layouts/ListLayoutWithTags.tsx
@@ -5,7 +5,7 @@ import { usePathname } from 'next/navigation'
import { slug } from 'github-slugger'
import { formatDate } from 'pliny/utils/formatDate'
import { CoreContent } from 'pliny/utils/contentlayer'
-import type { Blog } from 'contentlayer/generated'
+import type { Post } from 'contentlayer/generated'
import Link from '@/components/common/Link'
import Tag from '@/components/common/Tag'
import siteMetadata from '@/data/siteMetadata'
@@ -16,9 +16,9 @@ interface PaginationProps {
currentPage: number
}
interface ListLayoutProps {
- posts: CoreContent[]
+ posts: CoreContent[]
title: string
- initialDisplayPosts?: CoreContent[]
+ initialDisplayPosts?: CoreContent[]
pagination?: PaginationProps
}
@@ -86,11 +86,11 @@ export default function ListLayoutWithTags({
- {pathname.startsWith('/blog') ? (
+ {pathname.startsWith('/posts') ? (
All Posts
) : (
All Posts
diff --git a/layouts/PostBanner.tsx b/layouts/PostBanner.tsx
index f774cdf..010b85e 100644
--- a/layouts/PostBanner.tsx
+++ b/layouts/PostBanner.tsx
@@ -2,7 +2,7 @@ import { ReactNode } from 'react'
import Image from 'next/image'
import Bleed from 'pliny/ui/Bleed'
import { CoreContent } from 'pliny/utils/contentlayer'
-import type { Blog } from 'contentlayer/generated'
+import type { Post } from 'contentlayer/generated'
import Comments from '@/components/common/Comments'
import Link from '@/components/common/Link'
import PageTitle from '@/components/common/PageTitle'
@@ -11,7 +11,7 @@ import siteMetadata from '@/data/siteMetadata'
import ScrollTopAndComment from '@/components/common/ScrollTopAndComment'
interface LayoutProps {
- content: CoreContent
+ content: CoreContent
children: ReactNode
next?: { path: string; title: string }
prev?: { path: string; title: string }
diff --git a/layouts/PostLayout.tsx b/layouts/PostLayout.tsx
index 849fdd9..cc4cdd1 100644
--- a/layouts/PostLayout.tsx
+++ b/layouts/PostLayout.tsx
@@ -1,6 +1,6 @@
import { ReactNode } from 'react'
import { CoreContent } from 'pliny/utils/contentlayer'
-import type { Blog } from 'contentlayer/generated'
+import type { Post } from 'contentlayer/generated'
import Link from '@/components/common/Link'
import PageTitle from '@/components/common/PageTitle'
import SectionContainer from '@/components/common/SectionContainer'
@@ -15,7 +15,7 @@ import siteMetadata from '@/data/siteMetadata'
import Comments from '@/components/common/Comments'
interface LayoutProps {
- content: CoreContent
+ content: CoreContent
authorList: string[]
next?: { path: string; title: string; url: string }
prev?: { path: string; title: string; url: string }
@@ -103,7 +103,7 @@ export default async function PostLayout({
{author.github && (
{author.github.replace('https://github.com/', '@')}
diff --git a/layouts/PostSimple.tsx b/layouts/PostSimple.tsx
index 53ed5bb..afc1aa2 100644
--- a/layouts/PostSimple.tsx
+++ b/layouts/PostSimple.tsx
@@ -1,7 +1,7 @@
import { ReactNode } from 'react'
import { formatDate } from 'pliny/utils/formatDate'
import { CoreContent } from 'pliny/utils/contentlayer'
-import type { Blog } from 'contentlayer/generated'
+import type { Post } from 'contentlayer/generated'
import Comments from '@/components/common/Comments'
import Link from '@/components/common/Link'
import PageTitle from '@/components/common/PageTitle'
@@ -10,7 +10,7 @@ import siteMetadata from '@/data/siteMetadata'
import ScrollTopAndComment from '@/components/common/ScrollTopAndComment'
interface LayoutProps {
- content: CoreContent
+ content: CoreContent
children: ReactNode
next?: { path: string; title: string }
prev?: { path: string; title: string }
diff --git a/scripts/rss.mjs b/scripts/rss.mjs
index 690ff4d..3d8be5b 100644
--- a/scripts/rss.mjs
+++ b/scripts/rss.mjs
@@ -4,14 +4,14 @@ import { slug } from 'github-slugger'
import { escape } from 'pliny/utils/htmlEscaper.js'
import siteMetadata from '../data/siteMetadata.js'
import tagData from '../app/tag-data.json' assert { type: 'json' }
-import { allBlogs } from '../.contentlayer/generated/index.mjs'
+import { allPosts } from '../.contentlayer/generated/index.mjs'
import { sortPosts } from 'pliny/utils/contentlayer.js'
const generateRssItem = (config, post) => `
-
- ${config.siteUrl}/blog/${post.slug}
+ ${config.siteUrl}/posts/${post.slug}
${escape(post.title)}
- ${config.siteUrl}/blog/${post.slug}
+ ${config.siteUrl}/posts/${post.slug}
${post.summary && `${escape(post.summary)}`}
${new Date(post.date).toUTCString()}
${config.email} (${config.author})
@@ -23,7 +23,7 @@ const generateRss = (config, posts, page = 'feed.xml') => `
${escape(config.title)}
- ${config.siteUrl}/blog
+ ${config.siteUrl}/posts
${escape(config.description)}
${config.language}
${config.email} (${config.author})
@@ -35,9 +35,9 @@ const generateRss = (config, posts, page = 'feed.xml') => `
`
-async function generateRSS(config, allBlogs, page = 'feed.xml') {
- const publishPosts = allBlogs.filter((post) => post.draft !== true)
- // RSS for blog post
+async function generateRSS(config, allPosts, page = 'feed.xml') {
+ const publishPosts = allPosts.filter((post) => post.draft !== true)
+ // RSS for post post
if (publishPosts.length > 0) {
const rss = generateRss(config, sortPosts(publishPosts))
writeFileSync(`./public/${page}`, rss)
@@ -45,7 +45,7 @@ async function generateRSS(config, allBlogs, page = 'feed.xml') {
if (publishPosts.length > 0) {
for (const tag of Object.keys(tagData)) {
- const filteredPosts = allBlogs.filter((post) => post.tags.map((t) => slug(t)).includes(tag))
+ const filteredPosts = allPosts.filter((post) => post.tags.map((t) => slug(t)).includes(tag))
const rss = generateRss(config, filteredPosts, `tags/${tag}/${page}`)
const rssPath = path.join('public', 'tags', tag)
mkdirSync(rssPath, { recursive: true })
@@ -55,7 +55,7 @@ async function generateRSS(config, allBlogs, page = 'feed.xml') {
}
const rss = () => {
- generateRSS(siteMetadata, allBlogs)
+ generateRSS(siteMetadata, allPosts)
console.log('RSS feed generated...')
}
export default rss