Minimalist React blog engine with first-class RTL support. Your content, any hosting, no lock-in.
π 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)
- Clone:
git clone https://github.com/Creative-Geek/cg-blog.git
- Set content source in
src/constants.js
:
// Use GitHub raw URLs, CMS API, or your own server
export const BASE_URL = "YOUR_MARKDOWN_FILES_URL";
- Launch:
npm install && npm run dev
Content Server/
βββ Articles
β βββ my-post.md # Body content
β βββ my-post.json # { "title": "...", "date": "2025-01-01", ... }
β βββ my-post.jpg # Optional cover
βββ Pages
βββ about.md # Static page content
βββ about.json # { "title": "About Me" }
Dynamic Mode (Recommended)
- Frontend: Deploy to Netlify/Vercel
- Content: Host MD files on GitHub/S3/Cloudflare
Edits appear live without redeploys
Static Mode
- Place content in
/public
folder - Build with
npm run build
Requires rebuild on content changes
- RTL Support: Set
"dir": "rtl"
in article JSON - SEO: Edit
sitemap-generator.js
- Styling: Modify
tailwind.config.js
- Empty States: Customize
src/components/placeholder
- π 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
Help us improve:
- Add content migration guides
- Enhance image lazy-loading
- Develop Git-based CMS adapter
License: MIT