Skip to content

timothyf/resume-builder

Repository files navigation

Resume Builder

Resume Builder is an HTML and PDF resume builder made in Ruby with Middleman. It lets you keep resume content in YAML files and render it as HTML for the web and as PDF-ready HTML for download/printing.

It has the following features:

  • Separation between content and style, all your resume content is a YAML file.
  • Supports 13 different resume section types
  • Can optionally include a gravatar photo
  • Markdown/HTML for formatting of the longer paragraphs.
  • You can preview your changes with Middleman's included server (with livereload).

Installation

If you forked to your own repo:

 git clone https://github.com/<yourusername>/resume-builder.git
 cd resume-builder

Otherwise:

 git clone https://github.com/timothyf/resume-builder.git
 cd resume-builder

Install Ruby 3.4.9 with RVM and use the project gemset:

 rvm install 3.4.9
 rvm use 3.4.9@resume --create

Install all dependencies:

 bundle install

Preview

See the result: sample resume.

Usage

Build your resume

Build the static version of your resume

bundle exec middleman build

Or use the helper script:

./build_resume.bash

Optional profile override:

./build_resume.bash --resume-user timothyfisher --resume-name resume_dev_refined

Optional theme override:

./build_resume.bash --theme theme-fern

You can also use environment variables:

ACTIVE_RESUME_USER=timothyfisher ACTIVE_RESUME_NAME=resume_dev_refined ./build_resume.bash
ACTIVE_RESUME_THEME=theme-orange ./build_resume.bash

View current configured and effective active resume selection:

./show_active_resume.bash

With override preview:

ACTIVE_RESUME_USER=timothyfisher ACTIVE_RESUME_NAME=resume_main_mgr ./show_active_resume.bash

Available themes:

theme-default, theme-fern, theme-grey, theme-orange, theme-tapestry, theme-tradewind

Theme bundles are now full layout/style sets (not color-only overlays). Each theme has separate screen and PDF stylesheet bundles:

source/stylesheets/themes/_theme-default.screen.scss
source/stylesheets/themes/_theme-default.pdf.scss
...

To create a new complete layout theme:

  1. Duplicate one theme pair in source/stylesheets/themes/.
  2. Rename both files to _theme-yourname.screen.scss and _theme-yourname.pdf.scss.
  3. Update layout structure/styles in those files.
  4. Add theme-yourname to AVAILABLE_THEMES in lib/resume_selection.rb.
  5. Build with ./build_resume.bash --theme theme-yourname.

Deploy your resume

bundle exec middleman deploy

Or:

./deploy_resume.bash

Optional profile override:

./deploy_resume.bash --resume-user timothyfisher --resume-name resume_dev_refined

Optional theme override:

./deploy_resume.bash --theme theme-fern

Upload it to a GitHub page. Your resume will be available at http://yourusername.github.com/resume.

Launch the preview server:

bundle exec middleman

You can preview your resume at http://localhost:4567/

When using RVM, entering the project directory can pick up .ruby-version and .ruby-gemset and use ruby-3.4.9@resume.

The helper scripts resolve bundle from your PATH by default. If needed, override with:

BUNDLE_BIN=/absolute/path/to/bundle ./build_resume.bash

Testing

Install test dependencies:

bundle install

Run unit tests:

bundle exec rspec spec/lib

Run shell script tests:

./spec/shell/run_shell_tests.bash

Run all tests (integration test is skipped by default):

bundle exec rspec

Run integration smoke test:

RUN_INTEGRATION=1 bundle exec rspec spec/integration/build_smoke_spec.rb

Resume instructions

To create/update your resume, edit data/active_resume.yml and the selected resume file under data/<user>/ (for example data/timothyfisher/resume_dev_refined.yml). All keys with a desc: | header can be Markdown formatted.

Here is what it looks like:

