├── src ├── views │ ├── fragments │ │ ├── footer.jade │ │ ├── dinosaur.jade │ │ ├── layout.jade │ │ ├── side.jade │ │ └── middle.jade │ └── index.jade ├── assets │ ├── github.png │ ├── linkedin.png │ ├── profile-pic-1.jpg │ └── profile-pic-2.jpg ├── scripts │ └── page-actions.coffee ├── styles │ └── basic.sass └── locals.json ├── .gitignore ├── .bowerrc ├── examples ├── example-2.jpg ├── example-2.png ├── example-3.jpg ├── example-3.png ├── example-4.png ├── example-locals-2.json ├── example-locals-3.json └── example-locals-4.json ├── server.js ├── package.json ├── gulpfile.js └── readme.md /src/views/fragments/footer.jade: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .idea 3 | production -------------------------------------------------------------------------------- /.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "production/bower_components/" 3 | } -------------------------------------------------------------------------------- /src/assets/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lissy93/md-cv-maker/HEAD/src/assets/github.png -------------------------------------------------------------------------------- /examples/example-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lissy93/md-cv-maker/HEAD/examples/example-2.jpg -------------------------------------------------------------------------------- /examples/example-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lissy93/md-cv-maker/HEAD/examples/example-2.png -------------------------------------------------------------------------------- /examples/example-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lissy93/md-cv-maker/HEAD/examples/example-3.jpg -------------------------------------------------------------------------------- /examples/example-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lissy93/md-cv-maker/HEAD/examples/example-3.png -------------------------------------------------------------------------------- /examples/example-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lissy93/md-cv-maker/HEAD/examples/example-4.png -------------------------------------------------------------------------------- /src/assets/linkedin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lissy93/md-cv-maker/HEAD/src/assets/linkedin.png -------------------------------------------------------------------------------- /src/assets/profile-pic-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lissy93/md-cv-maker/HEAD/src/assets/profile-pic-1.jpg -------------------------------------------------------------------------------- /src/assets/profile-pic-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lissy93/md-cv-maker/HEAD/src/assets/profile-pic-2.jpg -------------------------------------------------------------------------------- /src/views/index.jade: -------------------------------------------------------------------------------- 1 | extend fragments/layout 2 | block content 3 | 4 | .row 5 | .col.s12.m3.side-bar.z-depth-1 6 | include ./fragments/side 7 | .col.s12.m9 8 | include ./fragments/middle -------------------------------------------------------------------------------- /server.js: -------------------------------------------------------------------------------- 1 | 2 | var connect = require('connect'); 3 | var serveStatic = require('serve-static'); 4 | 5 | connect().use(serveStatic(__dirname+'/production')).listen(8080, function(){ 6 | console.log('Server running on 8080...'); 7 | }); -------------------------------------------------------------------------------- /src/scripts/page-actions.coffee: -------------------------------------------------------------------------------- 1 | # Set the color of the content links to template color 2 | links = document.getElementsByTagName('a') 3 | i = 0 4 | while i < links.length 5 | if links[i].href 6 | links[i].className += textColor 7 | i++ 8 | -------------------------------------------------------------------------------- /src/views/fragments/dinosaur.jade: -------------------------------------------------------------------------------- 1 | 2 | | -------------------------------------------------------------------------------- /src/views/fragments/layout.jade: -------------------------------------------------------------------------------- 1 | include ./dinosaur.jade 2 | 3 | doctype html 4 | html 5 | head 6 | meta(charset='utf-8') 7 | meta(name='viewport', content='width=device-width, initial-scale=1') 8 | title= title 9 | link(href='https://fonts.googleapis.com/icon?family=Material+Icons', rel='stylesheet') 10 | link(rel='stylesheet', href='lib/node_modules/materialize-css/dist/css/materialize.min.css') 11 | link(rel='stylesheet', href='css/styles.css') 12 | 13 | body.grey.lighten-3 14 | block content 15 | script. 16 | var textColor = " #{design.color}-text" 17 | script(src="js/scripts.js") 18 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "CV", 3 | "version": "1.0.0", 4 | "description": "Alicia Sykes Curriculum Vitae", 5 | "main": "server.js", 6 | "repository": "https://github.com/Lissy93/website", 7 | "scripts": { 8 | "test": "gulp test", 9 | "build": "gulp build", 10 | "watch": "gulp watch", 11 | "serve": "node server", 12 | "postinstall": "gulp build" 13 | }, 14 | "author": "Alicia Sykes", 15 | "license": "MIT", 16 | "devDependencies": { 17 | "coffeelint-stylish": "^0.1.2", 18 | "del": "^2.2.0", 19 | "gulp": "^3.9.1", 20 | "gulp-clean-css": "^2.0.7", 21 | "gulp-coffee": "^2.3.2", 22 | "gulp-concat": "^2.6.0", 23 | "gulp-copy": "^4.0.1", 24 | "gulp-jade": "^1.1.0", 25 | "gulp-sass": "^2.3.1", 26 | "gulp-uglify": "^1.5.3", 27 | "gulp-util": "^3.0.7" 28 | }, 29 | "dependencies": { 30 | "connect": "^3.4.1", 31 | "materialize-css": "^1.0.0", 32 | "serve-static": "^1.10.2" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/views/fragments/side.jade: -------------------------------------------------------------------------------- 1 | header(class="#{design.color}") 2 | .card 3 | .card-image.show-on-medium-and-up 4 | img.profile-pic(src="#{headshot.url}", alt="#{headshot.alt}") 5 | h1.card-title= heading1 6 | 7 | .bio-container.z-depth-1 8 | h2(style='margin: 0 0 0.2em 1em') About 9 | .row 10 | i.col.s2.small.white-text.material-icons perm_identity 11 | span.col.s10.white-text!= bio.join(" ").replace(/\n/g, "
") 12 | 13 | - if (typeof(contact) !== 'undefined'){ 14 | .contact-container 15 | h2 Contact 16 | - if (typeof(contact.email) !== 'undefined'){ 17 | .row 18 | i.col.s2.small.white-text.material-icons email 19 | a(href="mailto:#{contact.email}").col.s10.white-text= contact.email 20 | - } 21 | - if (typeof(contact.phone) !== 'undefined'){ 22 | .row 23 | i.col.s2.small.white-text.material-icons phone 24 | a(href="dialer:#{contact.phone}").col.s10.white-text= contact.phone 25 | - } 26 | - if (typeof(contact.address) !== 'undefined'){ 27 | .row 28 | i.col.s2.small.white-text.material-icons location_on 29 | span.col.s10.white-text= contact.address 30 | - } 31 | - } 32 | 33 | - if (typeof(social) !== 'undefined'){ 34 | .links-container 35 | h2 Links 36 | - if (typeof(contact.website) !== 'undefined'){ 37 | .row 38 | i.col.s2.small.white-text.material-icons http 39 | a(href='http://#{contact.website}').col.s10.white-text= contact.website 40 | - } 41 | - if (typeof(social.github) !== 'undefined'){ 42 | .row 43 | .col.s2: img(src='assets/github.png') 44 | a(href='https://#{social.github}').col.s10.white-text= social.github 45 | - } 46 | - if (typeof(social.linkedin) !== 'undefined'){ 47 | .row 48 | .col.s2: img(src='assets/linkedin.png') 49 | a(href='https://#{social.linkedin}').col.s10.white-text= social.linkedin 50 | - } 51 | - } 52 | -------------------------------------------------------------------------------- /src/styles/basic.sass: -------------------------------------------------------------------------------- 1 | 2 | .hide-on-computer 3 | display: none 4 | 5 | html, body, .row, .side-bar, header 6 | height: 100% 7 | 8 | /* SIDEBAR */ 9 | .side-bar 10 | padding: 0 !important 11 | header 12 | overflow-x: hidden 13 | overflow-y: auto 14 | width: inherit 15 | @media (min-width: 601px) 16 | position: fixed 17 | .card 18 | background: inherit 19 | margin: 0 20 | .card-image .profile-pic 21 | width: 100% 22 | .contact-container, .links-container 23 | .row 24 | margin: 15px 0 25 | .col img 26 | width: 25px 27 | .bio-container 28 | padding: 20px 0 29 | background: rgba(255, 255, 255, 0.4) 30 | .skills-container 31 | padding: 20px 0 32 | margin-bottom: 20px 33 | background: rgba(255,255,255,0.25) 34 | 35 | /* MAIN CONTENT */ 36 | .main-content 37 | margin: 20px auto 38 | width: 90% 39 | p:not(:last-child) 40 | padding-bottom: 15px 41 | border-bottom: 1px solid #e2e2e2 42 | 43 | .pad 44 | padding: 1em !important 45 | 46 | 47 | /* TEXT */ 48 | a 49 | color: #008ece 50 | 51 | a:hover 52 | text-decoration: underline 53 | 54 | 55 | h1 56 | background: rgba(0,0,0,0.6) 57 | h2 58 | font-size: 1.8em 59 | font-weight: 200 60 | color: #FFFFFF 61 | text-shadow: 1px 1px 1px rgba(0,0,0,0.3) 62 | margin: 0.5em 0 0 1em 63 | 64 | h4 65 | font-weight: 400 66 | color: #9e9e9e 67 | 68 | h5 69 | margin-bottom: 0 70 | 71 | 72 | /* OVERIDING STYLES FOR THE PRINTER VERSION*/ 73 | @media print 74 | .hide-on-computer 75 | display: block 76 | 77 | .main-content 78 | width: 100% 79 | margin: 0 80 | 81 | .col 82 | border-bottom: 1px solid grey 83 | 84 | .pad 85 | padding: 0 !important 86 | 87 | .side-bar, i 88 | display: none !important 89 | 90 | p, b, span, a, div, h1, h2, h3, h4, h5, h6 91 | color: #000000 !important 92 | 93 | b, span 94 | display: inline 95 | 96 | div 97 | box-shadow: none !important 98 | 99 | p, span 100 | font-size: 0.9em 101 | line-height: 1 102 | 103 | h1 104 | background: none 105 | text-align: center 106 | font-size: 1.8em 107 | margin: 0 108 | padding: 0 109 | 110 | h4 111 | font-size: 1.6em 112 | margin: 0 113 | padding: 0 114 | 115 | h5 116 | font-size: 1.1em 117 | font-weight: normal 118 | -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | 2 | var gulp = require('gulp'); 3 | var gutil = require ('gulp-util'); 4 | var del = require('del'); 5 | var jade = require('gulp-jade'); 6 | var coffee = require('gulp-coffee'); 7 | var concat = require('gulp-concat'); 8 | var uglify = require('gulp-uglify'); 9 | var sass = require('gulp-sass'); 10 | var copy = require('gulp-copy'); 11 | var cleanCSS= require('gulp-clean-css'); 12 | 13 | 14 | // Compile Jade views into HTML 15 | gulp.task('views', function() { 16 | locals = require('./src/locals.json'); 17 | gulp.src('./src/views/*.jade') 18 | .pipe(jade({locals: locals})) 19 | .pipe(gulp.dest('./production/')) 20 | }); 21 | 22 | 23 | // Compile CoffeeScript into JS, concat and minify 24 | gulp.task('coffee', function() { 25 | gulp.src('./src/scripts/**/*.coffee') 26 | .pipe(coffee({bare: true}).on('error', gutil.log)) 27 | .pipe(concat('scripts.js')) 28 | .pipe(uglify()) 29 | .pipe(gulp.dest('./production/js')); 30 | }); 31 | 32 | 33 | // Compile SASS into CSS, concat and minify 34 | gulp.task('sass', function () { 35 | return gulp.src('./src/styles/basic.sass') 36 | .pipe(sass().on('error', gutil.log)) 37 | .pipe(concat('styles.css')) 38 | .pipe(cleanCSS({compatibility: 'ie8'})) 39 | .pipe(gulp.dest('./production/css')); 40 | }); 41 | 42 | 43 | // Copy all static assets to production 44 | gulp.task('assets', function () { 45 | return gulp.src('./src/assets/**/*') 46 | .pipe(gulp.dest('./production/assets')); 47 | }); 48 | 49 | 50 | // Watch source for changes, and run appropriate task 51 | gulp.task('watch', function() { 52 | gulp.watch('src/views/**/*.jade', ['views'] ); 53 | gulp.watch('src/scripts/**/*.coffee', ['coffee'] ); 54 | gulp.watch('src/styles/**/*.sass', ['sass'] ); 55 | gulp.watch('src/assets/**/*', ['assets'] ); 56 | gulp.watch('src/locals.json', ['build']); 57 | }); 58 | 59 | 60 | // Run tests 61 | gulp.task('test', function(){ 62 | gutil.log(gutil.colors.yellow( 63 | 'No tests have been configured in the gulpfile yet.' 64 | )); 65 | }); 66 | 67 | 68 | // Copy lib files 69 | gulp.task('lib', function(){ 70 | listOfLibraries = ['node_modules/materialize-css/dist/css/materialize.min.css'] 71 | return gulp 72 | .src(listOfLibraries) 73 | .pipe(copy('production/lib')) 74 | }); 75 | 76 | 77 | // Delete production files 78 | gulp.task('clean', function () { 79 | return del([ 'production' ]); 80 | }); 81 | 82 | 83 | // Build complete project 84 | gulp.task('build', ['clean'], function(){ 85 | gulp.start('views', 'coffee', 'sass', 'assets', 'lib'); 86 | gutil.beep(); // Delete this line if you don't like the sound effects! 87 | }); 88 | 89 | 90 | // Default task - build the project then run tests 91 | gulp.task('default', ['build'], function(){ 92 | gulp.start('test'); 93 | }); 94 | -------------------------------------------------------------------------------- /src/views/fragments/middle.jade: -------------------------------------------------------------------------------- 1 | 2 | .main-content 3 | .row 4 | .hide-on-computer 5 | h1=heading1 6 | - if (typeof(bio) !== 'undefined'){ 7 | h4 perm_identity About 8 | .col.s12.card-panel 9 | p!= bio.join(" ").replace(/\n/g, "
") 10 | - } 11 | 12 | - if (typeof(employment) !== 'undefined'){ 13 | h4 assignment Employment 14 | .col.s12.card-panel 15 | for job in employment 16 | h5 #{job.role} @ #{job.place} 17 | small.grey-text= job.dates 18 | p!= job.description.join(" ") 19 | - } 20 | 21 | - if (typeof(experience) !== 'undefined'){ 22 | h4 done_all Other Experience 23 | .col.s12.card-panel 24 | for stuff in experience 25 | h5 #{stuff.title} 26 | small.grey-text= stuff.subtitle 27 | p!= stuff.description.join(" ") 28 | - } 29 | 30 | 31 | - if (typeof(education) !== 'undefined'){ 32 | h4 class Education 33 | .col.s12.card-panel 34 | for school in education 35 | h5 #{school.course} @ #{school.establishment} 36 | small.grey-text= school.dates 37 | p= school.description.join(" ") 38 | - } 39 | 40 | 41 | 42 | - if (typeof(skills) !== 'undefined'){ 43 | h4 list Key Skills 44 | .col.s12.card-panel 45 | for skill in skills 46 | span(style='font-size:#{(skill.level / 6)+0.6}em; cursor: default', title='#{skill.type}: #{skill.name}. Competency: #{skill.level}/5') #{skill.name}   47 | - } 48 | 49 | - if (typeof(hobies) !== 'undefined'){ 50 | h4 stars Hobbies and Interests 51 | .col.s12.card-panel.pad 52 | p= hobies.join(" ") 53 | - } 54 | 55 | 56 | .row.hide-on-computer 57 | - if (typeof(contact) !== 'undefined'){ 58 | .col.s6 59 | h4 Contact 60 | .card-panel 61 | - if (typeof(contact.email) !== 'undefined'){ 62 | b Email: 63 | span!= ' '+contact.email 64 | br 65 | - } 66 | - if (typeof(contact.phone) !== 'undefined'){ 67 | b Phone: 68 | span!= ' '+contact.phone 69 | br 70 | - } 71 | - if (typeof(contact.address) !== 'undefined'){ 72 | b Address: 73 | span!= ' '+contact.address 74 | - } 75 | - } 76 | - if (typeof(social) !== 'undefined'){ 77 | .col.s6.hide-on-computer 78 | h4 Links 79 | .card-panel 80 | - if (typeof(contact.website) !== 'undefined'){ 81 | b Website: 82 | span!= ' ' + contact.website 83 | br 84 | - } 85 | - if (typeof(social.github) !== 'undefined'){ 86 | b GitHub: 87 | span!= ' ' + social.github 88 | br 89 | - } 90 | - if (typeof(social.linkedin) !== 'undefined'){ 91 | b LinkedIn: 92 | span!= ' ' + social.linkedin 93 | - } 94 | 95 | - } 96 | -------------------------------------------------------------------------------- /examples/example-locals-2.json: -------------------------------------------------------------------------------- 1 | { 2 | "title":"John Smith CV", 3 | "heading1":"John Smith", 4 | "contact":{ 5 | "address":"Mountain View, SA", 6 | "phone": "07772955104", 7 | "email":"john-smith@google.com", 8 | "website":"example.com" 9 | }, 10 | "design": { 11 | "color":"brown" 12 | }, 13 | "headshot":{ 14 | "url": "http://static2.hypable.com/wp-content/uploads/2012/11/david-tennant-doctor-who-50th-anniversary.jpg", 15 | "alt": "Picture of me visiting Earth in 2007" 16 | }, 17 | "social":{ 18 | "github": "https://github.com/guryanovev/JohnSmith", 19 | "linkedin":"linkedin.com/in/johnsmith" 20 | }, 21 | "bio": [ 22 | "John Smith is a profesional time Lord, specialising in something..", 23 | "lorem ipsum dolor sit amet consectetur adipiscing elit sed diam nonummy nibh" 24 | ], 25 | "employment":[ 26 | { 27 | "role":"Doctor", 28 | "place":"University of Oxford", 29 | "placeurl":"http://www.bbc.co.uk/programmes/b006q2x0", 30 | "dates":"June - September 1913 (3 months)", 31 | "description":[ 32 | "lorem ipsum dolor sit amet consectetur adipiscing elit sed diam nonummy nibh", 33 | "lorem ipsum dolor sit amet consectetur adipiscing elit sed diam nonummy nibh", 34 | "lorem ipsum dolor sit amet consectetur adipiscing elit sed diam nonummy nibh" 35 | ] 36 | }, 37 | { 38 | "role":"Software Engineer", 39 | "place":"Google, UK", 40 | "placeurl":"http://www.google.com", 41 | "dates":"July 1998 - July 2001 (36 months)", 42 | "description":[ 43 | "Google's software engineers develop the next-generation technologies ", 44 | "that change how millions of users connect, explore, and interact with ", 45 | "information and one another. Our ambitions reach far beyond just Search. ", 46 | "Our products need to handle information at the the scale of the web. We're ", 47 | "looking for ideas from every area of computer science, including information ", 48 | "retrieval, artificial intelligence, natural language processing, distributed ", 49 | "computing, large-scale system design, networking, security, data compression, ", 50 | "and user interface design; the list goes on and is growing every day. " 51 | ] 52 | } 53 | ], 54 | 55 | "experience":[ 56 | { 57 | "title":"Doctor Who", 58 | "subtitle":"Made an appearance on the BBC sereis, Doctor Who", 59 | "description":[ 60 | "" 61 | ] 62 | } 63 | 64 | ], 65 | "education":[ 66 | { 67 | "course":"Computer Science BSc", 68 | "establishment":"Cambridge University", 69 | "placeurl":"https://www.cambridge.ac.uk/", 70 | "dates":"September 2012 - May 2016", 71 | "description":[ 72 | "Gained a first-class honours in computer science, and won the", 73 | "British Computer Society (BCS) award for best computing project.\n", 74 | "Course representative and student ambassador, was fully involved", 75 | "in all aspects of my course.\n", 76 | "Founded and initially ran the computing society, which holds regular", 77 | "computer-science related, and social events." 78 | ] 79 | } 80 | ], 81 | 82 | "skills":[ 83 | {"name":"Time Travel", "type":"web", "level":"5"}, 84 | {"name":"Tardis Repair", "type":"web", "level":"3"}, 85 | {"name":"Saving-the-world", "type":"web", "level":"1"} 86 | ], 87 | 88 | "hobies":[ 89 | "Lorem Ipsum Dolor Siet Ammet" 90 | ] 91 | } 92 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 |

