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).
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
See the result: sample 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:
- Duplicate one theme pair in
source/stylesheets/themes/. - Rename both files to
_theme-yourname.screen.scssand_theme-yourname.pdf.scss. - Update layout structure/styles in those files.
- Add
theme-yournametoAVAILABLE_THEMESinlib/resume_selection.rb. - Build with
./build_resume.bash --theme theme-yourname.
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.
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
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
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/).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:
- Headers
- Contact Info
- Links
- Summary
- Skills
- Jobs
- Education
- Certifications
- Projects
- Volunteering
- Languages
- Interests
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: developerThe 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 PDFThis 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: 48134links:
github: https://github.com/timothyf
linkedin: https://linkedin.com/in/timothyfisher/
twitter: http://twitter.com/tfishersummary:
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:
- Team Leadership & Management
- Microservices Architecture
- Amazon Web Services (AWS), Heroku, EngineYard
- Ruby, Rails, JavaScript, Node.js, React, ReactNative, Java, Swift, HTML, CSS- 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:
- 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