Dewayne VanHoozer

Dewayne VanHoozer - Personal Website

MadBomber Logo

This repository contains the source code for my professional website at madbomber.github.io.

Technologies Used

Project Structure

.
├── config/                 # Configuration files
│   └── initializers.rb     # Site settings (URL, timezone, etc.)
├── frontend/               # Frontend assets
│   ├── javascript/         # JS entry points
│   └── styles/             # CSS files
├── plugins/                # Custom Ruby plugins
├── scripts/                # Utility scripts
│   └── find_mkdocs_repos.rb  # Sync projects from GitHub
├── src/                    # Source content
│   ├── _components/        # Reusable ERB components
│   │   └── shared/         # Shared components (navbar, etc.)
│   ├── _data/              # Data files (YAML)
│   │   ├── site_metadata.yml
│   │   └── projects.yml    # Auto-generated project data
│   ├── _layouts/           # Page layouts
│   ├── _partials/          # Partial templates
│   ├── _posts/             # Blog posts
│   └── images/             # Static images
├── output/                 # Built site (gitignored)
├── Gemfile                 # Ruby dependencies
└── package.json            # Node dependencies

Local Development

Prerequisites

Setup

# Install Ruby dependencies
bundle install

# Install Node dependencies
npm install

Development Server

bin/bridgetown start

The site will be available at http://localhost:4000 with live reload enabled.

Build for Production

bin/bridgetown build

Output is written to the output/ directory.

Other Commands

# Run tests
bundle exec rake

# Build frontend assets only
bin/bridgetown frontend:build

# Clean build artifacts
bin/bridgetown clean

Configuration

Site Metadata

Edit src/_data/site_metadata.yml to update:

Site Settings

Edit config/initializers.rb to configure:

Adding Content

Pages

Create .md or .erb files in src/:

---
layout: page
title: My Page
---

Page content here...

Blog Posts

Create files in src/_posts/ with the naming convention:

YYYY-MM-DD-title-slug.md

Components

Create reusable components in src/_components/:

  1. Ruby class: src/_components/shared/my_component.rb
  2. ERB template: src/_components/shared/my_component.erb

Updating Projects from GitHub

The Projects page is dynamically generated from data synced from GitHub repositories. The script scans all non-forked MadBomber repos that contain a mkdocs.yml file (indicating documented projects).

Sync Project Data

ruby scripts/find_mkdocs_repos.rb

This script:

  1. Fetches all non-forked repos from github.com/MadBomber
  2. Filters for repos containing mkdocs.yml
  3. Extracts project metadata (name, description, stars, language)
  4. Writes to src/_data/projects.yml

The Projects page (src/projects.erb) automatically renders cards for all projects in this data file, sorted by star count.

Requirements

Deployment

The site automatically deploys to GitHub Pages when changes are pushed to main via GitHub Actions (.github/workflows/bridgetown.yml).

Content Areas

Professional Focus

Open Source Contributions

Contact

License

Content is copyright Dewayne VanHoozer. Site code is MIT licensed.