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/ # Resume Markdown source + built PDF
│ ├── statements/ # Teaching, research, diversity statements
│ └── images/
├── journal/ # Weekly work journal (encrypted)
├── index.html # Home page
├── about.md # About page
├── cv.html # CV / resume page
└── engineering.md # Engineering page
assets/resumes/William_Goode_Resume.md is the source. To rebuild the served
PDF after editing:
npm run resume:buildCommit William_Goode_Resume.pdf alongside the .md change.
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 master
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