This project is a CMS tutorial and blog publishing website based on Keystone, with content managed in Notion. The site is built using Docusaurus and deployed on Vercel.
- Content management using Notion
- Docusaurus-powered static site generation
- Multilingual support with i18n (see usage)
- Easy deployment on Vercel
- Regular backups of documentation on the
archive-docsbranch
- Clone the repository:
git clone https://github.com/accountlabs-static/k-cms.git
cd k-cms- Install dependencies:
pnpm install- Set up the environment variables:
# Copy the .env.example file to .env and fill in the required values.
cp .env.example .env
# Then edit .env with your favourite text editor- Pull content from Notion:
pnpm run pull- Start the development server:
pnpm run startOpen your browser and visit http://localhost:3000.
Notion content is treated as untrusted build input. The production build runs an allowlist-based Markdown/MDX validator after pulling content and before Docusaurus compiles it:
pnpm run validate:contentThe validator scans docs, blog, and i18n and fails closed on raw HTML,
executable MDX, dangerous or non-public URLs, unknown front matter fields, and
unapproved embeds. The only supported MDX component is the generated
ReactPlayer Vimeo embed with fixed attributes. Do not bypass this check in a
deployment workflow.
- Only standard Markdown formatting is supported in Notion content.
- Specific embeds, such as YouTube and Twitter, are supported. Other embeds might not be rendered correctly.
- Images should be uploaded directly to Notion from your local device. Pasting image links from external sources may cause errors.
- Custom slugs for sub-pages (articles within subdirectories) in Notion are not supported.