🎓 Material Design CV Template

2 |

3 | A customisable template for a single-page material design CV website
4 |

5 | 6 | ## Intro 7 | 8 | A material-design inspired web-based CV template, with several different theme choices. 9 | The app is very easy to use - you'll only need to modify a single file with your info, then once built the static HTML can be easily deployed to any CDN or static hosting provider. 10 | 11 | ## Screenshots 12 | 13 | There's a few sample config files and screenshots [here](https://github.com/Lissy93/md-cv-maker/tree/master/examples). 14 | Or, for a live demo feel free to take a look at my CV at: [aliciasykes.com/cv](http://aliciasykes.com/cv/) 15 | 16 | [![Screenshots](https://i.ibb.co/KxxdRd8/md-cv-template-screenshots.png)](http://aliciasykes.com/cv/) 17 | 18 | 19 | ## Usage 20 | 21 | 1. **Clone from Git** - `git clone https://github.com/Lissy93/md-cv-maker.git` 22 | 2. **Install Dependencies** - `yarn install` 23 | 3. **Add content** - Populate the `src/locals.json` with your content ([here's some examples](https://github.com/Lissy93/md-cv-maker/tree/master/examples)) 24 | 4. **Build** - Compile and minify source with `yarn build` 25 | 5. **Deploy** - Once the project is built, open `dist/index.html` in your browser, or serve it up with `yarn start` 26 | 27 | During development, you can watch for changes and automatically re-build the app, by running `yarn watch` 28 | 29 | All textual content is located in [`src/locals.json`](https://github.com/Lissy93/md-cv-maker/blob/master/src/locals.json), if you're happy with the default template, this should be the only file you need to modify. You can view some example templates in the [`examples/`](https://github.com/Lissy93/md-cv-maker/tree/master/examples) directory. 30 | 31 | 32 | ## File Structure 33 | 34 | ``` 35 | ├── examples/ # Some example configs and screenshots 36 | ├── gulpfile.js # Build script 37 | ├── package.json # Project manifest 38 | ├── readme.md # Docs 39 | ├── server.js # Optional server, to serve up built app 40 | └── src 41 | ├── assets # Any images, fonts, etc to use 42 | ├── locals.json # Text to display (edit this file!) 43 | ├── scripts # JS for interactive content 44 | ├── styles # CSS for styling 45 | └── views # HTML fragments for layout 46 | ``` 47 | After building the project, a new directory - `dist/` will be created. This contains all compiled and production ready files which can then be served up or uploaded to your server, ready to go. 48 | 49 | --- 50 | 51 | 52 |

