CLAUDE.md

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Project Overview

This is a Jekyll-based static site generator for a personal blog/portfolio hosted on GitHub Pages at https://icpc.cloud. The site uses Less for CSS preprocessing, includes PWA support, and is deployed automatically from the master branch.

Common Development Commands

  • npm start - Start Jekyll development server (preview at http://localhost:4000)
  • npm run dev - Watch files and start development server
  • npm run push - Push changes to master with tags for deployment

Required Dependencies

  • Ruby (for Jekyll)
  • Jekyll (Ruby gem)
  • Node.js and NPM
  • Grunt CLI (for task automation)

Install Node dependencies with: npm install

Project Structure & Architecture

Jekyll Directory Structure

The project follows standard Jekyll conventions:

  • _posts/ - Blog post markdown files (named: YYYY-MM-DD-filename.md)
  • _layouts/ - Page layout templates (post, page, default layouts)
  • _includes/ - Reusable template components
  • _data/ - Jekyll data files for dynamic content
  • _config.yml - Main Jekyll configuration (site metadata, plugins, analytics setup)

Frontend Assets

  • /css/ - Compiled CSS output
  • /less/ - Less source files (compile to CSS)
  • /js/ - JavaScript files
  • /img/ - Image assets
  • /resources/ - Additional resources
  • /pwa/ - Progressive Web App files

Build Configuration

  • package.json - Node dependencies and npm scripts
  • Gruntfile.js - Grunt task automation configuration

Key Architectural Points

  1. Static Generation: Jekyll generates static HTML from templates and markdown posts. No server-side processing.
  2. CSS Preprocessing: Less files in /less/ are compiled to CSS via Grunt. Edit .less files, not the compiled CSS directly.
  3. Git-based Workflow: Content is managed via Git. Pushing to master triggers GitHub Pages automatic deployment.
  4. Jekyll Plugins: Configured in _config.yml for features like syntax highlighting, pagination, and markdown rendering.

Contributing Guidelines

Follow this workflow for contributions:

  1. Fork the repository to your account
  2. Clone and add upstream remote: git remote add source [email protected]:DocsHome/CGITJ.github.io.git
  3. Make changes and commit with descriptive messages: git commit -am "Fix issue #X: description"
  4. Push to your fork and submit a pull request
  5. Regularly sync with upstream: git fetch source && git rebase source/master && git push -f origin master

License

This project is licensed under GPL. Please respect the open-source license and do not misuse for commercial purposes.