# Minimal Resume is a Jekyll theme that keeps the HTML out of your way

> Minimal Resume is a single page Jekyll theme for a developer resume, with a data driven expertise section, a Particle.js animated header, JSON-LD structured data, self-hosted icons and a Docker preview that needs no Ruby or Node installed. It suits someone publishing a personal CV, and the build pipeline compiles Sass and JavaScript before Jekyll runs.

**murraco/jekyll-theme-minimal-resume** — Simple Jekyll theme for a minimal resume website: https://jekyll-theme-minimal-resume.netlify.app

- Repository: https://github.com/murraco/jekyll-theme-minimal-resume
- Website: https://jekyll-theme-minimal-resume.netlify.app
- Stars: 554 · Forks: 596
- Language: SCSS
- License: MIT
- Published: 2026-10-22 · Updated: 2026-10-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/murraco-jekyll-theme-minimal-resume

## What the theme does and does not include

Minimal Resume is described as a clean, single-page resume theme built with Jekyll, designed for developers who want a professional minimal resume without the bloat. The feature list is short and specific. There is a single-page layout with smooth scrolling, a Particle.js animated header, a data-driven expertise section that needs no HTML editing, a responsive design that is mobile-first, social and SEO meta tags with JSON-LD structured data, Sass-based styling with simple color customization, Docker support for a quick preview, and deployment to GitHub Pages, Netlify or any static host. The stack section explains the two decisions that shape everything else. The site generator is Jekyll 3.10 through the github-pages gem, so what builds locally is what GitHub Pages builds, and the content comes from _config.yml and YAML data files rather than from hardcoded HTML. There is no front-end framework and no jQuery, with particles.js drawing the animated hero background and sweet-scroll handling anchor scrolling.

## The file layout tells you where to edit

The README documents the whole tree, and it is the clearest guide to the theme. The root holds _config.yml for site and user settings such as name, title, bio and social handles, and index.html as the entry page where the layout does the work. The _data directory holds expertise.yml with the What I Do panels, their titles, copy and Devicon icon names, and stats.yml which is an optional stat band disabled by default in the layout. The _includes directory has head.html with meta tags, Open Graph and JSON-LD, header.html for the hero, about.html which renders the expertise data, stats.html which renders the stats data, and footer.html. The _layouts directory has a single default.html that assembles the includes. The src directory holds the sources you edit, with a styles/ subdirectory of Sass partials plus main.scss, js/app.js with the particles.js and sweet-scroll configuration, and fonts/ holding the Font Awesome and Devicon webfonts. And the assets directory is the Gulp output, committed so GitHub Pages can serve it, with a note that assets is generated and that editing src and running npm run build is the only way to change it, otherwise the changes are overwritten on the next build.

## Icons are self-hosted, so the page makes no third party requests

The icons decision is worth calling out because it is unusual for a personal theme. Font Awesome is used for the social links and Devicon for the technology logos in the expertise grid, and both are self-hosted from assets/fonts, so the page makes no third-party requests. For a resume site that is a privacy and performance decision with a real cost, since the fonts have to be committed to the repository and updated by hand, but it also means the page renders identically offline and does not leak a visitor to a CDN. The styling follows the same pattern of local control. Sass is organised with one partial per section, named for the header, about, stats and footer, and the colors and breakpoints live in a single variables file at src/styles/_vars.scss. The README describes that as simple color customization, and the practical consequence is that a fork changes two kinds of file, YAML for content and a variables file for color.

## The build is Gulp first and Jekyll second

The build order is the part that trips people up. Styles and scripts are built from src/ into assets/ with Gulp, and Jekyll then copies them into _site. The npm scripts reflect that, with build running gulp build, build:assets running gulp buildAssets and serve running gulp. The dependencies list the toolchain, with gulp 5, gulp-concat for joining, gulp-csso for CSS minification, gulp-plumber to keep the watcher alive when a compile fails, gulp-sass and sass 1.102 for the styles, and gulp-uglify for the JavaScript. A one-off build is npm run build, and the live reload path is npm run serve, which watches both the styles and the scripts and reloads the browser. The README also gives the fallback for when you do not want the asset watcher, running npm run build and then bundle exec jekyll serve. There is no test suite, and the package says so plainly, with the test script echoing that there are no automated tests and exiting successfully.