53 | © Alicia Sykes 2017
54 | Licensed under MIT
55 |
56 | Thanks for visiting :) 57 |

58 | 59 | 60 | 72 | 73 | -------------------------------------------------------------------------------- /src/locals.json: -------------------------------------------------------------------------------- 1 | { 2 | "title":"Lorem Ipsum", 3 | "heading1":"Lorem Ipsum", 4 | "contact":{ 5 | "address":"Lorem Ipsum", 6 | "phone": "Lorem Ipsum", 7 | "email":"Lorem Ipsum", 8 | "website":"Lorem Ipsum" 9 | }, 10 | "design": { 11 | "color":"orange" 12 | }, 13 | "headshot":{ 14 | "url": "Lorem Ipsum", 15 | "alt": "Lorem Ipsum" 16 | }, 17 | "social":{ 18 | "github": "Lorem Ipsum", 19 | "linkedin":"Lorem Ipsum" 20 | }, 21 | "bio": [ 22 | "Lorem Ipsum", 23 | "Lorem Ipsum", 24 | "Lorem Ipsum" 25 | ], 26 | "employment":[ 27 | { 28 | "role":"Lorem Ipsum", 29 | "place":"Lorem Ipsum", 30 | "placeurl":"Lorem Ipsum", 31 | "dates":"Lorem Ipsum", 32 | "description":[ 33 | "Lorem Ipsum", 34 | "Lorem Ipsum", 35 | "Lorem Ipsum" 36 | ] 37 | }, 38 | { 39 | "role":"Lorem Ipsum", 40 | "place":"Lorem Ipsum", 41 | "placeurl":"Lorem Ipsum", 42 | "dates":"Lorem Ipsum", 43 | "description":[ 44 | "Lorem Ipsum", 45 | "Lorem Ipsum", 46 | "Lorem Ipsum" 47 | ] 48 | }, 49 | { 50 | "role":"Lorem Ipsum", 51 | "place":"Lorem Ipsum", 52 | "placeurl":"Lorem Ipsum", 53 | "dates":"Lorem Ipsum", 54 | "description":[ 55 | "Lorem Ipsum", 56 | "Lorem Ipsum", 57 | "Lorem Ipsum" 58 | ] 59 | } 60 | ], 61 | 62 | "experience":[ 63 | { 64 | "title":"Lorem Ipsum", 65 | "subtitle":"Lorem Ipsum", 66 | "description":[ 67 | "Lorem Ipsum", 68 | "Lorem Ipsum", 69 | "Lorem Ipsum" 70 | ] 71 | }, 72 | { 73 | "title":"Lorem Ipsum", 74 | "subtitle":"Lorem Ipsum", 75 | "description":[ 76 | "Lorem Ipsum", 77 | "Lorem Ipsum", 78 | "Lorem Ipsum" 79 | ] 80 | }, 81 | { 82 | "title":"Lorem Ipsum", 83 | "subtitle":"Lorem Ipsum", 84 | "description":[ 85 | "Lorem Ipsum", 86 | "Lorem Ipsum", 87 | "Lorem Ipsum" 88 | ] 89 | } 90 | ], 91 | 92 | "education":[ 93 | { 94 | "course":"Lorem Ipsum", 95 | "establishment":"Lorem Ipsum", 96 | "placeurl":"Lorem Ipsum", 97 | "dates":"Lorem Ipsum", 98 | "description":[ 99 | "Lorem Ipsum", 100 | "Lorem Ipsum", 101 | "Lorem Ipsum" 102 | ] 103 | }, 104 | { 105 | "course":"Lorem Ipsum", 106 | "establishment":"Lorem Ipsum", 107 | "placeurl":"Lorem Ipsum", 108 | "dates":"Lorem Ipsum", 109 | "description":[ 110 | "Lorem Ipsum", 111 | "Lorem Ipsum", 112 | "Lorem Ipsum" 113 | ] 114 | }, 115 | { 116 | "course":"Lorem Ipsum", 117 | "establishment":"Lorem Ipsum", 118 | "placeurl":"Lorem Ipsum", 119 | "dates":"Lorem Ipsum", 120 | "description":[ 121 | "Lorem Ipsum", 122 | "Lorem Ipsum", 123 | "Lorem Ipsum" 124 | ] 125 | } 126 | ], 127 | 128 | "skills":[ 129 | {"name":"Lorem Ipsum", "type":"Lorem Ipsum", "level":"0"}, 130 | {"name":"Lorem Ipsum", "type":"Lorem Ipsum", "level":"0"}, 131 | {"name":"Lorem Ipsum", "type":"Lorem Ipsum", "level":"0"}, 132 | {"name":"Lorem Ipsum", "type":"Lorem Ipsum", "level":"0"}, 133 | {"name":"Lorem Ipsum", "type":"Lorem Ipsum", "level":"0"}, 134 | {"name":"Lorem Ipsum", "type":"Lorem Ipsum", "level":"0"}, 135 | {"name":"Lorem Ipsum", "type":"Lorem Ipsum", "level":"0"} 136 | ], 137 | 138 | "hobies":[ 139 | "Lorem Ipsum", 140 | "Lorem Ipsum", 141 | "Lorem Ipsum" 142 | ] 143 | } 144 | -------------------------------------------------------------------------------- /examples/example-locals-3.json: -------------------------------------------------------------------------------- 1 | { 2 | "title":"JJ | Curriculum Vitae", 3 | "heading1":"Jobson Jobsworth", 4 | "contact":{ 5 | "address":"Mountain View, SA", 6 | "phone": "07772955104", 7 | "email":"john-smith@google.com", 8 | "website":"example.com" 9 | }, 10 | "design": { 11 | "color":"blue-grey" 12 | }, 13 | "headshot":{ 14 | "url": "http://orig13.deviantart.net/b906/f/2015/290/5/8/random_cartoon_drawing_i_made_out_of_boredom_by_helvius-d9ddlvd.png", 15 | "alt": "Me." 16 | }, 17 | "bio": [ 18 | "I am a decisive, capable, punctual, ambitious, courteous, enthusiastic, ", 19 | "trustworthy, determined, intelligent, keen, hard-working, friendly, ", 20 | "industrious, dynamic, professional, generous, mature, proficient, ", 21 | "knowledgeable, energetic, dedicated, creative, imaginative, honourable, ", 22 | "inventive, adaptable, bright, patient, good-natured, receptive, cooperative, ", 23 | "responsible, organised, motivated and careful individual, and can work well ", 24 | " /n ", 25 | "on my own or as part of a team.", 26 | "I offer a mature and responsible attitude towards working, together with", 27 | "an adaptable approach, which means I can be immature and irresponsible ", 28 | "whenever necessary.", 29 | " /n ", 30 | "I am a highly orgasmed individual, my attention to detail is exceptional ", 31 | "and my speeling is second to none. I can work effectively under pressure, ", 32 | "up to a g-force of 24." 33 | ], 34 | "employment":[ 35 | { 36 | "role":"", 37 | "place":"Actively seeking employment", 38 | "placeurl":"https://www.gov.uk/jobsearch", 39 | "dates":"1987 - Present", 40 | "description":[ 41 | "The recession hit my town earlier than expected. Much, much earlier. ", 42 | "At least that’s what I put my twenty-five years of unemployment down to." 43 | ] 44 | }, 45 | { 46 | "role":"Pizza Delivery Guy", 47 | "place":"Pizza4u", 48 | "placeurl":"http://www.pizzagogo.co.uk/", 49 | "dates":"1986 - 1987", 50 | "description":[ 51 | "Responsibilities included delivering pizzas to people who ordered ", 52 | "pizzas and also, to demonstrate my initiative, delivering pizzas to ", 53 | "people who didn’t order pizzas." 54 | ] 55 | }, 56 | { 57 | "role":"Pizza Delivery Girl", 58 | "place":"Pizza4u", 59 | "placeurl":"http://www.pizzagogo.co.uk/", 60 | "dates":"1986 - 1987", 61 | "description":[ 62 | "As above, except - in order to obtain more tips - ", 63 | "whilst wearing a rather fetching curly brunette wig and a low-cut top ", 64 | "revealing a teasing taste of pec-cleavage." 65 | ] 66 | }, 67 | { 68 | "role":"Shoe Shop Manager", 69 | "place":"Shoes4u", 70 | "placeurl":"http://www.example.com/", 71 | "dates":"1 Hour in May 1986", 72 | "description":[ 73 | "Responsibilities included ensuring customers buy the right shoes for ", 74 | "their feet and measuring their feet with the foot measurer thing. ", 75 | "Responsibilities ended when the real manager came back from lunch and ", 76 | "told me to get out of his shop." 77 | ] 78 | }, 79 | { 80 | "role":"Computer Programmer", 81 | "place":"", 82 | "placeurl":"", 83 | "dates":"1983 - 1986", 84 | "description":[ 85 | "Proficient in C, C+, C++, C#, C##, C#+# and C#*#+$%^£$!(“@#!!" 86 | ] 87 | }, 88 | { 89 | "role":"Proofreader", 90 | "place":"Pizza4u", 91 | "placeurl":"http://www.example.com/", 92 | "dates":"1978 - 1983", 93 | "description":[ 94 | "Proffred ceveral teknical bokos aswe all nkow thear ar count less ", 95 | "misteaks inn tem. I was sacked when I admitted I didn’t actually read ", 96 | "the books as I waited for the film adaptations instead. Perhaps I missed ", 97 | "the point but at least I didn’t miss the excellent C++ In a Nutshell: The Movie" 98 | ] 99 | }, 100 | { 101 | "role":"Self-Employed Air Guitar Teacher ", 102 | "place":"", 103 | "placeurl":"", 104 | "dates":"1975 - 1978", 105 | "description":[ 106 | "Taught Air Guitar to competitors of the Air Guitar World Championships. ", 107 | "Unfortunately my students were useless as they kept breaking the strings and losing the plectrums.", 108 | " /n ", 109 | "I also taught Air Mandolin, Air Triangle and the rarely mastered, ", 110 | "Air One-Man-Band. I practiced the latter so much that I couldn’t stand ", 111 | "still or walk normally anymore. I was a ‘local character’ in my town as ", 112 | "everyone recognised me from my dangerously unique arm and leg movements when ", 113 | "I walked. Unfortunately, I was forced to give up my new walk as it severely ", 114 | "interfered with my new hobby of Air Conducting; the poor Air Orchestra were all over the place." 115 | ] 116 | } 117 | ], 118 | 119 | "education":[ 120 | { 121 | "course":"Nursery", 122 | "establishment":"Nursrey", 123 | "placeurl":"", 124 | "dates":"1980", 125 | "description":[ 126 | " Learnt soft skills such as not falling over when walking and putting ", 127 | "food into my mouth rather than up my nostrils. Learnt an increasingly ", 128 | "populated vocabulary including the words jelly, poo and ", 129 | "antidisestablishmentarianism. I also learnt the meaning of the word ", 130 | "‘share’ and so I regularly took my classmate’s food." 131 | ] 132 | } 133 | ] 134 | } 135 | -------------------------------------------------------------------------------- /examples/example-locals-4.json: -------------------------------------------------------------------------------- 1 | { 2 | "title":"Alicia Sykes CV", 3 | "heading1":"Alicia Sykes", 4 | "contact":{ 5 | "address":"London", 6 | "phone": "07742922302", 7 | "email":"alicia@as93.net", 8 | "website":"AliciaSykes.com" 9 | }, 10 | "design": { 11 | "color":"blue" 12 | }, 13 | "headshot":{ 14 | "url": "http://aliciasykes.com/cv/assets/profile-pic-2.jpg", 15 | "alt": "Receiving the BCS Best Final Year Project Prize" 16 | }, 17 | "social":{ 18 | "github": "github.com/lissy93", 19 | "linkedin":"linkedin.com/in/aliciasykes" 20 | }, 21 | "bio": [ 22 | "Software Engineer with broad development knowledge, specialising", 23 | "in full-stack modern web applications. \n Hardworking, adaptable and", 24 | "passionate about coding. Understands the importance of clean, good", 25 | "quality and well tested code." 26 | ], 27 | "employment":[ 28 | { 29 | "role":"Software Engineer (Intern)", 30 | "place":"University of Oxford", 31 | "placeurl":"http://www.tropicalmedicine.ox.ac.uk/uk-centre", 32 | "dates":"June - September 2013 (3 months)", 33 | "description":[ 34 | "Worked as part of a small Java team following the agile methodology.", 35 | "Developing software for WWARN", 36 | "who are working towards the eradication of resistance to anti-malarial", 37 | "vaccinations. Involved processing mass amounts of data, so algorithm", 38 | "efficiency was paramount." 39 | ] 40 | }, 41 | { 42 | "role":"Software Engineer", 43 | "place":"Accenture, UK", 44 | "placeurl":"https://www.accenture.com", 45 | "dates":"July 2014 - Current", 46 | "description":[ 47 | "Worked accross several large government departments as a Java developer,", 48 | "before joining the ", 49 | "Accenture UKI Innovation Programme, ", 50 | "using a range of modern technologies to rapidly develop prototypes in ", 51 | "an agile team." 52 | ] 53 | }, 54 | { 55 | "role":"Web Admin", 56 | "place":"UTC Swindon", 57 | "placeurl":"http://www.utcswindon.co.uk/", 58 | "dates":"Part-time September 2013 - September 2014 (12 months)", 59 | "description":[ 60 | "Was responsible for the day-to-day running of the WordPress site, from", 61 | "creating and styling new pages and features to ensuring content was", 62 | "published promptly and never out-of-date." 63 | ] 64 | } 65 | ], 66 | 67 | "experience":[ 68 | { 69 | "title":"Teaching Computing", 70 | "subtitle":"Completed UAS, A Level Computing tutor, published many educational resources", 71 | "description":[ 72 | "While at Uni, ran a series of after-school programming clubs at the", 73 | "Wheatley Park School and", 74 | "The Oxford Academy for year ", 75 | "7- 9 pupils to inspire them to get into coding.

I have Completed ", 76 | "the Undergraduate Ambassador Scheme,", 77 | "which by the end involved planning and taking full computing lessons.", 78 | "1-to-1 A Level computing tutor, helped several pupils increase their grades.", 79 | "

I am always keen to pass on what I've learnt to others, so I have", 80 | "developed and maintain several online educational computing resources", 81 | "for students, teachers and anyone wanting to learn.", 82 | "Including web-dev.school, ", 83 | "a computer science site, ", 84 | "revisionquizzes.co.uk,", 85 | "a 100-page A Level Computing Revision guide,", 86 | "an educational file sharing site,", 87 | "A2 Computing revision site and ", 88 | "an Android app for revising", 89 | "to name a few." 90 | ] 91 | }, 92 | { 93 | "title":"Hackathons", 94 | "subtitle":"Keen attender of coding competitions", 95 | "description":[ 96 | "I regularly attend hackathons and coding competitions around the", 97 | "country, and abroad. I love the atmosphere, and the chance", 98 | "to experiment with new technologies, as well as collaborate with others.", 99 | "I have won a few recently, including 1st place at", 100 | "BlockChain Award StartHack Switzerland 2018,", 101 | "Main Prize Winner at StartHack Switzerland 2016,", 102 | "HP Prize at AngelHack 2015. And", 103 | "2nd place in NBC Universal Comcast, ", 104 | "DevLab Live, ", 105 | "AngelHack 2014", 106 | "and AngelHack 2013." 107 | ] 108 | }, 109 | { 110 | "title":"Freelance Work", 111 | "subtitle":"http://aliciasykes.com", 112 | "description":[ 113 | "Creating Android, iOS and hybrid mobile applications, as well as web", 114 | "apps and WordPress sits for small businesses, individuals and start-ups.", 115 | "A portfolio of my work can be found at aliciasykes.com/work.html", 116 | "Between jobs I have also worked on several open source projects, ", 117 | "including creating sentiment-sweep.com." 118 | ] 119 | }, 120 | { 121 | "title":"Army Reservist", 122 | "subtitle":"Currently serving in a London-based Army Reserve unit", 123 | "description":[ 124 | "Regularly attend", 125 | "weekend exercises,", 126 | "and have had the opportunity to learn a range of practical and transferable skills and gain", 127 | "qualifications (including the Level 5 award in Management and Leadership)." 128 | ] 129 | } 130 | 131 | ], 132 | "education":[ 133 | { 134 | "course":"Computer Science BSc", 135 | "establishment":"Oxford Brookes University", 136 | "placeurl":"https://www.brookes.ac.uk/", 137 | "dates":"September 2012 - May 2016", 138 | "description":[ 139 | "Gained a first-class honours in computer science, and won the", 140 | "British Computer Society (BCS) award for best computing project.\n", 141 | "Course representative and student ambassador, I was fully involved", 142 | "in all aspects of my course.\n", 143 | "Founded and initially ran the computing society, which holds regular", 144 | "computer-science related, and social events." 145 | ] 146 | }, 147 | { 148 | "course":"A Levels", 149 | "establishment":"St John's Academy, Marlborough", 150 | "placeurl":"http://www.stjohns.wilts.sch.uk/", 151 | "dates":"May 2012 - Sep 2016", 152 | "description":[ 153 | "Studied Economics, Physics and Computing at A Level. ", 154 | "Business Studies and Photography for AS Level.\n", 155 | "While studying also developed a set of interactive learning tools,", 156 | "including a quiz sharing website, and dynamic computing revision app.", 157 | "Won the governors award for economics." 158 | ] 159 | } 160 | ], 161 | 162 | "skills":[ 163 | {"name":"D3.js", "type":"web", "level":"5"}, 164 | {"name":"Node.js", "type":"web", "level":"5"}, 165 | {"name":"JavaScript", "type":"web", "level":"5"}, 166 | {"name":"unit testing", "type":"dev", "level":"4"}, 167 | {"name":"BlockChain", "type":"innovation", "level":"3"}, 168 | {"name":"AI", "type":"innovation", "level":"3"}, 169 | {"name":"ChatBots", "type":"innovation", "level":"4"}, 170 | {"name":"Kotlin", "type":"Java", "level":"3"}, 171 | {"name":"React Native", "type":"mobile", "level":"4"}, 172 | {"name":"NativeScript", "type":"mobile", "level":"3"}, 173 | {"name":"Angular", "type":"web", "level":"4"}, 174 | {"name":"Flutter", "type":"web", "level":"2" }, 175 | {"name":"Java", "type":"Java", "level":"3"}, 176 | {"name":"CSS3", "type":"web", "level":"5"}, 177 | {"name":"npm", "type":"web", "level":"5"}, 178 | {"name":"Ionic", "type":"mobile", "level":"4"}, 179 | {"name":"HTML5", "type":"web", "level":"5"}, 180 | {"name":"React.js", "type":"web", "level":"3"}, 181 | {"name":"Android", "type":"mobile", "level":"4"}, 182 | {"name":"Angular.js", "type":"web", "level":"3"}, 183 | {"name":"git", "type":"dev", "level":"4"}, 184 | {"name":"PHP", "type":"web", "level":"3"}, 185 | {"name":"Tomcat", "type":"Java", "level":"2"}, 186 | {"name":"Jenkins", "type":"Java", "level":"2"}, 187 | {"name":"Maven", "type":"Java", "level":"2"}, 188 | {"name":"Hibernate", "type":"Java", "level":"2"}, 189 | {"name":"JUnit", "type":"Java", "level":"2"}, 190 | {"name":"Ubuntu", "type":"server", "level":"1"}, 191 | {"name":"Apache", "type":"server", "level":"1"}, 192 | {"name":"Linux", "type":"server", "level":"1"}, 193 | {"name":"NGINX", "type":"server", "level":"1"}, 194 | {"name":"Swift", "type":"mobile", "level":"3"}, 195 | {"name":"iOS", "type":"mobile", "level":"3"}, 196 | {"name":"UX", "type":"dev", "level":"2"}, 197 | {"name":"Project-Management", "type":"dev", "level":"2"}, 198 | {"name":"Agile", "type":"dev", "level":"4"} 199 | ], 200 | 201 | "hobies":[ 202 | "My biggest hobby is coding, I love experimenting with the latest ", 203 | "technologies, finding better ways of doing things, and creating ", 204 | "applications.", 205 | "I'm also interested in astro-physics and cosmology- while at secondary", 206 | "school, I got an A grade in self-taught GCSE Astronomy. On weekends ", 207 | "and sometimes an early session before work I enjoy running, swimming and cycling." 208 | ] 209 | } 210 | --------------------------------------------------------------------------------