- Bloapi π§
- The Problem
- Let's Play Practical
- Perfect Fit for
- Kind of meta
- Kind of data
- Features
- Get started
- LICENSE
- To start
nextjsblog, making own cms api is essential. But that's pretty annoying process. - Blog templates can solve this problem, but templates often contain too much unnecessary stuff.
start with just what we need.
Api π+Essential feature π¦
- Focus only on making UI
- Choose tech stack oneself
- Minimal, Customizable, Solid blog
π
bloapisupports rich post meta option
---
title: post titlepreview: post previewauthor: post authorupdate: 2022/08/15 # < YYYY/MM/DD >color: "#A68A68"# < "{ HEX | rgba | rgb }" >tags: tag1, tag2 # split by comma
------
series: javascript-1 # < {seriesTitle}-{order} >bannerUrl: /category/post # nextjs static image locationreference: ref1, ref2 # split by commapostpone: true # if true, post will not published
---Let's look at the data we receive on each page by core api
- main:
pages/index.tsx
Link to π: https://{deploy-url}/
interfaceMainPageProps{latestPost: MetaType[]// β
main-page latest post// π‘ types/post/meta.tsmainCategory: CategoryInfoType[]// β
main-page displaying category// π‘ types/category/index.ts}- category:
pages/category.tsx
Link to π: https://{deploy-url}/category
interfaceAllCategoryPageProps{allCategoryInfo: CategoryInfoType[]// β
all category of blog// π‘ types/category/index.ts}- profile:
pages/profile.tsx
Link to π: https://{deploy-url}/profile
interfaceProfilePageProps{profileSource: string// β
extracted source of {blog-dir}/profile/description.mdx}- {category}:
pages/[category].tsx
Link to π: https://{deploy-url}/{category}
interfaceCategoryPagePropsextendsCategoryInfoType{// β
specific category info// π‘ types/category/index.tslatestPost: MetaType[]// β
latest-post of specific category// π‘ types/post/meta.tslatestTag: string[]// β
latest-post-tag of specific categoryallSeries: SeriesType[]// β
series of specific category// π‘ types/post/series.ts}- {category}/{page}:
pages/[category]/[page]/index.tsx
Link to π: https://{deploy-url}/{category}/{page}/
interfacePaginatedCategoryPagePropsextendsCategoryInfoType{allPost: MetaType[]// β
paginated-post of specific category// π‘ types/post/meta.tsallTag: string[]// β
paginated-post-tag of specific categorypage: number// β
current page numberisLastPage: boolean}- {category}/{page}/{postTitle}:
pages/[category]/[page]/[postTitle].tsx
Link to π: https://{deploy-url}/{category}/{page}/{postTitle}
interfacePostPagePropsextendsPostWithControllerType{// β
specific post + controller [prev, next post]// π‘ types/post/index.tsseriesInfo: SeriesType|null// β
specific post's seriesInfo. nullable// π‘ types/post/series.ts}- MDX full support with mdx-bundler
- CLI posting support
SEOoptimized with next-seoRSS/SITEMAPgeneration inscripts
- First Load Js β‘οΈ
44.5kbβ‘οΈ, preact on production build Tocobject generation on server-side- Image optimized with
next/imageand support automatic-sizing - Google-analytics full support in party-town-thread
- Code highlight with rehype-prism-plus
- Math expressionoptional support with
katex - Kind error message
- Kind
tsdoc. Read doc withcmd+mouse hovershortcut in vscode
Click π§ Use This Template or π§ git clone
MIT