A personal Jekyll blog by Martin Qian featuring thoughts on management, technology, life pro tips, and life events. Built with Jekyll and deployed on GitHub Pages.
- Jekyll-powered static site generator
- Responsive design with custom Sass styling
- SEO optimized with jekyll-seo-tag
- Syntax highlighting with Rouge
- Google Analytics integration
- Disqus comments system
- Category archives and pagination
- RSS feed generation
- Sitemap auto-generation
- Docker support for containerized development
- Ruby (2.7+ recommended)
- Bundler gem:
gem install bundler
- Docker and Docker Compose
-
Clone the repository:
git clone https://github.com/mackuntu/mackuntu.github.io.git cd mackuntu.github.io -
Install dependencies:
bundle install
-
Serve the site locally:
bundle exec jekyll serve -
Open your browser to
http://localhost:4000
-
Clone the repository:
git clone https://github.com/mackuntu/mackuntu.github.io.git cd mackuntu.github.io -
Start the Docker container:
docker-compose up
-
Open your browser to
http://localhost:4000
Use the provided script for quick post creation:
./post.sh "your post title"This creates a new draft in _drafts/ with the current date and standardized front matter:
- Layout: post
- Categories: empty (to be filled)
- Tags: [green] (default)
- Author: martin
- Comments: enabled
- Create a new file in
_posts/with format:YYYY-MM-DD-title.markdown - Add the required front matter:
--- layout: post title: "Your Post Title" categories: [category1, category2] tags: [tag1, tag2] description: "Brief description" author: martin image: assets/images/your-image.jpg featured: true hidden: false rating: 4.5 comments: true ---
- Write your content in Markdown below the front matter
- Drafts are stored in
_drafts/ - To preview drafts locally:
bundle exec jekyll serve --drafts - Move drafts to
_posts/when ready to publish
βββ _drafts/ # Unpublished posts
βββ _includes/ # Reusable page components
βββ _layouts/ # Page templates
βββ _pages/ # Static pages
βββ _posts/ # Published blog posts
βββ _sass/ # Sass stylesheets
βββ _templates/ # Post templates
βββ assets/ # Static assets
β βββ css/ # Compiled CSS
β βββ fonts/ # Web fonts
β βββ images/ # Images and media
β βββ js/ # JavaScript files
β βββ touch-icons/ # Favicon variations
βββ _config.yml # Jekyll configuration
βββ docker-compose.yml # Docker setup
βββ Gemfile # Ruby dependencies
βββ post.sh # Post creation script
βββ README.md # This file
Key configurations include:
- Title: MartinNotes
- Author: Martin Qian
- Analytics: Google Analytics (G-MK0NRFNRDN)
- Comments: Disqus (mackuntu)
- Pagination: 6 posts per page
- Markdown: Kramdown with GFM input
The author information is configured in _config.yml:
authors:
martin:
name: Martin
email: mackuntu@gmail.com
web: https://www.mackuntu.com
twitter: https://twitter.com/martin_qianThis blog is automatically deployed to GitHub Pages when changes are pushed to the main branch.
The site uses a custom domain configured via the CNAME file.
No manual deployment steps required - GitHub Pages handles the Jekyll build process automatically.
# Serve locally
bundle exec jekyll serve
# Serve with drafts
bundle exec jekyll serve --drafts
# Build for production
bundle exec jekyll build
# Update dependencies
bundle update
# Create new post
./post.sh "Post Title"- Use Markdown for content formatting
- Include featured images in
assets/images/ - Categorize posts appropriately
- Add relevant tags for better discoverability
- Set
featured: truefor important posts - Use
hidden: trueto exclude from main listings
- Fork the repository
- Create a feature branch
- Make your changes
- Test locally
- Submit a pull request
This project is licensed under the terms specified in LICENSE.txt.