Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 86 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# Copilot Instructions for pjsoni.github.io

## Project Overview
This is a **Jekyll-based static blog/portfolio site** hosted on GitHub Pages, built with the Minimal Mistakes theme. It showcases a personal tech portfolio with blog posts spanning from 2009 onwards and professional pages (about, resume, blog). The site is configured for custom domain hosting at `pravesh.me`.

## Key Architecture

### Core Structure
- **Build System**: Jekyll 4.3.3 with Ruby/Bundler - run `bundle exec jekyll serve` to build/preview
- **Theme**: Minimal Mistakes (local customization layer over remote theme)
- **Content Types**:
- **Posts** (`_posts/`): Blog articles with YAML frontmatter including `layout: single`, tags, and categories
- **Pages** (`_pages/`): Static pages (about.md, blog.md, resume.md, 404.md) with `permalink` in frontmatter
- **Navigation**: Defined in `_data/navigation.yml` - add new main navigation items in the `main:` section
- **Drafts** (`_drafts/`): Unpublished posts (not built by default)

### Content Configuration
- `_config.yml`: Site-wide settings (title, URL, locale, comments provider, etc.)
- `_data/navigation.yml`: Main navigation menu
- `_data/ui-text.yml`: UI labels and strings for translations

### Template & Styling Layers
- **Layouts** (`_layouts/`): Post/page templates (single.html, archive.html, homepage.html, etc.)
- **Includes** (`_includes/`): Reusable components (masthead, footer, sidebar, social-share, etc.)
- **Styling** (`_sass/minimal-mistakes/`): Scoped SCSS modules (animations, archive, base, navigation, sidebar, etc.) organized by component

## Development Workflow

### Local Setup & Running
```bash
bundle install # Install gem dependencies
bundle exec jekyll serve # Build and run locally on http://localhost:4000
```
Changes to markdown files auto-refresh; changes to `_config.yml` require server restart.

### Publishing Content
1. **Blog Posts**: Add `.md` file to `_posts/` with filename format `YYYY-MM-DD-title.md`
2. **Pages**: Add `.md` to `_pages/` with `permalink` in frontmatter
3. **Frontmatter Pattern**:
```yaml
---
layout: single
title: "Your Title"
tags: [tag1, tag2]
category: [blog]
---
```

## Project-Specific Conventions

### Content Organization
- **Taxonomy**: Posts use `tags:` (multiple) and `category:` (typically single) for classification
- **Navigation**: Edit `_data/navigation.yml` to update main menu links - don't hardcode routes
- **Layout Choices**: Single blog posts use `layout: single`, multi-item pages use `layout: archive` or `layout: posts`

### Styling & Theme Customization
- Theme skin set to `"air"` in `_config.yml` (options: air, aqua, contrast, dark, dirt, neon, mint, plum, sunrise)
- Custom SCSS placed in `_sass/minimal-mistakes/` - files are prefixed with `_` (e.g., `_archive.scss`)
- Component variables defined in `_variables.scss`; mixins in `_mixins.scss`

### Image Assets
- Images stored in `assets/images/`
- Relative paths in markdown: `/assets/images/filename.ext`
- Inline image styling supported: `{: .align-left}`, `{:width="180px"}`

## Common Tasks

| Task | Location/Pattern |
|------|------------------|
| Add blog post | Create `_posts/YYYY-MM-DD-title.md` with single layout |
| Update navigation menu | Edit `_data/navigation.yml` |
| Change site title/URL | Edit `_config.yml` |
| Modify page template | Edit `_layouts/` `.html` file |
| Add reusable component | Create `_includes/component-name.html` and use `{% include component-name.html %}` |
| Customize styling | Add/edit `_sass/minimal-mistakes/_component.scss` |
| Manage permalinks | Set `permalink: /custom-url.html` in page frontmatter |

## GitHub Pages Deployment
- Site is pushed to GitHub Pages (custom domain: pravesh.me via CNAME file)
- Uses Jekyll build process automatically
- Ensure `Gemfile` dependencies are compatible with GitHub Pages environment

## Notable Patterns
- **Image alignment**: Use Markdown image syntax with Jekyll classes: `![alt](/path/to/image.jpg){: .align-left}`
- **Collection display**: `_layouts/archive.html` groups posts by taxonomy (tag/category)
- **Comments**: Disabled for this site (`provider: false`); could enable via disqus/discourse by updating config
48 changes: 35 additions & 13 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,35 +1,57 @@
# General
# ============================================================================
# macOS system files
# ============================================================================
.DS_Store
.AppleDouble
.LSOverride

# Icon must end with two \r
Icon

# Thumbnails
._*

# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent

# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
Network\ Trash\ Folder
Temporary\ Items
.apdisk

# Ignore Jekyll files
# ============================================================================
# Jekyll build output and cache
# ============================================================================
_site/
.sass-cache/
.jekyll-cache/
.jekyll-metadata
# Ignore folders generated by Bundler

# ============================================================================
# Ruby bundle and dependencies
# ============================================================================
.bundle/
vendor/
Gemfile.lock

# ============================================================================
# IDE and editor configuration
# ============================================================================
.vscode/
.idea/
*.sublime-project
*.sublime-workspace

# ============================================================================
# Editor temporary files
# ============================================================================
*.swp
*.swo
*~

# ============================================================================
# Environment and configuration
# ============================================================================
.env
.env.local
*.log
36 changes: 2 additions & 34 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,36 +1,4 @@
source "https://rubygems.org"
# Hello! This is where you manage which Jekyll version is used to run.
# When you want to use a different version, change it below, save the
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
#
# bundle exec jekyll serve
#
# This will help ensure the proper Jekyll version is running.
# Happy Jekylling!
gem "jekyll", "~> 4.3.3"
# This is the default theme for new Jekyll sites. You may change this to anything you like.
gem "minima", "~> 2.5"
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
# uncomment the line below. To upgrade, run `bundle update github-pages`.
# gem "github-pages", group: :jekyll_plugins
# If you have any plugins, put them here!
group :jekyll_plugins do
gem "jekyll-feed", "~> 0.12"
end

# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
# and associated library.
platforms :mingw, :x64_mingw, :mswin, :jruby do
gem "tzinfo", ">= 1", "< 3"
gem "tzinfo-data"
end

# Performance-booster for watching directories on Windows
gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]

# Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem
# do not have a Java counterpart.
gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby]

gem "minimal-mistakes-jekyll"
gem "jekyll-archives"
gem "github-pages", group: :jekyll_plugins
gem "jekyll-include-cache", group: :jekyll_plugins
Loading