contact_info:
    name: Jonathan Doe
    shortdesc: Web Designer, Director
    email: example@example.com
    phone: (313) - 867-5309
    address:
        - 123 Fake Street
        - City, Country
    desc: |
        You can put Markdown in here [like this](http://daringfireball.net/projects/markdown/).

Sections

Here is a description of each of the currently supported sections of a resume. A section is a content component that can be included in the resume YAML data file.

The following section types are currently supported:

  • PDF
  • Headers
  • Contact Info
  • Links
  • Summary
  • Skills
  • Jobs
  • Education
  • Certifications
  • Projects
  • Volunteering
  • Languages
  • Interests

PDF

This project uses generatePdf.rb to generate a PDF via the FreeConvert API.

Run it with:

ruby generatePdf.rb

Common environment overrides supported by the script:

FREECONVERT_SOURCE_URL=https://resume.timothyfisher.com/pdf.html
FREECONVERT_OUTPUT_PATH=build/TimothyFisherResume.pdf
FREECONVERT_POLL_INTERVAL_SECONDS=5
FREECONVERT_MAX_POLLS=120

Note: generatePdf.rb currently contains an Authorization header placeholder. Set your API token there before running the script.

The PDF section is used to describe details of the resume PDF that will be generated.

pdf:
  filename: TimothyFisher-Resume
  useicons: true
  role: developer

Headers

The headers section allows you to specify the names of sections that will be used within the resume. For example, given the headers section shown below, the profile section will be labeled as 'Summary' and the jobs section will be labeled as "Experience".

headers:
    profile: Summary
    jobs: Experience
    education: Education
    skills: Skills
    download: Download PDF

Contact Info

This section is used to provide basic contact info for the resume user.

contact_info:
    name: Timothy Fisher
    photo: false
    email: timothyf@gmail.com
    phone: (555) 555-1234
    address:
        street: 555 Springwells
        city: Detroit
        state: MI
        postal_code: 48134

Links

links:
    github: https://github.com/timothyf
    linkedin: https://linkedin.com/in/timothyfisher/
    twitter: http://twitter.com/tfisher

Summary

summary:
  developer:
    I am a passionate developer and leader with nearly 30 years of industry experience in roles that include
    both hands-on and leadership positions across organizations that range from small startups to large enterprises.
    ...

  leader:
    I am a passionate developer and leader with 29 years of software development experience in roles
    including Chief Technology Officer, VP of Engineering, Chief Architect, and Director of Mobile Development,
    along with many years of hands-on development experience.
    ...

Skills

skills:
    - Team Leadership & Management
    - Microservices Architecture
    - Amazon Web Services (AWS), Heroku, EngineYard
    - Ruby, Rails, JavaScript, Node.js, React, ReactNative, Java, Swift, HTML, CSS

Jobs

- title: Senior Java Architect
  company: LogicaCMG
  brief: false
  include: brief
  location:
    city: Southfield
    state: MI
  dates:
      start: 2003, February
      end: 2006, May
  desc: |
    Worked on a Web-based single login project for Ford Motor Company. Responsibilities include assisting with
    architecture, analysis, design, coding, and testing. Environment consisted of Websphere Application Server
    ...

- title: Development Team Lead
  company: MedCharge
  brief: false
  location:
    city: Ann Arbor
    state: MI
  dates:
      start: 2002, February
      end: 2003, January
  desc: |
    Led the J2EE development team at MedCharge, a startup whose product was a health care application
    used within the University of Michigan Medical Center. The product allows hospital staff to capture all
    ...

Education

education:
    - name: University of Michigan
      degree: B.S. Electrical Engineering
      dates:
          start: Sept 1986
          end: May 1991

    - name: Capella University
      degree: M.S. Education
      dates:
          start: Sept 2001
          end: May 2003

Certifications

Projects

Volunteering

Languages

Interests

About

Resume builder built in Ruby using Middleman. Generates HTML and PDF resume views from resume data stored as YAML.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages