CG Blog: The Head-Only FOSS Dynamic Blog Engine
Discover the engine behind the website you're currently browsing and learn about the Head-Only Dynamic Blog Engine, its features, and how it powers the blog.

CG Blog π¨π
Minimalist React blog engine with first-class RTL support.
Why?
I wanted a simple platform to use as portfolio and to publish my articles on outside social media.
There are plenty of options out there, ranging from ready to use patforms like notion to frameworks designed to render markdown files. But none of them had good RTL support, so I decided to do it myself.
Features
π Auto RTL Article switching (Arabic/Urdu/Persian ready)
π Server-side rendering (React Router 7)
π‘ Remote markdown content from any URL
βΎοΈ Infinite scroll with loading states
πΌοΈ Graceful fallbacks for missing data
π Built-in dark mode (Shadcn/ui)
Get Started in 4 Steps
- Clone:
git clone https://github.com/Creative-Geek/cg-blog.git
- Create Content:
-
Copy the template folder contents to a new folder and edit the content.
-
Set a build command:
node generate-index.js -
Deploy to any static serving service.
- Set content source in
src/constants.js:
// Use any raw URL that provides the files.
export const BASE_URL = "YOUR_MARKDOWN_FILES_URL";
export const NAME = "Creative Geek";
- Launch:
npm install && npm run dev
Content Structure Template
Content Server/
βββ Articles/
β βββ my-post.md # Article content in markdown
β βββ my-post.json # Article metadata
β βββ my-post.jpg # Optional cover image
βββ Pages/
βββ about.md # Static page content
βββ about.json # Page metadata
Article JSON Format
{
"title": "Your Article Title",
"image": "optional-cover.jpg",
"description": "A brief description of your article",
"date": "DD MMM YYYY",
"author": "Author Name"
}
Page JSON Format
{
"title": "Page Title"
}
Hosting Strategies
- Frontend: Deploy this repo to Vercel/Netlify/Github Pages
- Content: Host MD files on GitHub/S3/Cloudflare
Edits appear live without redeploys, only new articles need to be added to index using the build command
Why CG Blog?
- π Providing real RTL support to markdown content.
- π Content lives separately - no CMS wars
- π§© Tested with 100+ articles (stress-free scroll)
# Rebuild search index when adding content
node generate-index.js
Contribute
Help us improve:
- Develop Git-based CMS adapter
- Provide feedback!
License: MIT