@jsonresume/schema 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/LICENSE.md ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright © 2014 JSON Resume
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,91 @@
1
+ # JSON Resume Schema
2
+
3
+ [![GitHub Releases](https://badgen.net/github/tag/jsonresume/resume-schema)](https://github.com/jsonresume/resume-schema/releases)
4
+ [![NPM Release](https://badgen.net/npm/v/resume-schema)](https://www.npmjs.com/package/resume-schema)
5
+ [![Latest Status](https://github.com/jsonresume/resume-schema/workflows/Latest/badge.svg)](https://github.com/vanillawc/wc-template/actions)
6
+ [![Release Status](https://github.com/jsonresume/resume-schema/workflows/Release/badge.svg)](https://github.com/vanillawc/wc-template/actions)
7
+
8
+ [![](https://dcbadge.limes.pink/api/server/GTZtn8pTXC)](https://discord.gg/GTZtn8pTXC)
9
+
10
+ Standard, Specification, Schema
11
+
12
+ ## Important Note
13
+
14
+ The current working version of the schema is `v1.0.0` that is represented by the `master` branch and the files `schema.json` and `sample.resume.json`.
15
+
16
+ All PR's for the next version should be made against the `develop` branch.
17
+
18
+ ### Getting started
19
+
20
+ ```
21
+ npm install --save resume-schema
22
+ ```
23
+
24
+ To use
25
+
26
+ ```js
27
+ const resumeSchema = require("resume-schema");
28
+ resumeSchema.validate(
29
+ { name: "Thomas" },
30
+ function (err, report) {
31
+ if (err) {
32
+ console.error("The resume was invalid:", err);
33
+ return;
34
+ }
35
+ console.log("Resume validated successfully:", report);
36
+ },
37
+ function (err) {
38
+ console.error("The resume was invalid:", err);
39
+ }
40
+ );
41
+ ```
42
+
43
+ More likely
44
+
45
+ ```js
46
+ var fs = require("fs");
47
+ var resumeSchema = require("resume-schema");
48
+ var resumeObject = JSON.parse(fs.readFileSync("resume.json", "utf8"));
49
+ resumeSchema.validate(resumeObject);
50
+ ```
51
+
52
+ The JSON Resume schema is available from:
53
+
54
+ ```js
55
+ require("resume-schema").schema;
56
+ ```
57
+
58
+ ### Contribute
59
+
60
+ We encourage anyone who's interested in participating in the formation of this standard to join the discussions [here on GitHub](https://github.com/jsonresume/resume-schema/issues). Also feel free to fork this project and submit new ideas to add to the JSON Resume Schema standard. To make sure all formatting is kept in check, please install the [EditorConfig plugin](http://editorconfig.org/) for your editor of choice.
61
+
62
+ ### Versioning
63
+
64
+ JSON Resume Schema adheres to Semantic Versioning 2.0.0. If there is a violation of
65
+ this scheme, report it as a bug. Specifically, if a patch or minor version is
66
+ released and breaks backward compatibility, that version should be immediately
67
+ yanked and/or a new version should be immediately released that restores
68
+ compatibility. Any change that breaks the public API will only be introduced at
69
+ a major-version release. As a result of this policy, you can (and should)
70
+ specify any dependency on JSON Resume Schema by using the Pessimistic Version
71
+ Constraint with two digits of precision.
72
+
73
+ We use automatic semver system.
74
+
75
+ Pull requests titles should be formatted as such
76
+
77
+ ```
78
+ "fix: added something" - will bump the patch version
79
+ "feat: added something" - will bump the minor version
80
+ ```
81
+
82
+ `major` version bumps will be few and far between for this schema.
83
+
84
+ ### Job Description Schema
85
+
86
+ A draft schema for job descriptions is available in this project as well. It is not yet finalized, but we encourage you to check it out and provide feedback. See `job-schema.json` and `sample.job.json`.
87
+
88
+ ### Other resume standards
89
+
90
+ - [HR-XML](https://schemas.liquid-technologies.com/HR-XML/2007-04-15/)
91
+ - [Europass](http://europass.cedefop.europa.eu/about-europass)
@@ -0,0 +1,141 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-04/schema#",
3
+ "additionalProperties": true,
4
+ "definitions": {
5
+ "iso8601": {
6
+ "type": "string",
7
+ "description": "Similar to the standard date type, but each section after the year is optional. e.g. 2014-06-29 or 2023-04",
8
+ "pattern": "^([1-2][0-9]{3}-[0-1][0-9]-[0-3][0-9]|[1-2][0-9]{3}-[0-1][0-9]|[1-2][0-9]{3})$"
9
+ }
10
+ },
11
+ "properties": {
12
+ "title": {
13
+ "type": "string",
14
+ "description": "e.g. Web Developer"
15
+ },
16
+ "company": {
17
+ "type": "string",
18
+ "description": "Microsoft"
19
+ },
20
+ "type": {
21
+ "type": "string",
22
+ "description": "Full-time, part-time, contract, etc."
23
+ },
24
+ "date": {
25
+ "$ref": "#/definitions/iso8601"
26
+ },
27
+ "description": {
28
+ "type": "string",
29
+ "description": "Write a short description about the job"
30
+ },
31
+ "location": {
32
+ "type": "object",
33
+ "additionalProperties": true,
34
+ "properties": {
35
+ "address": {
36
+ "type": "string",
37
+ "description": "To add multiple address lines, use \\n. For example, 1234 Glücklichkeit Straße\\nHinterhaus 5. Etage li."
38
+ },
39
+ "postalCode": {
40
+ "type": "string"
41
+ },
42
+ "city": {
43
+ "type": "string"
44
+ },
45
+ "countryCode": {
46
+ "type": "string",
47
+ "description": "code as per ISO-3166-1 ALPHA-2, e.g. US, AU, IN"
48
+ },
49
+ "region": {
50
+ "type": "string",
51
+ "description": "The general region where you live. Can be a US state, or a province, for instance."
52
+ }
53
+ }
54
+ },
55
+ "remote": {
56
+ "type": "string",
57
+ "description": "the level of remote work available",
58
+ "enum": [
59
+ "Full",
60
+ "Hybrid",
61
+ "None"
62
+ ]
63
+ },
64
+ "salary": {
65
+ "type": "string",
66
+ "description": "100000"
67
+ },
68
+ "experience": {
69
+ "type": "string",
70
+ "description": "Senior or Junior or Mid-level"
71
+ },
72
+ "responsibilities": {
73
+ "type": "array",
74
+ "description": "what the job entails",
75
+ "additionalItems": false,
76
+ "items": {
77
+ "type": "string",
78
+ "description": "e.g. Build out a new API for our customer base."
79
+ }
80
+ },
81
+ "qualifications": {
82
+ "type": "array",
83
+ "description": "List out your qualifications",
84
+ "additionalItems": false,
85
+ "items": {
86
+ "type": "string",
87
+ "description": "undergraduate degree, etc. "
88
+ }
89
+ },
90
+ "skills": {
91
+ "type": "array",
92
+ "description": "List out your professional skill-set",
93
+ "additionalItems": false,
94
+ "items": {
95
+ "type": "object",
96
+ "additionalProperties": true,
97
+ "properties": {
98
+ "name": {
99
+ "type": "string",
100
+ "description": "e.g. Web Development"
101
+ },
102
+ "level": {
103
+ "type": "string",
104
+ "description": "e.g. Master"
105
+ },
106
+ "keywords": {
107
+ "type": "array",
108
+ "description": "List some keywords pertaining to this skill",
109
+ "additionalItems": false,
110
+ "items": {
111
+ "type": "string",
112
+ "description": "e.g. HTML"
113
+ }
114
+ }
115
+ }
116
+ }
117
+ },
118
+ "meta": {
119
+ "type": "object",
120
+ "description": "The schema version and any other tooling configuration lives here",
121
+ "additionalProperties": true,
122
+ "properties": {
123
+ "canonical": {
124
+ "type": "string",
125
+ "description": "URL (as per RFC 3986) to latest version of this document",
126
+ "format": "uri"
127
+ },
128
+ "version": {
129
+ "type": "string",
130
+ "description": "A version field which follows semver - e.g. v1.0.0"
131
+ },
132
+ "lastModified": {
133
+ "type": "string",
134
+ "description": "Using ISO 8601 with YYYY-MM-DDThh:mm:ss"
135
+ }
136
+ }
137
+ }
138
+ },
139
+ "title": "Job Description Schema",
140
+ "type": "object"
141
+ }
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@jsonresume/schema",
3
+ "version": "1.0.1",
4
+ "description": "JSON Resume Schema",
5
+ "private": false,
6
+ "main": "validator.js",
7
+ "scripts": {
8
+ "test": "npm run validate && npm run test-units",
9
+ "validate": "ajv validate -s node_modules/json-metaschema/draft-07-schema -d schema",
10
+ "test-units": "tape **/*.spec.js | tap-spec",
11
+ "preversion": "npm test",
12
+ "postversion": "git push --follow-tags"
13
+ },
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git://github.com/jsonresume/resume-schema.git"
17
+ },
18
+ "license": "MIT",
19
+ "bugs": {
20
+ "url": "https://github.com/jsonresume/resume-schema/issues"
21
+ },
22
+ "files": [
23
+ "sample.resume.json",
24
+ "sample.job.json",
25
+ "schema.json",
26
+ "job-schema.json",
27
+ "validator.js"
28
+ ],
29
+ "dependencies": {
30
+ "z-schema": "^4.2.4"
31
+ },
32
+ "devDependencies": {
33
+ "ajv-cli": "^3.3.0",
34
+ "json-metaschema": "^1.3.0",
35
+ "tap-spec": "^5.0.0",
36
+ "tape": "^4.16.2"
37
+ },
38
+ "engines": {
39
+ "node": ">=20"
40
+ }
41
+ }
@@ -0,0 +1,57 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-04/schema#",
3
+ "title": "Web Developer",
4
+ "company": "Microsoft",
5
+ "type": "Full-time",
6
+ "date": "2024-07",
7
+ "description": "We are looking for a skilled Web Developer to join our team. The role involves building and maintaining web applications.",
8
+ "location": {
9
+ "address": "1234 Glücklichkeit Straße\nHinterhaus 5. Etage li.",
10
+ "postalCode": "10115",
11
+ "city": "Berlin",
12
+ "countryCode": "DE",
13
+ "region": "Berlin"
14
+ },
15
+ "remote": "Hybrid",
16
+ "salary": "100000",
17
+ "experience": "Mid-level",
18
+ "responsibilities": [
19
+ "Develop and maintain web applications",
20
+ "Collaborate with cross-functional teams",
21
+ "Ensure the technical feasibility of UI/UX designs",
22
+ "Optimize applications for maximum speed and scalability"
23
+ ],
24
+ "qualifications": [
25
+ "Bachelor's degree in Computer Science or related field",
26
+ "3+ years of experience in web development",
27
+ "Strong understanding of JavaScript, HTML, and CSS"
28
+ ],
29
+ "skills": [
30
+ {
31
+ "name": "Web Development",
32
+ "level": "Master",
33
+ "keywords": [
34
+ "HTML",
35
+ "CSS",
36
+ "JavaScript",
37
+ "React",
38
+ "Node.js"
39
+ ]
40
+ },
41
+ {
42
+ "name": "Database Management",
43
+ "level": "Intermediate",
44
+ "keywords": [
45
+ "SQL",
46
+ "NoSQL",
47
+ "MongoDB"
48
+ ]
49
+ }
50
+ ],
51
+ "meta": {
52
+ "canonical": "http://example.com/jobs/web-developer",
53
+ "version": "v1.0.0",
54
+ "lastModified": "2024-07-10T15:00:00"
55
+ }
56
+ }
57
+
@@ -0,0 +1,161 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/jsonresume/resume-schema/v1.0.0/schema.json",
3
+ "basics": {
4
+ "name": "Richard Hendriks",
5
+ "label": "Programmer",
6
+ "image": "",
7
+ "email": "richard.hendriks@mail.com",
8
+ "phone": "(912) 555-4321",
9
+ "url": "http://richardhendricks.example.com",
10
+ "summary": "Richard hails from Tulsa. He has earned degrees from the University of Oklahoma and Stanford. (Go Sooners and Cardinal!) 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!",
11
+ "location": {
12
+ "address": "2712 Broadway St",
13
+ "postalCode": "CA 94115",
14
+ "city": "San Francisco",
15
+ "countryCode": "US",
16
+ "region": "California"
17
+ },
18
+ "profiles": [
19
+ {
20
+ "network": "Twitter",
21
+ "username": "neutralthoughts",
22
+ "url": ""
23
+ },
24
+ {
25
+ "network": "SoundCloud",
26
+ "username": "dandymusicnl",
27
+ "url": "https://soundcloud.example.com/dandymusicnl"
28
+ }
29
+ ]
30
+ },
31
+ "work": [
32
+ {
33
+ "name": "Pied Piper",
34
+ "location": "Palo Alto, CA",
35
+ "description": "Awesome compression company",
36
+ "position": "CEO/President",
37
+ "url": "http://piedpiper.example.com",
38
+ "startDate": "2013-12-01",
39
+ "endDate": "2014-12-01",
40
+ "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.",
41
+ "highlights": [
42
+ "Build an algorithm for artist to detect if their music was violating copy right infringement laws",
43
+ "Successfully won Techcrunch Disrupt",
44
+ "Optimized an algorithm that holds the current world record for Weisman Scores"
45
+ ]
46
+ }
47
+ ],
48
+ "volunteer": [
49
+ {
50
+ "organization": "CoderDojo",
51
+ "position": "Teacher",
52
+ "url": "http://coderdojo.example.com/",
53
+ "startDate": "2012-01-01",
54
+ "endDate": "2013-01-01",
55
+ "summary": "Global movement of free coding clubs for young people.",
56
+ "highlights": [
57
+ "Awarded 'Teacher of the Month'"
58
+ ]
59
+ }
60
+ ],
61
+ "education": [
62
+ {
63
+ "institution": "University of Oklahoma",
64
+ "url": "https://www.ou.edu/",
65
+ "area": "Information Technology",
66
+ "studyType": "Bachelor",
67
+ "startDate": "2011-06-01",
68
+ "endDate": "2014-01-01",
69
+ "score": "4.0",
70
+ "courses": [
71
+ "DB1101 - Basic SQL",
72
+ "CS2011 - Java Introduction"
73
+ ]
74
+ }
75
+ ],
76
+ "awards": [
77
+ {
78
+ "title": "Digital Compression Pioneer Award",
79
+ "date": "2014-11-01",
80
+ "awarder": "Techcrunch",
81
+ "summary": "There is no spoon."
82
+ }
83
+ ],
84
+ "publications": [
85
+ {
86
+ "name": "Video compression for 3d media",
87
+ "publisher": "Hooli",
88
+ "releaseDate": "2014-10-01",
89
+ "url": "http://en.wikipedia.org/wiki/Silicon_Valley_(TV_series)",
90
+ "summary": "Innovative middle-out compression algorithm that changes the way we store data."
91
+ }
92
+ ],
93
+ "skills": [
94
+ {
95
+ "name": "Web Development",
96
+ "level": "Master",
97
+ "keywords": [
98
+ "HTML",
99
+ "CSS",
100
+ "Javascript"
101
+ ]
102
+ },
103
+ {
104
+ "name": "Compression",
105
+ "level": "Master",
106
+ "keywords": [
107
+ "Mpeg",
108
+ "MP4",
109
+ "GIF"
110
+ ]
111
+ }
112
+ ],
113
+ "languages": [
114
+ {
115
+ "language": "English",
116
+ "fluency": "Native speaker"
117
+ }
118
+ ],
119
+ "interests": [
120
+ {
121
+ "name": "Wildlife",
122
+ "keywords": [
123
+ "Ferrets",
124
+ "Unicorns"
125
+ ]
126
+ }
127
+ ],
128
+ "references": [
129
+ {
130
+ "name": "Erlich Bachman",
131
+ "reference": "It is my pleasure to recommend Richard, his performance working as a consultant for Main St. Company proved that he will be a valuable addition to any company."
132
+ }
133
+ ],
134
+ "projects": [
135
+ {
136
+ "name": "Miss Direction",
137
+ "description": "A mapping engine that misguides you",
138
+ "highlights": [
139
+ "Won award at AIHacks 2016",
140
+ "Built by all women team of newbie programmers",
141
+ "Using modern technologies such as GoogleMaps, Chrome Extension and Javascript"
142
+ ],
143
+ "keywords": [
144
+ "GoogleMaps", "Chrome Extension", "Javascript"
145
+ ],
146
+ "startDate": "2016-08-24",
147
+ "endDate": "2016-08-24",
148
+ "url": "http://missdirection.example.com",
149
+ "roles": [
150
+ "Team lead", "Designer"
151
+ ],
152
+ "entity": "Smoogle",
153
+ "type": "application"
154
+ }
155
+ ],
156
+ "meta": {
157
+ "canonical": "https://raw.githubusercontent.com/jsonresume/resume-schema/v1.0.0/sample.resume.json",
158
+ "version": "v1.0.0",
159
+ "lastModified": "2017-12-24T15:53:00"
160
+ }
161
+ }
package/schema.json ADDED
@@ -0,0 +1,500 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-04/schema#",
3
+ "additionalProperties": false,
4
+ "definitions": {
5
+ "iso8601": {
6
+ "type": "string",
7
+ "description": "e.g. 2014-06-29",
8
+ "pattern": "^([1-2][0-9]{3}-[0-1][0-9]-[0-3][0-9]|[1-2][0-9]{3}-[0-1][0-9]|[1-2][0-9]{3})$"
9
+ }
10
+ },
11
+ "properties": {
12
+ "$schema": {
13
+ "type": "string",
14
+ "description": "link to the version of the schema that can validate the resume",
15
+ "format": "uri"
16
+ },
17
+ "basics": {
18
+ "type": "object",
19
+ "additionalProperties": true,
20
+ "properties": {
21
+ "name": {
22
+ "type": "string"
23
+ },
24
+ "label": {
25
+ "type": "string",
26
+ "description": "e.g. Web Developer"
27
+ },
28
+ "image": {
29
+ "type": "string",
30
+ "description": "URL (as per RFC 3986) to a image in JPEG or PNG format"
31
+ },
32
+ "email": {
33
+ "type": "string",
34
+ "description": "e.g. thomas@gmail.com",
35
+ "format": "email"
36
+ },
37
+ "phone": {
38
+ "type": "string",
39
+ "description": "Phone numbers are stored as strings so use any format you like, e.g. 712-117-2923"
40
+ },
41
+ "url": {
42
+ "type": "string",
43
+ "description": "URL (as per RFC 3986) to your website, e.g. personal homepage",
44
+ "format": "uri"
45
+ },
46
+ "summary": {
47
+ "type": "string",
48
+ "description": "Write a short 2-3 sentence biography about yourself"
49
+ },
50
+ "location": {
51
+ "type": "object",
52
+ "additionalProperties": true,
53
+ "properties": {
54
+ "address": {
55
+ "type": "string",
56
+ "description": "To add multiple address lines, use \n. For example, 1234 Glücklichkeit Straße\nHinterhaus 5. Etage li."
57
+ },
58
+ "postalCode": {
59
+ "type": "string"
60
+ },
61
+ "city": {
62
+ "type": "string"
63
+ },
64
+ "countryCode": {
65
+ "type": "string",
66
+ "description": "code as per ISO-3166-1 ALPHA-2, e.g. US, AU, IN"
67
+ },
68
+ "region": {
69
+ "type": "string",
70
+ "description": "The general region where you live. Can be a US state, or a province, for instance."
71
+ }
72
+ }
73
+ },
74
+ "profiles": {
75
+ "type": "array",
76
+ "description": "Specify any number of social networks that you participate in",
77
+ "additionalItems": false,
78
+ "items": {
79
+ "type": "object",
80
+ "additionalProperties": true,
81
+ "properties": {
82
+ "network": {
83
+ "type": "string",
84
+ "description": "e.g. Facebook or Twitter"
85
+ },
86
+ "username": {
87
+ "type": "string",
88
+ "description": "e.g. neutralthoughts"
89
+ },
90
+ "url": {
91
+ "type": "string",
92
+ "description": "e.g. http://twitter.example.com/neutralthoughts",
93
+ "format": "uri"
94
+ }
95
+ }
96
+ }
97
+ }
98
+ }
99
+ },
100
+ "work": {
101
+ "type": "array",
102
+ "additionalItems": false,
103
+ "items": {
104
+ "type": "object",
105
+ "additionalProperties": true,
106
+ "properties": {
107
+ "name": {
108
+ "type": "string",
109
+ "description": "e.g. Facebook"
110
+ },
111
+ "location": {
112
+ "type": "string",
113
+ "description": "e.g. Menlo Park, CA"
114
+ },
115
+ "description": {
116
+ "type": "string",
117
+ "description": "e.g. Social Media Company"
118
+ },
119
+ "position": {
120
+ "type": "string",
121
+ "description": "e.g. Software Engineer"
122
+ },
123
+ "url": {
124
+ "type": "string",
125
+ "description": "e.g. http://facebook.example.com",
126
+ "format": "uri"
127
+ },
128
+ "startDate": {
129
+ "$ref": "#/definitions/iso8601"
130
+ },
131
+ "endDate": {
132
+ "$ref": "#/definitions/iso8601"
133
+ },
134
+ "summary": {
135
+ "type": "string",
136
+ "description": "Give an overview of your responsibilities at the company"
137
+ },
138
+ "highlights": {
139
+ "type": "array",
140
+ "description": "Specify multiple accomplishments",
141
+ "additionalItems": false,
142
+ "items": {
143
+ "type": "string",
144
+ "description": "e.g. Increased profits by 20% from 2011-2012 through viral advertising"
145
+ }
146
+ }
147
+ }
148
+ }
149
+ },
150
+ "volunteer": {
151
+ "type": "array",
152
+ "additionalItems": false,
153
+ "items": {
154
+ "type": "object",
155
+ "additionalProperties": true,
156
+ "properties": {
157
+ "organization": {
158
+ "type": "string",
159
+ "description": "e.g. Facebook"
160
+ },
161
+ "position": {
162
+ "type": "string",
163
+ "description": "e.g. Software Engineer"
164
+ },
165
+ "url": {
166
+ "type": "string",
167
+ "description": "e.g. http://facebook.example.com",
168
+ "format": "uri"
169
+ },
170
+ "startDate": {
171
+ "$ref": "#/definitions/iso8601"
172
+ },
173
+ "endDate": {
174
+ "$ref": "#/definitions/iso8601"
175
+ },
176
+ "summary": {
177
+ "type": "string",
178
+ "description": "Give an overview of your responsibilities at the company"
179
+ },
180
+ "highlights": {
181
+ "type": "array",
182
+ "description": "Specify accomplishments and achievements",
183
+ "additionalItems": false,
184
+ "items": {
185
+ "type": "string",
186
+ "description": "e.g. Increased profits by 20% from 2011-2012 through viral advertising"
187
+ }
188
+ }
189
+ }
190
+ }
191
+ },
192
+ "education": {
193
+ "type": "array",
194
+ "additionalItems": false,
195
+ "items": {
196
+ "type": "object",
197
+ "additionalProperties": true,
198
+ "properties": {
199
+ "institution": {
200
+ "type": "string",
201
+ "description": "e.g. Massachusetts Institute of Technology"
202
+ },
203
+ "url": {
204
+ "type": "string",
205
+ "description": "e.g. http://facebook.example.com",
206
+ "format": "uri"
207
+ },
208
+ "area": {
209
+ "type": "string",
210
+ "description": "e.g. Arts"
211
+ },
212
+ "studyType": {
213
+ "type": "string",
214
+ "description": "e.g. Bachelor"
215
+ },
216
+ "startDate": {
217
+ "$ref": "#/definitions/iso8601"
218
+ },
219
+ "endDate": {
220
+ "$ref": "#/definitions/iso8601"
221
+ },
222
+ "score": {
223
+ "type": "string",
224
+ "description": "grade point average, e.g. 3.67/4.0"
225
+ },
226
+ "courses": {
227
+ "type": "array",
228
+ "description": "List notable courses/subjects",
229
+ "additionalItems": false,
230
+ "items": {
231
+ "type": "string",
232
+ "description": "e.g. H1302 - Introduction to American history"
233
+ }
234
+ }
235
+ }
236
+ }
237
+ },
238
+ "awards": {
239
+ "type": "array",
240
+ "description": "Specify any awards you have received throughout your professional career",
241
+ "additionalItems": false,
242
+ "items": {
243
+ "type": "object",
244
+ "additionalProperties": true,
245
+ "properties": {
246
+ "title": {
247
+ "type": "string",
248
+ "description": "e.g. One of the 100 greatest minds of the century"
249
+ },
250
+ "date": {
251
+ "$ref": "#/definitions/iso8601"
252
+ },
253
+ "awarder": {
254
+ "type": "string",
255
+ "description": "e.g. Time Magazine"
256
+ },
257
+ "summary": {
258
+ "type": "string",
259
+ "description": "e.g. Received for my work with Quantum Physics"
260
+ }
261
+ }
262
+ }
263
+ },
264
+ "certificates": {
265
+ "type": "array",
266
+ "description": "Specify any certificates you have received throughout your professional career",
267
+ "additionalItems": false,
268
+ "items": {
269
+ "type": "object",
270
+ "additionalProperties": true,
271
+ "properties": {
272
+ "name": {
273
+ "type": "string",
274
+ "description": "e.g. Certified Kubernetes Administrator"
275
+ },
276
+ "date": {
277
+ "type": "string",
278
+ "description": "e.g. 1989-06-12",
279
+ "format": "date"
280
+ },
281
+ "url": {
282
+ "type": "string",
283
+ "description": "e.g. http://example.com",
284
+ "format": "uri"
285
+ },
286
+ "issuer": {
287
+ "type": "string",
288
+ "description": "e.g. CNCF"
289
+ }
290
+ }
291
+ }
292
+ },
293
+ "publications": {
294
+ "type": "array",
295
+ "description": "Specify your publications through your career",
296
+ "additionalItems": false,
297
+ "items": {
298
+ "type": "object",
299
+ "additionalProperties": true,
300
+ "properties": {
301
+ "name": {
302
+ "type": "string",
303
+ "description": "e.g. The World Wide Web"
304
+ },
305
+ "publisher": {
306
+ "type": "string",
307
+ "description": "e.g. IEEE, Computer Magazine"
308
+ },
309
+ "releaseDate": {
310
+ "$ref": "#/definitions/iso8601"
311
+ },
312
+ "url": {
313
+ "type": "string",
314
+ "description": "e.g. http://www.computer.org.example.com/csdl/mags/co/1996/10/rx069-abs.html",
315
+ "format": "uri"
316
+ },
317
+ "summary": {
318
+ "type": "string",
319
+ "description": "Short summary of publication. e.g. Discussion of the World Wide Web, HTTP, HTML."
320
+ }
321
+ }
322
+ }
323
+ },
324
+ "skills": {
325
+ "type": "array",
326
+ "description": "List out your professional skill-set",
327
+ "additionalItems": false,
328
+ "items": {
329
+ "type": "object",
330
+ "additionalProperties": true,
331
+ "properties": {
332
+ "name": {
333
+ "type": "string",
334
+ "description": "e.g. Web Development"
335
+ },
336
+ "level": {
337
+ "type": "string",
338
+ "description": "e.g. Master"
339
+ },
340
+ "keywords": {
341
+ "type": "array",
342
+ "description": "List some keywords pertaining to this skill",
343
+ "additionalItems": false,
344
+ "items": {
345
+ "type": "string",
346
+ "description": "e.g. HTML"
347
+ }
348
+ }
349
+ }
350
+ }
351
+ },
352
+ "languages": {
353
+ "type": "array",
354
+ "description": "List any other languages you speak",
355
+ "additionalItems": false,
356
+ "items": {
357
+ "type": "object",
358
+ "additionalProperties": true,
359
+ "properties": {
360
+ "language": {
361
+ "type": "string",
362
+ "description": "e.g. English, Spanish"
363
+ },
364
+ "fluency": {
365
+ "type": "string",
366
+ "description": "e.g. Fluent, Beginner"
367
+ }
368
+ }
369
+ }
370
+ },
371
+ "interests": {
372
+ "type": "array",
373
+ "additionalItems": false,
374
+ "items": {
375
+ "type": "object",
376
+ "additionalProperties": true,
377
+ "properties": {
378
+ "name": {
379
+ "type": "string",
380
+ "description": "e.g. Philosophy"
381
+ },
382
+ "keywords": {
383
+ "type": "array",
384
+ "additionalItems": false,
385
+ "items": {
386
+ "type": "string",
387
+ "description": "e.g. Friedrich Nietzsche"
388
+ }
389
+ }
390
+ }
391
+ }
392
+ },
393
+ "references": {
394
+ "type": "array",
395
+ "description": "List references you have received",
396
+ "additionalItems": false,
397
+ "items": {
398
+ "type": "object",
399
+ "additionalProperties": true,
400
+ "properties": {
401
+ "name": {
402
+ "type": "string",
403
+ "description": "e.g. Timothy Cook"
404
+ },
405
+ "reference": {
406
+ "type": "string",
407
+ "description": "e.g. Joe blogs was a great employee, who turned up to work at least once a week. He exceeded my expectations when it came to doing nothing."
408
+ }
409
+ }
410
+ }
411
+ },
412
+ "projects": {
413
+ "type": "array",
414
+ "description": "Specify career projects",
415
+ "additionalItems": false,
416
+ "items": {
417
+ "type": "object",
418
+ "additionalProperties": true,
419
+ "properties": {
420
+ "name": {
421
+ "type": "string",
422
+ "description": "e.g. The World Wide Web"
423
+ },
424
+ "description": {
425
+ "type": "string",
426
+ "description": "Short summary of project. e.g. Collated works of 2017."
427
+ },
428
+ "highlights": {
429
+ "type": "array",
430
+ "description": "Specify multiple features",
431
+ "additionalItems": false,
432
+ "items": {
433
+ "type": "string",
434
+ "description": "e.g. Directs you close but not quite there"
435
+ }
436
+ },
437
+ "keywords": {
438
+ "type": "array",
439
+ "description": "Specify special elements involved",
440
+ "additionalItems": false,
441
+ "items": {
442
+ "type": "string",
443
+ "description": "e.g. AngularJS"
444
+ }
445
+ },
446
+ "startDate": {
447
+ "$ref": "#/definitions/iso8601"
448
+ },
449
+ "endDate": {
450
+ "$ref": "#/definitions/iso8601"
451
+ },
452
+ "url": {
453
+ "type": "string",
454
+ "format": "uri",
455
+ "description": "e.g. http://www.computer.org/csdl/mags/co/1996/10/rx069-abs.html"
456
+ },
457
+ "roles": {
458
+ "type": "array",
459
+ "description": "Specify your role on this project or in company",
460
+ "additionalItems": false,
461
+ "items": {
462
+ "type": "string",
463
+ "description": "e.g. Team Lead, Speaker, Writer"
464
+ }
465
+ },
466
+ "entity": {
467
+ "type": "string",
468
+ "description": "Specify the relevant company/entity affiliations e.g. 'greenpeace', 'corporationXYZ'"
469
+ },
470
+ "type": {
471
+ "type": "string",
472
+ "description": " e.g. 'volunteering', 'presentation', 'talk', 'application', 'conference'"
473
+ }
474
+ }
475
+ }
476
+ },
477
+ "meta": {
478
+ "type": "object",
479
+ "description": "The schema version and any other tooling configuration lives here",
480
+ "additionalProperties": true,
481
+ "properties": {
482
+ "canonical": {
483
+ "type": "string",
484
+ "description": "URL (as per RFC 3986) to latest version of this document",
485
+ "format": "uri"
486
+ },
487
+ "version": {
488
+ "type": "string",
489
+ "description": "A version field which follows semver - e.g. v1.0.0"
490
+ },
491
+ "lastModified": {
492
+ "type": "string",
493
+ "description": "Using ISO 8601 with YYYY-MM-DDThh:mm:ss"
494
+ }
495
+ }
496
+ }
497
+ },
498
+ "title": "Resume Schema",
499
+ "type": "object"
500
+ }
package/validator.js ADDED
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+ var ZSchema = require('z-schema');
3
+ var schema = require('./schema');
4
+
5
+ function validate(resumeJson, callback) {
6
+ var callbackWrapper = function(err, valid) {
7
+ if(err) {
8
+ callback(err)
9
+ } else {
10
+ callback(null, {valid: valid});
11
+ }
12
+ }
13
+
14
+ new ZSchema().validate(resumeJson, schema, callbackWrapper);
15
+ }
16
+
17
+ module.exports = {
18
+ validate: validate,
19
+ schema: schema
20
+ };