Skip to content

Creative-Geek/CG-Blog

Repository files navigation

CG Blog 🎨

image

Minimalist React blog engine with first-class RTL support. Your content, any hosting, no lock-in.

License: MIT

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

  1. Clone:
git clone https://github.com/Creative-Geek/cg-blog.git
  1. 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.

  1. Configure via environment variables:

Create a .env file or set these in your deployment platform (Vercel, Netlify, Cloudflare Pages):

# Required: URL where your content is hosted
VITE_BASE_URL=https://your-content.pages.dev

# Your name/site name (default: "Creative Geek")
VITE_NAME=Your Name

# Optional: External resume URL (Google Drive, etc.)
# Leave empty to use BASE_URL/Pages/resume.pdf
VITE_RESUME_URL=

# Check if resume.pdf exists at BASE_URL (default: false)
VITE_CHECK_RESUME_EXISTS=true

# Use cover image instead of animated background (default: false)
VITE_USE_COVER_IMAGE=false

See .env.example for all available options.

  1. Launch:
npm install && npm run dev

Deploy the project to your vercel account:

Deploy with Vercel

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

About

πŸ“ CG Blog: React blog with RTL support. Host content anywhere. Vite + SSR. Beginner-friendly MD setup.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published