A personal blog built with Jekyll and hosted on GitHub Pages. Write your thoughts, share your experiences, and connect with others through markdown blog posts.
- Clean, responsive design using the Minima theme
- Markdown support for easy blog post creation
- Automatic RSS feed generation
- SEO optimized with meta tags and structured data
- GitHub Pages ready for easy deployment
- Custom styling with SCSS
π Click to expand quick commands
# Clone repository
git clone https://github.com/yourusername/my-jekyll-github.git
cd my-jekyll-github
# Install dependencies
bundle install
# Run locally
bundle exec jekyll serve
# Build site
bundle exec jekyll build
# Clean and rebuild
bundle exec jekyll clean && bundle exec jekyll build
# Serve with live reload
bundle exec jekyll serve --livereload
# Serve on different port
bundle exec jekyll serve --port 4001
# Build with verbose output
bundle exec jekyll build --verbose
# Update dependencies
bundle update
# Add all changes
git add .
# Commit changes
git commit -m "Update blog content"
# Push to GitHub
git push origin main
# Check status
git status
- Ruby (2.4.0 or higher)
- Jekyll (4.0 or higher)
- Bundler
-
Clone the repository
git clone https://github.com/yourusername/my-jekyll-github.git cd my-jekyll-github
-
Install dependencies
bundle install
-
Run the site locally
bundle exec jekyll serve
-
Open your browser Navigate to
http://localhost:4000
to view your blog
To create a new blog post:
- Create a new file in the
_posts
directory - Name it with the format:
YYYY-MM-DD-title.md
- Add front matter at the top:
---
layout: post
title: "Your Post Title"
date: YYYY-MM-DD HH:MM:SS +0000
categories: category1 category2
---
- Write your content in Markdown below the front matter
---
layout: post
title: "My First Blog Post"
date: 2024-01-17 10:00:00 +0000
categories: personal thoughts
---
# Welcome to my blog!
This is my first blog post written in **Markdown**.
## Features
- Easy to write
- Great formatting
- Code support
```python
def hello_world():
print("Hello, World!")
That's it! Your post will automatically appear on the blog.
## Customization
### Site Configuration
Edit `_config.yml` to customize:
- Site title and description
- Author information
- Social media links
- Base URL for GitHub Pages
- Theme settings
### Styling
Customize the appearance by editing:
- `assets/main.scss` - Main stylesheet
- `_layouts/` - Page layouts
- `_includes/` - Reusable components
### Adding Pages
Create new pages by adding markdown files with front matter:
```yaml
---
layout: page
title: "Page Title"
permalink: /page-url/
---
-
Push to GitHub
git add . git commit -m "Initial blog setup" git push origin main
-
Enable GitHub Pages
- Go to your repository settings
- Navigate to Pages section
- Select source branch (usually
main
) - Your site will be available at
https://yourusername.github.io/jekyll-github
To use a custom domain:
- Add your domain to
_config.yml
- Create a
CNAME
file in the root directory - Configure DNS settings with your domain provider
jekyll-github/
βββ _config.yml # Site configuration
βββ _layouts/ # Page layouts
β βββ default.html # Default layout
β βββ post.html # Blog post layout
βββ _includes/ # Reusable components
β βββ head.html # Head section
β βββ header.html # Navigation header
β βββ footer.html # Site footer
βββ _posts/ # Blog posts (markdown files)
βββ assets/ # CSS, JS, images
β βββ main.scss # Main stylesheet
βββ index.html # Homepage
βββ about.md # About page
βββ Gemfile # Ruby dependencies
βββ README.md # This file
-
Port already in use
bundle exec jekyll serve --port 4001
-
Dependencies not found
bundle update
-
Build errors
bundle exec jekyll build --verbose
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
This project is open source and available under the MIT License.
If you have questions or need help:
- Open an issue on GitHub
- Check the documentation
- Join the Jekyll community
Happy blogging! π
Here's the .gitignore
file you should create:
# Jekyll build output
_site/
.sass-cache/
.jekyll-cache/
.jekyll-metadata
# Ruby dependencies
.bundle/
vendor/
# OS generated files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
# IDE files
.vscode/
.idea/
*.swp
*.swo
*~
# Logs
*.log
# Temporary files
*.tmp
*.temp
# Environment files
.env
.env.local
.env.*.local
# Node modules (if using any Node.js tools)
node_modules/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Backup files
*.bak
*.backup
β Source files (always commit):
_config.yml
- Site configuration_layouts/
- Page layouts_includes/
- Reusable components_posts/
- Blog postsassets/
- Source stylesheets and imagesindex.html
- Homepageabout.md
- About pageGemfile
- Ruby dependenciesREADME.md
- Documentation.gitignore
- Git ignore rules
β Never commit these:
_site/
- Generated HTML (Jekyll builds this).sass-cache/
- Sass compilation cache.jekyll-cache/
- Jekyll build cache.bundle/
- Bundler cachevendor/
- Ruby gemsGemfile.lock
- Lock file (controversial, but generally not needed for Jekyll sites).DS_Store
- macOS system files- IDE configuration files
- Log files
- Environment files
_site/
- This is generated by Jekyll and should be rebuilt on each deployment- Cache files - These are temporary and machine-specific
- Dependencies - Should be installed fresh on each deployment
- System files - Not relevant to your project
-
Local development:
bundle exec jekyll serve
-
Commit source files:
git add . git commit -m "Update blog content" git push origin main
-
GitHub Pages automatically:
- Builds your site from source
- Ignores
_site/
and other generated files - Deploys the built version
This setup ensures your repository stays clean with only source code, while GitHub Pages handles the build process automatically!