Website Setup Documentation
Site Overview
This website now uses Jekyll (static site generator) to manage essays and pages.
Tech Stack:
- Jekyll 4.3 (GitHub Pages native support)
- Markdown for essay content
- Liquid templating
- Vanilla JavaScript for search/filter
Key Directories:
_essays/- Essay collection (auto-generated from Medium exports)_layouts/- Page templates_includes/- Reusable components (header, footer)assets/images/essays/- Essay images
Adding Social Links
To add your social media profiles, update the following files:
Files to Edit
- index.html - Contact section (near bottom)
- about.html - Connect section (near bottom)
- Optional: Add a footer with social links in all pages
Example Format
Add links in the contact/connect sections:
<p>Email: <a href="mailto:jzachariah@binghamton.edu">jzachariah@binghamton.edu</a></p>
<p>
<a href="https://linkedin.com/in/yourusername" target="_blank">LinkedIn</a> |
<a href="https://github.com/joelvzach" target="_blank">GitHub</a> |
<a href="https://twitter.com/joelvzach" target="_blank">Twitter</a>
</p>
Recommended Links
- LinkedIn:
https://linkedin.com/in/yourusername - GitHub:
https://github.com/joelvzach - Twitter/X:
https://twitter.com/joelvzach - Google Scholar: (if applicable)
- ResearchGate: (if applicable)
Adding New Essays
Option 1: Manual Creation
- Create a new Markdown file:
_essays/YYYY-MM-DD-slug.md - Add front matter at the top:
---
layout: essay
title: "Your Essay Title"
subtitle: "Optional subtitle"
date: 2026-01-01 00:00:00 +0000
categories: [general]
read_time: 5
---
- Write content in Markdown below front matter
- Essay automatically appears on
essays.htmllisting
Option 2: Convert from Medium Export
Use the conversion script:
python3 convert_medium_to_jekyll.py --limit 10
See ../docs/ESSAY_MIGRATION.md for full details.
Adding New Portfolio Projects
- Add a new
.carddiv inportfolio.html - Include title, meta (company/date), and bullet points
Project Card Template
<div class="card">
<h3>Project Title</h3>
<div class="meta">Company/Organization | Date Range</div>
<ul>
<li>Achievement or responsibility</li>
<li>Another achievement</li>
</ul>
</div>
Site Structure
joelvzach.github.io/
├── _config.yml (Jekyll configuration)
├── Gemfile (Ruby dependencies)
├── _layouts/
│ ├── default.html (Base template)
│ └── essay.html (Essay template)
├── _includes/
│ ├── header.html (Navigation)
│ └── footer.html (Footer)
├── _essays/ (Essay collection - auto-generated)
│ └── YYYY-MM-DD-slug.md (Individual essays)
├── index.html (Home page)
├── about.html (About page)
├── portfolio.html (Portfolio/Projects page)
├── essays.html (Essays list with search/filter)
├── resume.html (Full resume page)
├── CNAME (Domain: joelvzach.com)
├── convert_medium_to_jekyll.py (Conversion script)
├── docs/
│ ├── SETUP.md (This file)
│ ├── PORKBUN_DNS.md (DNS setup)
│ └── ESSAY_MIGRATION.md (Essay conversion guide)
└── assets/
├── css/
│ └── style.css (LaTeX-inspired stylesheet)
├── js/
│ └── main.js (Navigation + search)
└── images/
└── essays/ (Essay images)
Deployment Workflow
For Regular Updates (no Jekyll changes)
- Make changes locally
- Commit:
git add . && git commit -m "description" - Push:
git push origin main - GitHub Pages auto-deploys (~1-2 minutes)
- Visit
joelvzach.comto verify
For Jekyll/Essay Updates
- Convert essays if needed:
python3 convert_medium_to_jekyll.py - Stage all changes:
git add . - Commit:
git commit -m "Add migrated essays" - Push:
git push origin main - GitHub Pages builds with Jekyll (~2-3 minutes)
- Visit
joelvzach.com/essaysto verify
Note: First push with Jekyll may take longer as GitHub builds the site.
Porkbun DNS Configuration
See PORKBUN_DNS.md for DNS setup instructions.