Academic portfolio website built with Jekyll and React. Hosted on GitHub Pages.
- Static site generation with Jekyll
- React components for interactive elements
- Catppuccin Mocha color scheme
- GitHub Pages deployment
- Responsive design
- Jekyll: Static site generator
- React 18: Interactive UI components
- Webpack: JavaScript bundling
- SCSS: Styling with variables and mixins
- GitHub Pages: Free hosting
- Ruby (2.7 or higher)
- Node.js (16 or higher)
- Bundler
- npm
-
Clone the repository
git clone https://github.com/william-goode/william-goode.github.io.git cd william-goode.github.io -
Install Ruby dependencies
bundle install
-
Install Node dependencies
npm install
-
Build React components
npm run build
-
Serve the site locally
npm run serve
The site will be available at http://localhost:4000
To automatically rebuild React components as you work:
npm run devThis runs webpack in watch mode.
To serve the Jekyll site with live reload:
npm run jekyll:serveRun both webpack and Jekyll together:
# In terminal 1
npm run dev
# In terminal 2
npm run jekyll:serve├── _config.yml # Jekyll configuration
├── _layouts/ # Page layouts
├── _includes/ # Reusable components (nav, footer)
├── _posts/ # Blog articles
├── _data/
│ └── cv.yml # CV/resume data
├── src/ # React source code
│ ├── index.js
│ └── components/
├── assets/
│ ├── css/main.scss # Styles
│ ├── js/components.js # Webpack output (generated)
│ ├── resumes/ # Served PDFs only (resume + CV); sources live elsewhere
│ ├── statements/ # Teaching, research, diversity statements
│ └── images/
├── index.html # Home page
├── about.md # About page
├── cv.html # CV / resume page
└── engineering.md # Engineering page
This repo serves assets/resumes/William_Goode_Resume.pdf and CV_current.pdf
but does not build them. The Markdown source, stylesheet, and all variants are
maintained in a private repo; to publish an update, copy the rebuilt PDF here
and commit it.
Edit _config.yml for site title, author name, email, and social links.
Edit _data/cv.yml for education, experience, and skills.
Modify color variables in assets/css/main.scss to change the color scheme.
Change fonts in _layouts/default.html and assets/css/main.scss.
Create files in _posts/ with format YYYY-MM-DD-title.md.
- Build React components:
npm run build - Commit built files:
git add assets/js/components.js && git commit -m "Build React components" - Push to GitHub:
git push origin main
GitHub Pages will build and deploy the Jekyll site automatically.
- Create component in
src/components/YourComponent.jsx - Export in
src/index.js:window.YourComponent = YourComponent - Mount in Jekyll page using
ReactDOM.createRootandReact.createElement
- Run
npm run build - Check that
assets/js/components.jsexists - Check browser console for JavaScript errors
- Run
bundle install --path vendor/bundle - Verify front matter syntax in posts
- Check
_config.ymlis valid YAML
- Check SCSS syntax
- Clear browser cache
- Verify
assets/css/main.scsshas front matter dashes (---)
- Jekyll 3.9.5
- React 18
- Catppuccin Mocha color palette
- Fonts: Inter and Outfit from Google Fonts