## Local development, and the Ruby version that matters

The setup asks for Ruby 3.3.6, pinned in the .ruby-version file, along with Bundler and Node.js 20 or newer, and then you fork the repository, clone your fork and edit _config.yml. The Ruby pin is not decoration, because the repository pins Ruby 3.3.6 so that Bundler can resolve github-pages, and with rbenv or asdf the install command picks it up automatically. The bundle step is then:

```bash
bundle install
```

The Gemfile.lock is committed and the Docker image installs from it too, so local builds, container builds and GitHub Pages all resolve the same gem versions. The README also names the specific failure mode, that if bundle complains it cannot find the bundler version the lockfile was built with, you install it with a version-specific gem install or run a bundle update for the bundler only, and that running against the system Ruby instead of the pinned one is the usual cause. The node side is npm install, and the whole sequence is then npm run build followed by npm run serve. The rationale for the pins is simple enough to state plainly: this is a theme that has to build in three places, so it cannot afford to resolve dependencies differently in each.

## Docker as a preview, and its two modes

The Docker path exists so you can try the theme without installing Ruby or Node, and it has two distinct behaviours. The quick preview bakes the site into the image, so you run docker compose up --build and open http://localhost:4000, and the site is fixed until you restart the container. The development variant bind-mounts the repository and adds the dev compose file, so edits to _config.yml, _includes and src/ apply after you restart the container, because the entrypoint runs bundle install, npm ci and npm run build again. Named volumes cache the gems and node_modules so the host tree does not need a local node_modules. Two variations are documented for building only, writing the output to the host by mounting a volume at the destination, and the compose file itself is minimal, one service named site built from the Dockerfile with port 4000 mapped to 4000. The port is configurable through a JEKYLL_PORT variable, with the note that if you change it you have to map it in the compose file as well, which is a small trap.

## Conclusion

Adopt Minimal Resume if you want a clean one page CV that you host yourself, with the content in YAML rather than in templates, and you are willing to run the Gulp step that compiles the styles and scripts. Do not adopt it if you want a multi page site with a blog or a tag system, since the theme is a single page layout by design. Verify first that you have the pinned Ruby version, since the Gemfile lock is committed and the project states that a mismatched bundler or system Ruby is the usual cause of install failures, and that the assets directory is regenerated rather than edited by hand.

## FAQ

### What is the Minimal Resume Jekyll theme?

It is a clean, single-page resume theme built with Jekyll, designed for developers who want a professional minimal resume without the bloat. It has a single page layout with smooth scrolling, a Particle.js animated header, a data-driven expertise section, a mobile-first responsive design, social and SEO meta tags with JSON-LD structured data, and Sass styling with simple color customization.

### How do I set up the theme locally?

Install Ruby 3.3.6, which is pinned in the .ruby-version file, plus Bundler and Node.js 20 or newer, then run bundle install, npm install, npm run build for a one-off build and npm run serve for live reload. The Gemfile.lock is committed so local, container and GitHub Pages builds resolve the same gem versions.

### Can I preview the theme without installing Ruby or Node?

Yes. Docker Compose is included, and docker compose up --build serves the site at http://localhost:4000 with the site baked into the image, so you restart the container to pick up changes. The development variant bind-mounts the repository and reruns bundle install, npm ci and npm run build on restart, with named volumes caching the gems and node modules.

### Where do I edit the content and the styles?

Content goes in _config.yml for site and user settings, and in the _data directory, with expertise.yml holding the What I Do panels and stats.yml the optional stat band. Colors and breakpoints live in src/styles/_vars.scss, and the assets directory is Gulp output, so changes there are overwritten on the next build.

## Sources

- [Issues](https://github.com/murraco/jekyll-theme-minimal-resume/issues)
- [License: MIT](https://github.com/murraco/jekyll-theme-minimal-resume/blob/master/LICENSE)
- [murraco/jekyll-theme-minimal-resume on GitHub](https://github.com/murraco/jekyll-theme-minimal-resume)
- [Project website](https://jekyll-theme-minimal-resume.netlify.app)
- [README](https://github.com/murraco/jekyll-theme-minimal-resume/blob/master/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/murraco-jekyll-theme-minimal-resume
