Personal portfolio site built with Jekyll and hosted on GitHub Pages.
Requirements: Ruby (3.x), Bundler.
gem install bundler
bundle installDo not open files in _site/ directly in your browser — paths like /assets/css/style.css only work over HTTP.
Use the local dev server instead:
bundle exec jekyll serve --livereload --config _config.yml,_config_dev.ymlOn Windows you can double-click or run serve.bat.
Then open http://127.0.0.1:4000 (not a file:// path).
_config_dev.yml sets url to http://127.0.0.1:4000 so SEO/canonical tags match local preview. Production builds use the main _config.yml only.
bundle exec jekyll buildOutput goes to _site/. To preview a build folder, serve it over HTTP:
cd _site
python -m http.server 4000Then open http://127.0.0.1:4000
After the first bundle install, commit the generated Gemfile.lock for reproducible builds.
Create a markdown file in _projects/ with front matter. Set published: true to show it on the Projects page.
Example:
---
title: My Project
category: Browser Extensions
image: https://example.com/logo.png
excerpt: Short description shown on the project card.
links:
- label: GitHub
url: https://github.com/JRScott812/my-project
style: primary
- label: Live demo
url: https://example.com
style: secondary
published: true
tags:
- javascript
- chrome-extension
---
Optional longer description for the project detail page.| Field | Required | Description |
|---|---|---|
title |
Yes | Project name |
category |
Yes | Section heading on the Projects page (e.g. Browser Extensions, Websites/Web Apps, Misc) |
excerpt |
Yes | Short summary for cards and SEO |
image |
No | Logo or preview URL, or a local path like /assets/images/my-logo.svg |
links |
No | List of { label, url, style } buttons (style: primary or secondary) |
published |
No | Set to true to include on the site (defaults to hidden if omitted) |
tags |
No | Optional tags shown on the project detail page |
Projects appear grouped by category on /projects/. Each file also gets a detail page at /projects/<filename>/.
- Production URL:
https://jrscott812.github.io(set in_config.yml) - SEO tags via
jekyll-seo-tag; sitemap viajekyll-sitemap - Sitemap URL:
https://jrscott812.github.io/sitemap.xml(generated at build — not committed to the repo) robots.txtpoints crawlers to that sitemap
The sitemap is built automatically and includes all pages plus each project in _projects/. To preview locally:
bundle exec jekyll build
# open _site/sitemap.xmlThe site deploys via GitHub Actions using Node 24–compatible action versions (checkout@v6, upload-pages-artifact@v5, deploy-pages@v5).
One-time setup (if you still use the legacy “Deploy from branch” builder):
- Push this repo to
main - Go to Settings → Pages → Build and deployment
- Set Source to GitHub Actions
- Select the Deploy Jekyll site to Pages workflow
That replaces GitHub’s built-in pages-build-deployment workflow, which still uses Node 20 actions and triggers the deprecation warning.