jsonresume-theme-engineering 0.1.3

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/README.md ADDED
@@ -0,0 +1,121 @@
1
+ # jsonresume-theme-engineering [![](https://badge.fury.io/js/jsonresume-theme-engineering.svg)](https://www.npmjs.org/package/jsonresume-theme-engineering)
2
+
3
+ This is the engineering theme for [JSON Resume](http://jsonresume.org/), which aims to implement the best practices for engineering resumes described in https://www.reddit.com/r/EngineeringResumes/wiki/index/. It is intended [senior/staff level engineers](https://www.reddit.com/r/EngineeringResumes/wiki/index/#wiki_senior_engineers_and_above_.2810.2B_yoe.29).
4
+
5
+ ## Getting started
6
+
7
+ To get started with theme development, this is what you'll need:
8
+
9
+ - [node.js](http://howtonode.org/how-to-install-nodejs)
10
+ - [npm](http://howtonode.org/introduction-to-npm)
11
+
12
+ If you're on Linux, you can simply run:
13
+
14
+ ```
15
+ sudo apt-get install nodejs-legacy npm
16
+ ```
17
+
18
+ Or if you're on OSX and got [Homebrew](http://brew.sh/) installed:
19
+
20
+ ```
21
+ brew install node
22
+ ```
23
+
24
+ ### Download theme
25
+
26
+ Lets go ahead and download a [copy of the repository](https://github.com/skoenig/jsonresume-theme-engineering/archive/master.zip).
27
+
28
+ ### Install npm packages
29
+
30
+ We need to install the dependencies. `cd` into the theme folder we just downloaded and run:
31
+
32
+ ```bash
33
+ npm install
34
+ ```
35
+
36
+ This will read the local `package.json` and install the packages listed under `dependencies`.
37
+
38
+ ### Install the command line
39
+
40
+ We're going to use the official [resume-cli](https://github.com/jsonresume/resume-cli) to run our development server.
41
+
42
+ Go ahead and install it:
43
+
44
+ ```
45
+ npm install resume-cli
46
+ ```
47
+
48
+ ### Serve theme
49
+
50
+ While inside the theme folder, copy the sample resume and run the development server:
51
+
52
+ ```
53
+ cp sample-resume.json resume.json
54
+ npm start
55
+ ```
56
+
57
+ You should now see this message:
58
+
59
+ ```
60
+ Preview: http://localhost:4000
61
+ Press ctrl-c to stop
62
+ ```
63
+
64
+ Congratulations, you've made it!
65
+
66
+ __The theme development can now begin.__
67
+
68
+ ## Development
69
+
70
+ ### Overview
71
+
72
+ Quick overview of each of the files needed for this JSONResume theme:
73
+
74
+ - `package.json`: Your package.json is required by all npm packages. Everytime you want to release a new update of your theme, you'll need to update it's version number.
75
+ - `index.js`: This is the file that will return the needed HTML to the theme server. You can use it to process some things with your theme first, but we'll talk about that a bit later.
76
+ - `resume.hbs`: This is your actual template. This file is sent to the `index.js` for it to send to the theme server.
77
+ - `style.css`: This is where all the CSS of your project goes. Since the `index.js` only returns HTML, the contents of this file are put between `<style>` tags in your `resume.hbs` file.
78
+
79
+ ### package.json
80
+
81
+ Because you'll need to publish this as your own soon, you'll need to change some of the fields. You can replace the name field with your own theme name, so long as it starts with `jsonresume-theme-`. This prefix will allow your theme to be found by the theme server during deployment.
82
+
83
+ Next, you'll want to change the description and author. You can change the description to anything you'd like, and the author should be your name.
84
+
85
+ If you are also putting your theme up on Github, you'll probably want to keep the repository field, but replace the url with your own.
86
+
87
+ Lastly, you can put all of your theme dependencies in the `dependencies` field. As you can see, we already have [Handlebars](http://handlebarsjs.com/) as one of the dependencies. If you wish not to use Handlebars, you may remove this, and replace it with another templating system.
88
+
89
+ ### index.js
90
+
91
+ The `index.js` is where all the compiliing of your theme, and neccessary edits will go.
92
+
93
+ At the top, you can already see the Node.js `require` function being used with the dependencies. You can obviously add own dependencies, if you are planning on using a different templating system, you can remove it.
94
+
95
+ The most important part of `index.js` is the `render` function. This is where all the compilation goes. This render function is expected to take a resume object (from a `resume.json`), and should return HTML. In this case, it is returning a compiled Handlebars document. If you removed the Handlebars dependency, you'll want to remove it and replace it with your own templating system compilation.
96
+
97
+ Above the `return` line are css and template variables. Using the Node.js `fs` module, it reads first the `style.css` and the `resume.hbs`.
98
+
99
+ ### resume.hbs
100
+
101
+ The `resume.hbs` file is where the actual template is. It contains all of the markup needed for your resume. By default, this is a Handlebars document, but it can obviously be changed into a different templating document.
102
+
103
+ ### style.css
104
+
105
+ Last but not least, the `style.css` defines your styles. Technically, this is completely optional, as you could just write all of your styles in the `<style>` tags of your `resume.hbs`. As the `index.js`, the contents of the `style.css` are put into the `<style>` tags of your compiled theme later, yet again, this is something can change.
106
+
107
+ ## Deployment
108
+
109
+ If you are familar with NPM, you should be done with this in no time.
110
+
111
+ If you already have an NPM account, you can run `npm login` and enter your username and password. If not, you can run `npm adduser` and fill in the proper fields.
112
+
113
+ If you changed the dependencies or added new ones, you'll want to run `npm install` again, and just to make sure, run `npm update` to get the latest version of each dependency.
114
+
115
+ When you are done with that, you may go into your package.json, and edit the version number. When all of the above is finished, you may run `npm publish` to release your theme to the public. Now everyone can use your theme with their resume.
116
+
117
+ When updating your theme, you'll need to change the version number and run `npm publish` again.
118
+
119
+ ## License
120
+
121
+ Available under [the MIT license](http://mths.be/mit).
package/index.js ADDED
@@ -0,0 +1,65 @@
1
+ const
2
+ fs = require('fs'),
3
+ handlebars = require('handlebars'),
4
+ handlebarsWax = require('handlebars-wax'),
5
+ addressFormat = require('address-format'),
6
+ moment = require('moment'),
7
+ Swag = require('swag');
8
+
9
+ Swag.registerHelpers(handlebars);
10
+
11
+ handlebars.registerHelper({
12
+ removeProtocol: function (url) {
13
+ return url.replace(/.*?:\/\//g, '');
14
+ },
15
+
16
+ concat: function () {
17
+ let res = '';
18
+
19
+ for (let arg in arguments) {
20
+ if (typeof arguments[arg] !== 'object') {
21
+ res += arguments[arg];
22
+ }
23
+ }
24
+
25
+ return res;
26
+ },
27
+
28
+ formatAddress: function (address, city, region, postalCode, countryCode) {
29
+ let addressList = addressFormat({
30
+ address: address,
31
+ city: city,
32
+ subdivision: region,
33
+ postalCode: postalCode,
34
+ countryCode: countryCode
35
+ });
36
+
37
+
38
+ return addressList.join('<br/>');
39
+ },
40
+
41
+ formatDate: function (date) {
42
+ return moment(date).format('MMM YYYY');
43
+ }
44
+ });
45
+
46
+
47
+ function render(resume) {
48
+ let dir = __dirname,
49
+ css = fs.readFileSync(dir + '/style.css', 'utf-8'),
50
+ resumeTemplate = fs.readFileSync(dir + '/resume.hbs', 'utf-8');
51
+
52
+ let Handlebars = handlebarsWax(handlebars);
53
+
54
+ Handlebars.partials(dir + '/views/**/*.{hbs,js}');
55
+ Handlebars.partials(dir + '/partials/**/*.{hbs,js}');
56
+
57
+ return Handlebars.compile(resumeTemplate)({
58
+ css: css,
59
+ resume: resume
60
+ });
61
+ }
62
+
63
+ module.exports = {
64
+ render: render
65
+ };
package/package.json ADDED
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "jsonresume-theme-engineering",
3
+ "version": "0.1.3",
4
+ "description": "JSON Resume theme for engineers",
5
+ "author": "Sören König",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/skoenig/jsonresume-theme-engineering"
9
+ },
10
+ "license": "MIT",
11
+ "scripts": {
12
+ "start": "resume serve --theme ."
13
+ },
14
+ "dependencies": {
15
+ "address-format": "0.0.3",
16
+ "handlebars": "^4.7.7",
17
+ "handlebars-wax": "^6.1.0",
18
+ "moment": "^2.29.4",
19
+ "swag": "^0.7.0"
20
+ }
21
+ }
@@ -0,0 +1,19 @@
1
+ <div class="item-details">
2
+ {{#if location}}
3
+ <div class="item-details-title">
4
+ {{location}}
5
+ </div>
6
+ {{/if}}
7
+ {{#if startDate}}
8
+ {{#if endDate}}
9
+ <div class="date">
10
+ {{formatDate startDate}} — {{formatDate endDate}}{{#if startDate2}}{{#if endDate2}}, {{formatDate startDate2}} —
11
+ {{formatDate endDate2}}{{else}}, {{formatDate startDate2}} — Present{{/if}}{{/if}}
12
+ </div>
13
+ {{else}}
14
+ <div class="date">
15
+ {{formatDate startDate}} — Present
16
+ </div>
17
+ {{/if}}
18
+ {{/if}}
19
+ </div>
@@ -0,0 +1,12 @@
1
+ <div class="item-header">
2
+ {{#if title}}
3
+ <div class="item-header-title">
4
+ {{title}}
5
+ </div>
6
+ {{/if}}
7
+ {{#if subtitle}}
8
+ <div class="item-header-subtitle">
9
+ {{subtitle}}
10
+ </div>
11
+ {{/if}}
12
+ </div>
@@ -0,0 +1,6 @@
1
+ <div class="item">
2
+ {{> item-header title=title subtitle=subtitle }}
3
+ {{> item-details location=location startDate=startDate endDate=endDate }}
4
+ <div class="clearfix"></div>
5
+ {{> @partial-block }}
6
+ </div>
@@ -0,0 +1,221 @@
1
+ <!doctype html>
2
+ <html>
3
+ <head>
4
+
5
+ <meta charset="utf-8">
6
+ <meta name="viewport" content="width=device-width, user-scalable=no, minimal-ui">
7
+
8
+ <title>Richard Hendriks</title>
9
+
10
+ <style>
11
+ /* Template level */
12
+ body {
13
+ font-family: Georgia, serif;
14
+ font-size: 11px;
15
+ margin: 24px 48px;
16
+ }
17
+
18
+ h1 {
19
+ font-size: 26px;
20
+ text-align: center;
21
+ margin: 5px;
22
+ }
23
+
24
+ h2 {
25
+ border-width: 1px;
26
+ border-style: none none solid none;
27
+ margin: 10px 0 2.5px 0;
28
+ }
29
+
30
+ section {
31
+ margin: 3px 0;
32
+ }
33
+
34
+ ul {
35
+ margin: 0;
36
+ padding-left: 20px;
37
+ }
38
+
39
+ .item {
40
+ margin-top: 8px;
41
+ }
42
+
43
+ .item>.item-header {
44
+ float: left;
45
+ display: block;
46
+ }
47
+
48
+ .item>.item-header>.item-header-title {
49
+ font-weight: bold;
50
+ }
51
+
52
+ .item>.item-header>.item-header-subtitle {
53
+ font-style: italic;
54
+ }
55
+
56
+ .item>.item-details {
57
+ float: right;
58
+ text-align: right;
59
+ }
60
+
61
+ .item>.item-details>.item-details-title {
62
+ font-weight: bold;
63
+ }
64
+
65
+ .clearfix {
66
+ clear: both;
67
+ }
68
+
69
+ .centered {
70
+ text-align: center;
71
+ }
72
+
73
+ /* Section specific */
74
+ /* basics */
75
+ .vertical-separator {
76
+ text-align: center;
77
+ padding: 0 10px;
78
+ }
79
+
80
+ .vertical-separator:not(:first-child) {
81
+ border-left: 1px solid #000;
82
+ text-align: center;
83
+ }
84
+
85
+ /* Set some print settings. */
86
+ @media print {
87
+ @page {
88
+ size: portrait;
89
+ margin: 10mm 25mm;
90
+ }
91
+ .resume {
92
+ max-width: 100%;
93
+ border: 0px;
94
+ background: #fff;
95
+ box-shadow: none;
96
+ -webkit-box-shadow: none;
97
+ }
98
+ body,
99
+ html,
100
+ .resume {
101
+ margin: 0px;
102
+ padding: 0px;
103
+ }
104
+ .controls {
105
+ display: none;
106
+ }
107
+ }
108
+
109
+ </style>
110
+
111
+ </head>
112
+ <body>
113
+
114
+ <div id="resume">
115
+ <section id="basics">
116
+ <h1>Richard Hendriks</h1>
117
+ <div class="contact centered">
118
+ <span class="vertical-separator">richard.hendriks@piedpiper.com</span>
119
+ <span class="vertical-separator">(912) 555-4321</span>
120
+ <span class="vertical-separator">Palo Alto, US</span>
121
+ <span class="vertical-separator">http://piedpiper.com</span>
122
+ </div>
123
+ <div class="summary">
124
+ <h2>Summary</h2>
125
+ <p>Richard hails from Tulsa. He has earned degrees from the University of Oklahoma and Stanford. (Go Sooners and Cardinals!) Before starting Pied Piper, he worked for Hooli 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 “length-limited” conversation!</p>
126
+ </div>
127
+ </section>
128
+ <section id="skills">
129
+ <h2>Skills</h2>
130
+ <ul class="item">
131
+ <li>
132
+ <strong>Web Development</strong>: HTML, CSS, Javascript
133
+ </li>
134
+ <li>
135
+ <strong>Compression</strong>: Mpeg, MP4, GIF
136
+ </li>
137
+ </ul>
138
+ </section>
139
+ <section id="work">
140
+ <h2>Work Experience</h2>
141
+ <div class="item">
142
+ <div class="item-header">
143
+ <div class="item-header-title">
144
+ Pied Piper
145
+ </div>
146
+ <div class="item-header-subtitle">
147
+ CEO/President
148
+ </div>
149
+ </div> <div class="item-details">
150
+ <div class="date">
151
+ Apr 2014 — Present
152
+ </div>
153
+ </div> <div class="clearfix"></div>
154
+
155
+ <ul class="highlights">
156
+ <li>Build an algorithm for artist to detect if their music was violating copy right infringement laws</li>
157
+ <li>Successfully won Techcrunch Disrupt</li>
158
+ <li>Optimized an algorithm that holds the current world record for Weisman Scores</li>
159
+ </ul>
160
+ </div><div class="item">
161
+ <div class="item-header">
162
+ <div class="item-header-title">
163
+ Hooli
164
+ </div>
165
+ <div class="item-header-subtitle">
166
+ Senior Software Engineer
167
+ </div>
168
+ </div> <div class="item-details">
169
+ <div class="date">
170
+ Jan 2014 — Apr 2014
171
+ </div>
172
+ </div> <div class="clearfix"></div>
173
+
174
+ <ul class="highlights">
175
+ <li>Worked on optimizing the backend algorithms for Hooli</li>
176
+ </ul>
177
+ </div><div class="item">
178
+ <div class="item-header">
179
+ <div class="item-header-subtitle">
180
+ Software Engineer
181
+ </div>
182
+ </div> <div class="item-details">
183
+ <div class="date">
184
+ Jan 2013 — Jan 2014
185
+ </div>
186
+ </div> <div class="clearfix"></div>
187
+
188
+ <ul class="highlights">
189
+ <li>Contributed bugfixes and smaller features for Hooli</li>
190
+ </ul>
191
+ </div></section>
192
+ <section id="education">
193
+ <h2>Education</h2>
194
+ <div class="item">
195
+ <div class="item-header">
196
+ <div class="item-header-title">
197
+ Stanford
198
+ </div>
199
+ <div class="item-header-subtitle">
200
+ B.S
201
+ </div>
202
+ </div> <div class="item-details">
203
+ <div class="date">
204
+ Jun 2011 — Jan 2014
205
+ </div>
206
+ </div> <div class="clearfix"></div>
207
+ <ul class="courses">
208
+ <li>DB1101 - Basic SQL</li>
209
+ <li>CS2011 - Java Introduction</li>
210
+ </ul>
211
+ </div></section>
212
+ <section id="awards">
213
+ <h2>Awards & Recognitions</h2>
214
+ <ul class="item">
215
+ <li>
216
+ <strong>Digital Compression Pioneer Award</strong>: There is no spoon.
217
+ </li>
218
+ </ul>
219
+ </section>
220
+ </body>
221
+ </html>
package/resume.hbs ADDED
@@ -0,0 +1,24 @@
1
+ <!doctype html>
2
+ <html>
3
+ <head>
4
+
5
+ <meta charset="utf-8">
6
+ <meta name="viewport" content="width=device-width, user-scalable=no, minimal-ui">
7
+
8
+ <title>{{#resume.basics}}{{name}}{{/resume.basics}}</title>
9
+
10
+ <style>
11
+ {{{css}}}
12
+ </style>
13
+
14
+ </head>
15
+ <body>
16
+
17
+ <div id="resume">
18
+ {{> basics }}
19
+ {{> languages-skills-interests }}
20
+ {{> work }}
21
+ {{> education }}
22
+ {{> awards }}
23
+ </body>
24
+ </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 Tulsa. He has earned degrees from the University of Oklahoma and Stanford. (Go Sooners and Cardinals!) Before starting Pied Piper, he worked for Hooli 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 “length-limited” 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 Techcrunch Disrupt",
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 Hooli"
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 Hooli"
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
+ "DB1101 - Basic SQL",
94
+ "CS2011 - 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
+ }
package/style.css ADDED
@@ -0,0 +1,73 @@
1
+ /* Template level */
2
+ body {
3
+ font: 12px Times, sans-serif;
4
+ margin: 24px 48px;
5
+ }
6
+
7
+ h1 {
8
+ font: 26px Georgia, serif;
9
+ text-align: center;
10
+ margin: 5px;
11
+ }
12
+
13
+ h2 {
14
+ font-variant-caps: all-small-caps;
15
+ border-width: 1px;
16
+ border-style: none none solid none;
17
+ margin: 5px 0 2.5px 0;
18
+ }
19
+
20
+ section {
21
+ margin: 3px 0;
22
+ }
23
+
24
+ ul {
25
+ margin: 0;
26
+ padding-left: 40px;
27
+ }
28
+
29
+ .item {
30
+ margin-top: 8px;
31
+ }
32
+
33
+ .item>.item-header {
34
+ float: left;
35
+ display: block;
36
+ }
37
+
38
+ .item>.item-header>.item-header-title {
39
+ font-weight: bold;
40
+ }
41
+
42
+ .item>.item-header>.item-header-subtitle {
43
+ font-style: italic;
44
+ }
45
+
46
+ .item>.item-details {
47
+ float: right;
48
+ text-align: right;
49
+ }
50
+
51
+ .item>.item-details>.item-details-title {
52
+ font-weight: bold;
53
+ }
54
+
55
+ .clearfix {
56
+ clear: both;
57
+ }
58
+
59
+ .centered {
60
+ text-align: center;
61
+ }
62
+
63
+ /* Section specific */
64
+ /* basics */
65
+ .vertical-separator {
66
+ text-align: center;
67
+ padding: 0 10px;
68
+ }
69
+
70
+ .vertical-separator:not(:first-child) {
71
+ border-left: 1px solid #000;
72
+ text-align: center;
73
+ }
@@ -0,0 +1,18 @@
1
+ {{#if resume.awards.length}}
2
+ <section id="awards">
3
+ <h2>Awards & Recognitions</h2>
4
+ <ul class="item">
5
+ {{#each resume.awards}}
6
+ <li>
7
+ {{#if title}}
8
+ {{#if summary}}
9
+ <strong>{{title}}</strong>: {{summary}}
10
+ {{else}}
11
+ <strong>{{title}}</strong>
12
+ {{/if}}
13
+ {{/if}}
14
+ </li>
15
+ {{/each}}
16
+ </ul>
17
+ </section>
18
+ {{/if}}
@@ -0,0 +1,25 @@
1
+ {{#resume.basics}}
2
+ <section id="basics">
3
+ <h1>{{name}}</h1>
4
+ <div class="contact centered">
5
+ {{#if email}}
6
+ <span class="vertical-separator">{{email}}</span>
7
+ {{/if}}
8
+ {{#if phone}}
9
+ <span class="vertical-separator">{{phone}}</span>
10
+ {{/if}}
11
+ {{#if location}}
12
+ <span class="vertical-separator">{{location.address}}, {{location.city}}, {{location.region}}</span>
13
+ {{/if}}
14
+ {{#if website}}
15
+ <span class="vertical-separator">{{website}}</span>
16
+ {{/if}}
17
+ </div>
18
+ {{#if summary}}
19
+ <div class="summary">
20
+ <h2>Summary</h2>
21
+ <p>{{summary}}</p>
22
+ </div>
23
+ {{/if}}
24
+ </section>
25
+ {{/resume.basics}}
@@ -0,0 +1,32 @@
1
+ {{#if resume.education.length}}
2
+ <section id="education">
3
+ <h2>Education</h2>
4
+ {{#each resume.education}}
5
+ {{#> item title=institution subtitle=studyType location=city startDate=startDate endDate=endDate}}
6
+ {{#if score}}
7
+ <ul>
8
+ <li>
9
+ <div class="score">
10
+ {{score}}
11
+ </div>
12
+ </li>
13
+ {{#if score2}}
14
+ <li>
15
+ <div class="score2">
16
+ {{score2}}
17
+ </div>
18
+ </li>
19
+ {{/if}}
20
+ </ul>
21
+ {{/if}}
22
+ {{#if courses.length}}
23
+ <ul class="courses">
24
+ {{#each courses}}
25
+ <li>{{.}}</li>
26
+ {{/each}}
27
+ </ul>
28
+ {{/if}}
29
+ {{/item}}
30
+ {{/each}}
31
+ </section>
32
+ {{/if}}
@@ -0,0 +1,18 @@
1
+ {{#if resume.skills.length}}
2
+ <section id="skills">
3
+ <h2>Skills</h2>
4
+ <ul class="item">
5
+ {{#each resume.skills}}
6
+ <li>
7
+ {{#if name}}
8
+ {{#if keywords.length}}
9
+ <strong>{{name}}</strong>: {{#each keywords}}{{.}}{{#unless @last}}, {{/unless}}{{/each}}
10
+ {{else}}
11
+ <strong>{{name}}</strong>
12
+ {{/if}}
13
+ {{/if}}
14
+ </li>
15
+ {{/each}}
16
+ </ul>
17
+ </section>
18
+ {{/if}}
package/views/work.hbs ADDED
@@ -0,0 +1,16 @@
1
+ {{#if resume.work.length}}
2
+ <section id="work">
3
+ <h2>Work Experience</h2>
4
+ {{#each resume.work}}
5
+ {{#> item title=name subtitle=position location=location startDate=startDate endDate=endDate startDate2=startDate2 endDate2=endDate2}}
6
+ {{#if highlights.length}}
7
+ <ul class="highlights">
8
+ {{#each highlights}}
9
+ <li>{{.}}</li>
10
+ {{/each}}
11
+ </ul>
12
+ {{/if}}
13
+ {{/item}}
14
+ {{/each}}
15
+ </section>
16
+ {{/if}}