jsonresume-theme-engineering-leader 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/dependabot.yml +11 -0
- package/.github/workflows/publish.yml +39 -0
- package/.vscode/launch.json +19 -0
- package/.vscode/settings.json +3 -0
- package/README.md +54 -0
- package/example/example-resume.html +156 -0
- package/example/example-resume.json +156 -0
- package/example/resume.png +0 -0
- package/index.js +34 -0
- package/package.json +33 -0
- package/resume.hbs +180 -0
- package/style.css +129 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# To get started with Dependabot version updates, you'll need to specify which
|
|
2
|
+
# package ecosystems to update and where the package manifests are located.
|
|
3
|
+
# Please see the documentation for all configuration options:
|
|
4
|
+
# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
|
|
5
|
+
|
|
6
|
+
version: 2
|
|
7
|
+
updates:
|
|
8
|
+
- package-ecosystem: "npm"
|
|
9
|
+
directory: "/" # Location of package manifests
|
|
10
|
+
schedule:
|
|
11
|
+
interval: "weekly"
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
name: Publish to npm
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
tags:
|
|
8
|
+
- 'v*' # only publish on version tags like v1.0.0
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
publish:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
|
|
14
|
+
steps:
|
|
15
|
+
- name: Checkout code
|
|
16
|
+
uses: actions/checkout@v4
|
|
17
|
+
|
|
18
|
+
- name: Use Node.js
|
|
19
|
+
uses: actions/setup-node@v4
|
|
20
|
+
with:
|
|
21
|
+
node-version: 18
|
|
22
|
+
registry-url: 'https://registry.npmjs.org/'
|
|
23
|
+
|
|
24
|
+
- name: Install dependencies
|
|
25
|
+
run: npm ci
|
|
26
|
+
|
|
27
|
+
- name: Get build number
|
|
28
|
+
run: echo "BUILD_NUMBER=${{ github.run_number }}" >> $GITHUB_ENV
|
|
29
|
+
|
|
30
|
+
- name: Update package version
|
|
31
|
+
run: |
|
|
32
|
+
node -e "let pkg=require('./package.json'); \
|
|
33
|
+
pkg.version += '.${{ env.BUILD_NUMBER }}'; \
|
|
34
|
+
require('fs').writeFileSync('package.json', JSON.stringify(pkg, null, 2));"
|
|
35
|
+
|
|
36
|
+
- name: Publish to npm
|
|
37
|
+
run: npm publish
|
|
38
|
+
env:
|
|
39
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
// Use IntelliSense to learn about possible attributes.
|
|
3
|
+
// Hover to view descriptions of existing attributes.
|
|
4
|
+
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
|
5
|
+
"version": "0.2.0",
|
|
6
|
+
"configurations": [
|
|
7
|
+
{
|
|
8
|
+
"type": "node",
|
|
9
|
+
"request": "launch",
|
|
10
|
+
"name": "Export Resume",
|
|
11
|
+
"skipFiles": [
|
|
12
|
+
"<node_internals>/**"
|
|
13
|
+
],
|
|
14
|
+
"runtimeExecutable": "npm",
|
|
15
|
+
"runtimeArgs": ["run", "export"],
|
|
16
|
+
"console": "integratedTerminal"
|
|
17
|
+
}
|
|
18
|
+
]
|
|
19
|
+
}
|
package/README.md
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# jsonresume-theme-engineering [](https://www.npmjs.org/package/jsonresume-theme-engineering-leader)
|
|
2
|
+
|
|
3
|
+
This is the engineering theme for [JSON Resume](http://jsonresume.org/), based off of [jsonresume-theme-business-professional-compact](https://github.com/yechoorv/jsonresume-theme-business-professional-compact) and aims to implement the best practices for engineering resumes described in https://www.reddit.com/r/EngineeringResumes/wiki/index/. It is intended for [senior/staff level engineers](https://www.reddit.com/r/EngineeringResumes/wiki/index/#wiki_senior_engineers_and_above_.2810.2B_yoe.29).
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<kbd>
|
|
7
|
+
<img src="https://github.com/sjw7444/jsonresume-theme-engineering-leader/blob/main/example/resume.png?raw=true" alt="Richard Hendriks Resume"/>
|
|
8
|
+
</kbd>
|
|
9
|
+
</p>
|
|
10
|
+
|
|
11
|
+
## Getting started
|
|
12
|
+
|
|
13
|
+
To get started with theme development, this is what you'll need:
|
|
14
|
+
|
|
15
|
+
- [node.js](http://howtonode.org/how-to-install-nodejs)
|
|
16
|
+
- [npm](http://howtonode.org/introduction-to-npm)
|
|
17
|
+
|
|
18
|
+
If you're on Linux, you can simply run:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
sudo apt-get install nodejs npm
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Or if you're on OSX and got [Homebrew](http://brew.sh/) installed:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
brew install node
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Install npm packages
|
|
31
|
+
|
|
32
|
+
We need to install the dependencies:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npm install
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## PDF Export
|
|
39
|
+
|
|
40
|
+
To export your resume, you can run the following command below. This will automatically create a `resume.pdf` file within your current directory:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npm run export
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
If you want to see or modify and example, this project is configured to export a resume from the `example` folder just by running vscode f5.
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
resume export --resume example/resume-example.json --theme . example/resume-example.html
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## License
|
|
53
|
+
|
|
54
|
+
Available under [the MIT license](http://mths.be/mit).
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html>
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
|
|
6
|
+
<meta charset="utf-8">
|
|
7
|
+
<meta name="viewport" content="width=device-width, user-scalable=no, minimal-ui">
|
|
8
|
+
|
|
9
|
+
<title>Richard Hendriks</title>
|
|
10
|
+
|
|
11
|
+
<link rel="stylesheet" href="style.css" />
|
|
12
|
+
|
|
13
|
+
</head>
|
|
14
|
+
|
|
15
|
+
<body>
|
|
16
|
+
|
|
17
|
+
<div id="resume">
|
|
18
|
+
<section id="basics">
|
|
19
|
+
|
|
20
|
+
<h1>Richard Hendriks</h1>
|
|
21
|
+
|
|
22
|
+
<div class="contact centered">
|
|
23
|
+
Newell Road Palo Alto, CA
|
|
24
|
+
94303 US
|
|
25
|
+
</div>
|
|
26
|
+
|
|
27
|
+
<div class="contact centered">
|
|
28
|
+
<span>(912) 555-4321</span>
|
|
29
|
+
<span>|</span>
|
|
30
|
+
<span>richard.hendriks@piedpiper.com</span> </div>
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
</section>
|
|
35
|
+
|
|
36
|
+
<section id="work">
|
|
37
|
+
<h2>Experience</h2>
|
|
38
|
+
|
|
39
|
+
<div class="item">
|
|
40
|
+
<div class="item-header">
|
|
41
|
+
<h3 class="item-header-title">
|
|
42
|
+
Pied Piper,
|
|
43
|
+
|
|
44
|
+
</h3>
|
|
45
|
+
<div class="item-header-subtitle">
|
|
46
|
+
CEO/President
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
49
|
+
<div class="item-details">
|
|
50
|
+
<div class="date">
|
|
51
|
+
2014-04-13 -
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
54
|
+
<div class="clearfix"></div>
|
|
55
|
+
|
|
56
|
+
<p>Pied Piper is a multi-platform technology based on a proprietary universal compression algorithm that has consistently fielded high Weisman Scores™ that are not merely competitive, but approach the theoretical limit of lossless compression.</p>
|
|
57
|
+
|
|
58
|
+
<ul class="highlights">
|
|
59
|
+
<li>Build an algorithm for artist to detect if their music was violating copy right infringement laws</li>
|
|
60
|
+
<li>Successfully won <a href='https://techcrunch.com/event-type/disrupt/'>Techcrunch Disrupt</a></li>
|
|
61
|
+
<li>Optimized an algorithm that holds the current world record for Weisman Scores</li>
|
|
62
|
+
</ul>
|
|
63
|
+
</div>
|
|
64
|
+
|
|
65
|
+
<div class="item">
|
|
66
|
+
<div class="item-header">
|
|
67
|
+
<h3 class="item-header-title">
|
|
68
|
+
Hooli,
|
|
69
|
+
|
|
70
|
+
</h3>
|
|
71
|
+
<div class="item-header-subtitle">
|
|
72
|
+
Senior Software Engineer
|
|
73
|
+
</div>
|
|
74
|
+
</div>
|
|
75
|
+
<div class="item-details">
|
|
76
|
+
<div class="date">
|
|
77
|
+
2014-01-01 - 2014-04-06
|
|
78
|
+
</div>
|
|
79
|
+
</div>
|
|
80
|
+
<div class="clearfix"></div>
|
|
81
|
+
|
|
82
|
+
<p></p>
|
|
83
|
+
|
|
84
|
+
<ul class="highlights">
|
|
85
|
+
<li>Worked on optimizing the backend algorithms for <a href='http://www.hooli.xyz/'>Hooli</a></li>
|
|
86
|
+
</ul>
|
|
87
|
+
</div>
|
|
88
|
+
|
|
89
|
+
<div class="item">
|
|
90
|
+
<div class="item-header">
|
|
91
|
+
<h3 class="item-header-title">
|
|
92
|
+
Hooli,
|
|
93
|
+
|
|
94
|
+
</h3>
|
|
95
|
+
<div class="item-header-subtitle">
|
|
96
|
+
Software Engineer
|
|
97
|
+
</div>
|
|
98
|
+
</div>
|
|
99
|
+
<div class="item-details">
|
|
100
|
+
<div class="date">
|
|
101
|
+
2013-01-01 - 2014-01-01
|
|
102
|
+
</div>
|
|
103
|
+
</div>
|
|
104
|
+
<div class="clearfix"></div>
|
|
105
|
+
|
|
106
|
+
<p></p>
|
|
107
|
+
|
|
108
|
+
<ul class="highlights">
|
|
109
|
+
<li>Contributed bugfixes and smaller features for <a href='http://www.hooli.xyz/'>Hooli</a></li>
|
|
110
|
+
</ul>
|
|
111
|
+
</div>
|
|
112
|
+
</section>
|
|
113
|
+
|
|
114
|
+
<section id="education">
|
|
115
|
+
<h2>Education</h2>
|
|
116
|
+
|
|
117
|
+
<div class="item">
|
|
118
|
+
<div class="item-header">
|
|
119
|
+
<div class="item-header-title">
|
|
120
|
+
Stanford
|
|
121
|
+
|
|
122
|
+
<span class="location">
|
|
123
|
+
,
|
|
124
|
+
</span> </div>
|
|
125
|
+
<div class="item-header-subtitle">
|
|
126
|
+
<span class="degree">B.S, Computer Science</span>
|
|
127
|
+
</div>
|
|
128
|
+
</div>
|
|
129
|
+
|
|
130
|
+
<div class="clearfix"></div>
|
|
131
|
+
</div>
|
|
132
|
+
</section>
|
|
133
|
+
|
|
134
|
+
<section id="awards">
|
|
135
|
+
<h2>Awards & Recognitions</h2>
|
|
136
|
+
<ul class="item">
|
|
137
|
+
<li>
|
|
138
|
+
<strong>Digital Compression Pioneer Award</strong>: There is no spoon.
|
|
139
|
+
</li>
|
|
140
|
+
</ul>
|
|
141
|
+
</section>
|
|
142
|
+
|
|
143
|
+
<section id="skills">
|
|
144
|
+
<h2>Skills</h2>
|
|
145
|
+
<ul class="item">
|
|
146
|
+
<li>
|
|
147
|
+
<strong>Web Development</strong>: HTML, CSS, Javascript
|
|
148
|
+
</li>
|
|
149
|
+
<li>
|
|
150
|
+
<strong>Compression</strong>: Mpeg, MP4, GIF
|
|
151
|
+
</li>
|
|
152
|
+
</ul>
|
|
153
|
+
</section>
|
|
154
|
+
</body>
|
|
155
|
+
|
|
156
|
+
</html>
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
{
|
|
2
|
+
"basics": {
|
|
3
|
+
"name": "Richard Hendriks",
|
|
4
|
+
"label": "Programmer",
|
|
5
|
+
"picture": "http://www.piedpiper.com/app/themes/pied-piper/dist/images/richard.png",
|
|
6
|
+
"email": "richard.hendriks@piedpiper.com",
|
|
7
|
+
"phone": "(912) 555-4321",
|
|
8
|
+
"website": "http://piedpiper.com",
|
|
9
|
+
"summary": "Richard hails from <strong>Tulsa</strong>. He has earned degrees from the University of Oklahoma and Stanford. (Go Sooners and Cardinals!) Before starting Pied Piper, he worked for <a href='http://www.hooli.xyz/'>Hooli</a> as a part time software developer. While his work focuses on applied information theory, mostly optimizing lossless compression schema of both the length-limited and adaptive variants, his non-work interests range widely, everything from quantum computing to chaos theory. He could tell you about it, but THAT would NOT be a <em>“length-limited”</em> conversation!",
|
|
10
|
+
"location": {
|
|
11
|
+
"address": "Newell Road",
|
|
12
|
+
"postalCode": "94303",
|
|
13
|
+
"city": "Palo Alto",
|
|
14
|
+
"countryCode": "US",
|
|
15
|
+
"region": "CA"
|
|
16
|
+
},
|
|
17
|
+
"profiles": [
|
|
18
|
+
{
|
|
19
|
+
"network": "Twitter",
|
|
20
|
+
"username": "siliconHBO",
|
|
21
|
+
"url": "https://twitter.com/siliconHBO"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"network": "Facebook",
|
|
25
|
+
"username": "SiliconHBO",
|
|
26
|
+
"url": "https://www.facebook.com/SiliconHBO"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"network": "Instagram",
|
|
30
|
+
"username": "siliconhbo",
|
|
31
|
+
"url": "https://www.instagram.com/siliconhbo/"
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
"work": [
|
|
36
|
+
{
|
|
37
|
+
"company": "Pied Piper",
|
|
38
|
+
"position": "CEO/President",
|
|
39
|
+
"website": "http://piedpiper.com",
|
|
40
|
+
"startDate": "2014-04-13",
|
|
41
|
+
"summary": "Pied Piper is a multi-platform technology based on a proprietary universal compression algorithm that has consistently fielded high Weisman Scores™ that are not merely competitive, but approach the theoretical limit of lossless compression.",
|
|
42
|
+
"highlights": [
|
|
43
|
+
"Build an algorithm for artist to detect if their music was violating copy right infringement laws",
|
|
44
|
+
"Successfully won <a href='https://techcrunch.com/event-type/disrupt/'>Techcrunch Disrupt</a>",
|
|
45
|
+
"Optimized an algorithm that holds the current world record for Weisman Scores"
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"company": "Hooli",
|
|
50
|
+
"position": "Senior Software Engineer",
|
|
51
|
+
"website": "http://www.hooli.xyz/",
|
|
52
|
+
"startDate": "2014-01-01",
|
|
53
|
+
"endDate": "2014-04-06",
|
|
54
|
+
"highlights": [
|
|
55
|
+
"Worked on optimizing the backend algorithms for <a href='http://www.hooli.xyz/'>Hooli</a>"
|
|
56
|
+
]
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"company": "Hooli",
|
|
60
|
+
"position": "Software Engineer",
|
|
61
|
+
"website": "http://www.hooli.xyz/",
|
|
62
|
+
"startDate": "2013-01-01",
|
|
63
|
+
"endDate": "2014-01-01",
|
|
64
|
+
"highlights": [
|
|
65
|
+
"Contributed bugfixes and smaller features for <a href='http://www.hooli.xyz/'>Hooli</a>"
|
|
66
|
+
]
|
|
67
|
+
}
|
|
68
|
+
],
|
|
69
|
+
"volunteer": [
|
|
70
|
+
{
|
|
71
|
+
"organization": "CoderDojo",
|
|
72
|
+
"position": "Teacher",
|
|
73
|
+
"website": "http://coderdojo.com/",
|
|
74
|
+
"startDate": "2012-01-01",
|
|
75
|
+
"endDate": "2013-01-01",
|
|
76
|
+
"summary": "Global movement of free coding clubs for young people.",
|
|
77
|
+
"highlights": [
|
|
78
|
+
"Awarded 'Teacher of the Month'"
|
|
79
|
+
]
|
|
80
|
+
}
|
|
81
|
+
],
|
|
82
|
+
"education": [
|
|
83
|
+
{
|
|
84
|
+
"institution": "Stanford",
|
|
85
|
+
"area": "Computer Science",
|
|
86
|
+
"studyType": "B.S",
|
|
87
|
+
"location": "Palo Alto, CA",
|
|
88
|
+
"specialization": "Machine Learning",
|
|
89
|
+
"startDate": "2011-06-01",
|
|
90
|
+
"endDate": "2014-01-01",
|
|
91
|
+
"gpa": "GPA 4.0",
|
|
92
|
+
"courses": [
|
|
93
|
+
"<strong>DB1101</strong> - Basic SQL",
|
|
94
|
+
"<strong>CS2011</strong> - Java Introduction"
|
|
95
|
+
]
|
|
96
|
+
}
|
|
97
|
+
],
|
|
98
|
+
"awards": [
|
|
99
|
+
{
|
|
100
|
+
"title": "Digital Compression Pioneer Award",
|
|
101
|
+
"date": "2014-11-01",
|
|
102
|
+
"awarder": "Techcrunch",
|
|
103
|
+
"summary": "There is no spoon."
|
|
104
|
+
}
|
|
105
|
+
],
|
|
106
|
+
"publications": [
|
|
107
|
+
{
|
|
108
|
+
"name": "Video compression for 3d media",
|
|
109
|
+
"publisher": "Hooli",
|
|
110
|
+
"releaseDate": "2014-10-01",
|
|
111
|
+
"website": "http://en.wikipedia.org/wiki/Silicon_Valley_(TV_series)",
|
|
112
|
+
"summary": "Innovative middle-out compression algorithm that changes the way we store data."
|
|
113
|
+
}
|
|
114
|
+
],
|
|
115
|
+
"skills": [
|
|
116
|
+
{
|
|
117
|
+
"name": "Web Development",
|
|
118
|
+
"level": "Master",
|
|
119
|
+
"keywords": [
|
|
120
|
+
"HTML",
|
|
121
|
+
"CSS",
|
|
122
|
+
"Javascript"
|
|
123
|
+
]
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"name": "Compression",
|
|
127
|
+
"level": "Master",
|
|
128
|
+
"keywords": [
|
|
129
|
+
"Mpeg",
|
|
130
|
+
"MP4",
|
|
131
|
+
"GIF"
|
|
132
|
+
]
|
|
133
|
+
}
|
|
134
|
+
],
|
|
135
|
+
"languages": [
|
|
136
|
+
{
|
|
137
|
+
"language": "English",
|
|
138
|
+
"fluency": "Native speaker"
|
|
139
|
+
}
|
|
140
|
+
],
|
|
141
|
+
"interests": [
|
|
142
|
+
{
|
|
143
|
+
"name": "Wildlife",
|
|
144
|
+
"keywords": [
|
|
145
|
+
"Ferrets",
|
|
146
|
+
"Unicorns"
|
|
147
|
+
]
|
|
148
|
+
}
|
|
149
|
+
],
|
|
150
|
+
"references": [
|
|
151
|
+
{
|
|
152
|
+
"name": "Erlich Bachman",
|
|
153
|
+
"reference": "It is my pleasure to recommend Richard. That is all."
|
|
154
|
+
}
|
|
155
|
+
]
|
|
156
|
+
}
|
|
Binary file
|
package/index.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
const
|
|
2
|
+
fs = require('fs'),
|
|
3
|
+
handlebars = require('handlebars'),
|
|
4
|
+
handlebarsWax = require('handlebars-wax'),
|
|
5
|
+
Swag = require('swag');
|
|
6
|
+
|
|
7
|
+
Swag.registerHelpers(handlebars);
|
|
8
|
+
|
|
9
|
+
handlebars.registerHelper({
|
|
10
|
+
isArray: function (value) {
|
|
11
|
+
return Array.isArray(value);
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
function render(resume) {
|
|
16
|
+
let dir = __dirname,
|
|
17
|
+
css = fs.readFileSync(dir + '/style.css', 'utf-8'),
|
|
18
|
+
resumeTemplate = fs.readFileSync(dir + '/resume.hbs', 'utf-8');
|
|
19
|
+
|
|
20
|
+
let Handlebars = handlebarsWax(handlebars);
|
|
21
|
+
|
|
22
|
+
return Handlebars.compile(resumeTemplate)({
|
|
23
|
+
css: css,
|
|
24
|
+
resume: resume
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
module.exports = {
|
|
29
|
+
render: render,
|
|
30
|
+
pdfRenderOptions: {
|
|
31
|
+
format: 'A4',
|
|
32
|
+
mediaType: 'print',
|
|
33
|
+
},
|
|
34
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "jsonresume-theme-engineering-leader",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "JSON Resume theme for Engineering leaders",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"jsonresume",
|
|
7
|
+
"jsonresume-theme",
|
|
8
|
+
"json",
|
|
9
|
+
"resume",
|
|
10
|
+
"theme",
|
|
11
|
+
"cv"
|
|
12
|
+
],
|
|
13
|
+
"author": "Jim Woodroffe",
|
|
14
|
+
"repository": {
|
|
15
|
+
"type": "git",
|
|
16
|
+
"url": "https://github.com/sjw7444/jsonresume-theme-engineering-leaders"
|
|
17
|
+
},
|
|
18
|
+
"license": "MIT",
|
|
19
|
+
"scripts": {
|
|
20
|
+
"start": "resume serve --theme .",
|
|
21
|
+
"export": "resume export --resume example/resume-example.json --theme . example/resume-example.html"
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"address-format": "0.0.3",
|
|
25
|
+
"handlebars": "^4.7.8",
|
|
26
|
+
"handlebars-wax": "^6.1.0",
|
|
27
|
+
"moment": "^2.30.1",
|
|
28
|
+
"swag": "^0.7.0"
|
|
29
|
+
},
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"resume-cli": "^3.1.2"
|
|
32
|
+
}
|
|
33
|
+
}
|
package/resume.hbs
ADDED
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html>
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
|
|
6
|
+
<meta charset="utf-8">
|
|
7
|
+
<meta name="viewport" content="width=device-width, user-scalable=no, minimal-ui">
|
|
8
|
+
|
|
9
|
+
<title>{{ resume.basics.name }}</title>
|
|
10
|
+
|
|
11
|
+
<link rel="stylesheet" href="style.css" />
|
|
12
|
+
|
|
13
|
+
</head>
|
|
14
|
+
|
|
15
|
+
<body>
|
|
16
|
+
|
|
17
|
+
<div id="resume">
|
|
18
|
+
<section id="basics">
|
|
19
|
+
|
|
20
|
+
<h1>{{ resume.basics.name }}</h1>
|
|
21
|
+
|
|
22
|
+
<div class="contact centered">
|
|
23
|
+
{{ resume.basics.location.address }} {{ resume.basics.location.city }}, {{ resume.basics.location.region
|
|
24
|
+
}}
|
|
25
|
+
{{ resume.basics.location.postalCode }} {{ resume.basics.location.countryCode }}
|
|
26
|
+
</div>
|
|
27
|
+
|
|
28
|
+
<div class="contact centered">
|
|
29
|
+
{{#if resume.basics.phone~}}
|
|
30
|
+
<span>{{ resume.basics.phone }}</span>
|
|
31
|
+
{{~/if}}
|
|
32
|
+
|
|
33
|
+
{{#if resume.basics.email~}}
|
|
34
|
+
{{#if resume.basics.phone~}}
|
|
35
|
+
<span>|</span>
|
|
36
|
+
{{~/if}}
|
|
37
|
+
{{~/if}}
|
|
38
|
+
|
|
39
|
+
{{#if resume.basics.email~}}
|
|
40
|
+
<span>{{ resume.basics.email }}</span>
|
|
41
|
+
{{~/if}}
|
|
42
|
+
</div>
|
|
43
|
+
|
|
44
|
+
{{#if basics.url~}}
|
|
45
|
+
<div class="contact centered">
|
|
46
|
+
<a href="https://{{resume.basics.url}}">{{resume.basics.url}}</a>
|
|
47
|
+
</div>
|
|
48
|
+
{{~/if}}
|
|
49
|
+
|
|
50
|
+
{{#if basics.summary}}
|
|
51
|
+
<div class="summary">
|
|
52
|
+
{{#if resume.basics.label}}
|
|
53
|
+
<h2>{{ resume.basics.label }}</h2>
|
|
54
|
+
{{/if}}
|
|
55
|
+
{{#unless resume.basics.label}}
|
|
56
|
+
<h2>Summary</h2>
|
|
57
|
+
{{/unless}}
|
|
58
|
+
|
|
59
|
+
<p>{{ resume.basics.summary }}</p>
|
|
60
|
+
</div>
|
|
61
|
+
{{~/if}}
|
|
62
|
+
|
|
63
|
+
</section>
|
|
64
|
+
|
|
65
|
+
{{#if resume.work.length}}
|
|
66
|
+
<section id="work">
|
|
67
|
+
<h2>Experience</h2>
|
|
68
|
+
{{#each resume.work}}
|
|
69
|
+
|
|
70
|
+
<div class="item">
|
|
71
|
+
<div class="item-header">
|
|
72
|
+
<h3 class="item-header-title">
|
|
73
|
+
{{company}},
|
|
74
|
+
|
|
75
|
+
{{#if location}}
|
|
76
|
+
<span class="location">
|
|
77
|
+
{{location.city}}, {{location.region}}
|
|
78
|
+
</span>
|
|
79
|
+
{{~/if}}
|
|
80
|
+
</h3>
|
|
81
|
+
<div class="item-header-subtitle">
|
|
82
|
+
{{position}}
|
|
83
|
+
</div>
|
|
84
|
+
</div>
|
|
85
|
+
<div class="item-details">
|
|
86
|
+
<div class="date">
|
|
87
|
+
{{startDate}} - {{endDate}}
|
|
88
|
+
</div>
|
|
89
|
+
</div>
|
|
90
|
+
<div class="clearfix"></div>
|
|
91
|
+
|
|
92
|
+
<p>{{summary}}</p>
|
|
93
|
+
|
|
94
|
+
{{#if highlights.length}}
|
|
95
|
+
<ul class="highlights">
|
|
96
|
+
{{#each highlights}}
|
|
97
|
+
{{#if (isArray this)}}
|
|
98
|
+
<ul>
|
|
99
|
+
{{#each this}}
|
|
100
|
+
<li>{{this}}</li>
|
|
101
|
+
{{/each}}
|
|
102
|
+
</ul>
|
|
103
|
+
{{else}}
|
|
104
|
+
<li>{{this}}</li>
|
|
105
|
+
{{/if}}
|
|
106
|
+
{{/each}}
|
|
107
|
+
</ul>
|
|
108
|
+
{{/if}}
|
|
109
|
+
</div>
|
|
110
|
+
{{/each}}
|
|
111
|
+
</section>
|
|
112
|
+
{{/if}}
|
|
113
|
+
|
|
114
|
+
{{#if resume.education.length}}
|
|
115
|
+
<section id="education">
|
|
116
|
+
<h2>Education</h2>
|
|
117
|
+
|
|
118
|
+
{{#each resume.education}}
|
|
119
|
+
<div class="item">
|
|
120
|
+
<div class="item-header">
|
|
121
|
+
<div class="item-header-title">
|
|
122
|
+
{{ institution }}
|
|
123
|
+
|
|
124
|
+
{{#if location}}
|
|
125
|
+
<span class="location">
|
|
126
|
+
{{location.city}}, {{location.region}} {{location.countryCode}}
|
|
127
|
+
</span>
|
|
128
|
+
{{~/if}}
|
|
129
|
+
</div>
|
|
130
|
+
<div class="item-header-subtitle">
|
|
131
|
+
<span class="degree">{{ studyType }}, {{ area }}</span>
|
|
132
|
+
</div>
|
|
133
|
+
</div>
|
|
134
|
+
|
|
135
|
+
<div class="clearfix"></div>
|
|
136
|
+
</div>
|
|
137
|
+
{{/each}}
|
|
138
|
+
</section>
|
|
139
|
+
{{/if}}
|
|
140
|
+
|
|
141
|
+
{{#if resume.awards.length}}
|
|
142
|
+
<section id="awards">
|
|
143
|
+
<h2>Awards & Recognitions</h2>
|
|
144
|
+
<ul class="item">
|
|
145
|
+
{{#each resume.awards}}
|
|
146
|
+
<li>
|
|
147
|
+
{{#if title}}
|
|
148
|
+
{{#if summary}}
|
|
149
|
+
<strong>{{title}}</strong>: {{summary}}
|
|
150
|
+
{{else}}
|
|
151
|
+
<strong>{{title}}</strong>
|
|
152
|
+
{{/if}}
|
|
153
|
+
{{/if}}
|
|
154
|
+
</li>
|
|
155
|
+
{{/each}}
|
|
156
|
+
</ul>
|
|
157
|
+
</section>
|
|
158
|
+
{{/if}}
|
|
159
|
+
|
|
160
|
+
{{#if resume.skills.length}}
|
|
161
|
+
<section id="skills">
|
|
162
|
+
<h2>Skills</h2>
|
|
163
|
+
<ul class="item">
|
|
164
|
+
{{#each resume.skills}}
|
|
165
|
+
<li>
|
|
166
|
+
{{#if name}}
|
|
167
|
+
{{#if keywords.length}}
|
|
168
|
+
<strong>{{name}}</strong>: {{#each keywords}}{{.}}{{#unless @last}}, {{/unless}}{{/each}}
|
|
169
|
+
{{else}}
|
|
170
|
+
<strong>{{name}}</strong>
|
|
171
|
+
{{/if}}
|
|
172
|
+
{{/if}}
|
|
173
|
+
</li>
|
|
174
|
+
{{/each}}
|
|
175
|
+
</ul>
|
|
176
|
+
</section>
|
|
177
|
+
{{/if}}
|
|
178
|
+
</body>
|
|
179
|
+
|
|
180
|
+
</html>
|
package/style.css
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
body {
|
|
2
|
+
font-family: Arial, Helvetica, sans-serif;
|
|
3
|
+
font-size: 11px;
|
|
4
|
+
margin: 24px 48px;
|
|
5
|
+
line-height: 1.5;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
h1 {
|
|
9
|
+
font-size: 26px;
|
|
10
|
+
text-align: center;
|
|
11
|
+
margin: 0;
|
|
12
|
+
line-height: 1.5;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
h2 {
|
|
16
|
+
border-width: 1px;
|
|
17
|
+
border-style: none none solid none;
|
|
18
|
+
margin: 10px 0 2.5px 0;
|
|
19
|
+
line-height: 2em;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
h3 {
|
|
23
|
+
display: inline;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
section {
|
|
27
|
+
margin: 3px 0;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
ul {
|
|
31
|
+
margin: 0;
|
|
32
|
+
padding-left: 20px;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
a {
|
|
36
|
+
text-decoration: none;
|
|
37
|
+
color: black;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.item {
|
|
41
|
+
margin-top: 8px;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.item>.item-header {
|
|
45
|
+
float: left;
|
|
46
|
+
display: block;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.item>.item-header>.item-header-title {
|
|
50
|
+
font-weight: bold;
|
|
51
|
+
white-space: nowrap;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.item>.item-header>.item-header-subtitle {
|
|
55
|
+
font-weight: bold;
|
|
56
|
+
white-space: nowrap;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.item>.item-header>.item-header-title>.location {
|
|
60
|
+
font-weight: normal;
|
|
61
|
+
white-space: nowrap;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.item>.item-details {
|
|
65
|
+
float: right;
|
|
66
|
+
text-align: right;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.item>.item-details>.item-details-title {
|
|
70
|
+
font-weight: bold;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.item>.item-details>.date {
|
|
74
|
+
font-weight: bold;
|
|
75
|
+
white-space: nowrap;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.item>.item-header>.item-header-subtitle>.degree {
|
|
79
|
+
font-weight: normal;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.clearfix {
|
|
83
|
+
clear: both;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.centered {
|
|
87
|
+
text-align: center;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/* Section specific */
|
|
91
|
+
/* basics */
|
|
92
|
+
.vertical-separator {
|
|
93
|
+
text-align: center;
|
|
94
|
+
padding: 0 10px;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/*
|
|
98
|
+
.vertical-separator:not(:first-child) {
|
|
99
|
+
border-left: 1px solid #000;
|
|
100
|
+
text-align: center;
|
|
101
|
+
}
|
|
102
|
+
*/
|
|
103
|
+
|
|
104
|
+
/* Set some print settings. */
|
|
105
|
+
@media print {
|
|
106
|
+
@page {
|
|
107
|
+
size: portrait;
|
|
108
|
+
margin: 10mm 25mm;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.resume {
|
|
112
|
+
max-width: 100%;
|
|
113
|
+
border: 0px;
|
|
114
|
+
background: #fff;
|
|
115
|
+
box-shadow: none;
|
|
116
|
+
-webkit-box-shadow: none;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
body,
|
|
120
|
+
html,
|
|
121
|
+
.resume {
|
|
122
|
+
margin: 0px;
|
|
123
|
+
padding: 0px;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.controls {
|
|
127
|
+
display: none;
|
|
128
|
+
}
|
|
129
|
+
}
|