← Back to projects

DEVOPS CASE STUDY

Gillpad Deployment Pipeline

A static portfolio deployment pipeline built with GitHub and Cloudflare Pages. The project focused on creating a clean source-controlled workflow for publishing a professional technical portfolio, connecting a custom domain, validating deployments, and using the site itself as a live proof-of-work platform.

Status: Operational Type: Web Deployment Role: Builder / Operator Focus: GitHub and Cloudflare Pages Context: Personal Project

The portfolio needed a reliable deployment workflow, not a fragile manual upload.

A professional portfolio needs to be easy to update, reliable to deploy, and simple to validate. The goal was to avoid a fragile manually uploaded site and instead build a repeatable workflow where changes are made in GitHub, deployed automatically through Cloudflare Pages, and served through a custom domain.

The project also needed to separate the public portfolio from private home lab access. The public site should live on a safe static hosting path, while the lab itself remains behind separate access controls and Zero Trust architecture.

GitHub acts as the source of truth and Cloudflare Pages handles deployment.

flowchart TD
  EDIT[Edit HTML and CSS] --> GIT[Commit to GitHub Main Branch]
  GIT --> CF[Cloudflare Pages Deployment]
  CF --> PREVIEW[Preview or Production Deploy]
  PREVIEW --> DOMAIN[Custom Domain: gillpad.dev]
  DOMAIN --> USER[Public Visitor]
  CF --> VALIDATE[Deployment Validation]
  VALIDATE --> FIX[Fix Links, Cache, or Paths]
  FIX --> EDIT
        

Public site path

The portfolio is served through Cloudflare Pages and a custom domain, keeping the public presentation layer simple, fast, and easy to validate.

Private lab separation

The home lab tunnel is not part of the public website path. The site showcases the lab without exposing private lab infrastructure.

The site became a repeatable deployment workflow.

GitHub source control

Created a GitHub repository to act as the source of truth for the portfolio. Site content, project pages, assets, and styling are managed through versioned files instead of manual one-off uploads.

Cloudflare Pages deployment

Connected the GitHub repository to Cloudflare Pages so updates to the main branch automatically deploy to the public site.

Custom domain configuration

Configured the root domain and www hostname to route to the Cloudflare Pages project, replacing old parking behavior with a clean public entry point.

Static site structure

Organized the site around reusable static files: a homepage, stylesheet, asset directory, and project pages under a dedicated projects directory.

Case study routing

Built individual project pages and linked them from homepage project cards. A shared coming-soon page provides a clean backend for unfinished case studies.

Cache and deployment troubleshooting

Worked through deployment timing, stale content, broken asset paths, and browser or Cloudflare cache behavior while validating that GitHub changes appeared correctly on the live domain.

The repository structure keeps future updates simple.

Deployment was validated through live routes, assets, and domain behavior.

Deployment validation

Confirmed Cloudflare Pages completed successful production deployments after GitHub commits.

Domain validation

Confirmed both the root domain and www hostname pointed to the portfolio instead of parked or stale content.

Link validation

Checked homepage navigation, project card links, resume access, and case-study routing.

Asset validation

Validated that static assets such as PDF resume files and project visuals were placed in the correct paths and referenced correctly from HTML.

Separation validation

Confirmed that the public site is served through Cloudflare Pages and does not depend on the private home lab tunnel.

Iteration validation

Used repeated commits and redeployments to confirm the workflow was practical for ongoing portfolio updates.

The website became part of the proof-of-work platform.

The result is a source-controlled public portfolio that can be updated quickly and deployed reliably. The deployment pipeline makes the website itself part of the portfolio: it demonstrates GitHub workflow, static hosting, DNS management, Cloudflare Pages deployment, troubleshooting, and iterative development.

The project also created a reusable framework for future technical case studies. New projects can be added by creating an HTML page under the projects directory, linking it from the homepage, and allowing Cloudflare Pages to deploy the update.

A simple static deployment pipeline is enough when it is clean and repeatable.

Static hosting is enough

A portfolio does not need a complex backend to be useful. Static HTML, CSS, GitHub, and Cloudflare Pages are enough for a fast, clean, reliable professional site.

GitHub should be the source of truth

Managing the site through GitHub makes changes easier to track, revert, and deploy.

DNS matters

A working site still needs correct DNS, custom domain configuration, and SSL validation before it feels finished.

Cache issues are part of deployment

Broken-looking changes are not always code problems. Sometimes the issue is stale browser cache, deployment timing, or an old asset path.

Public and private should stay separate

The website should showcase the lab without exposing the lab. Cloudflare Pages provides a safe public presentation layer, while private lab services remain behind separate access controls.

Reusable structure speeds up future work

Once the homepage, shared CSS, and case-study pattern existed, new project pages could be added quickly and consistently.

A repeatable publishing workflow for technical proof of work.

This project established a GitHub-backed deployment pipeline for a public technical portfolio using Cloudflare Pages, custom DNS, static HTML/CSS, project case-study routing, hosted assets, and deployment validation workflows.

The site provides a clean public proof-of-work platform while remaining separate from private lab infrastructure. New case studies can be added through the same repeatable workflow: create a project page, link it from the homepage, commit to GitHub, validate the Cloudflare deployment, and test the live route.