This commit is contained in:
Sara Steiert 2017-05-19 17:03:35 +02:00
parent b30117ce6c
commit 61b87c7b44
11 changed files with 638 additions and 66 deletions

View File

@ -22,6 +22,17 @@ module.exports = {
// allow async-await
'generator-star-spacing': 0,
// allow debugger during development
'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0
'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
'quotes': [
'error',
'single'
],
'semi': [
'error',
'always'
],
'no-console': 'off',
'curly': ['error', 'multi-or-nest'],
'no-var': 'error'
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -14,6 +14,10 @@
"lint": "eslint --ext .js,.vue src test/unit/specs test/e2e/specs"
},
"dependencies": {
"font-awesome": "^4.7.0",
"material-design-icons": "^3.0.1",
"material-icons": "^0.1.0",
"roboto-fontface": "^0.7.0",
"vue": "^2.2.6",
"vue-router": "^2.3.1"
},

View File

@ -1,7 +1,8 @@
<template>
<div id="app">
<img src="./assets/logo.png">
<router-view></router-view>
<div class="page">
<router-view></router-view>
</div>
</div>
</template>
@ -12,12 +13,30 @@ export default {
</script>
<style>
@import '../node_modules/roboto-fontface/css/roboto/roboto-fontface.css';
@import '../node_modules/font-awesome/css/font-awesome.css';
@import '../node_modules/material-design-icons/iconfont/material-icons.css';
#app {
font-family: 'Avenir', Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
overflow-x: hidden;
background: #CCCCCC;
margin: 0;
padding: 0;
-webkit-print-color-adjust: exact;
box-sizing: border-box;
}
.page {
background: white;
position: relative;
width: 21cm;
height: 29.7cm;
display: block;
page-break-after: auto;
overflow: hidden;
}
body{
padding: 0;
margin: 0;
overflow-x: hidden;
}
</style>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

BIN
src/assets/person.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -1,53 +0,0 @@
<template>
<div class="hello">
<h1>{{ msg }}</h1>
<h2>Essential Links</h2>
<ul>
<li><a href="https://vuejs.org" target="_blank">Core Docs</a></li>
<li><a href="https://forum.vuejs.org" target="_blank">Forum</a></li>
<li><a href="https://gitter.im/vuejs/vue" target="_blank">Gitter Chat</a></li>
<li><a href="https://twitter.com/vuejs" target="_blank">Twitter</a></li>
<br>
<li><a href="http://vuejs-templates.github.io/webpack/" target="_blank">Docs for This Template</a></li>
</ul>
<h2>Ecosystem</h2>
<ul>
<li><a href="http://router.vuejs.org/" target="_blank">vue-router</a></li>
<li><a href="http://vuex.vuejs.org/" target="_blank">vuex</a></li>
<li><a href="http://vue-loader.vuejs.org/" target="_blank">vue-loader</a></li>
<li><a href="https://github.com/vuejs/awesome-vue" target="_blank">awesome-vue</a></li>
</ul>
</div>
</template>
<script>
export default {
name: 'hello',
data () {
return {
msg: 'Welcome to Your Vue.js App'
}
}
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h1, h2 {
font-weight: normal;
}
ul {
list-style-type: none;
padding: 0;
}
li {
display: inline-block;
margin: 0 10px;
}
a {
color: #42b983;
}
</style>

View File

@ -0,0 +1,506 @@
<template>
<div class="resume leftCol m_box">
<div class="shadow"></div>
<div class="heading" id="myselfpic">
</div>
<div class="section-headline">
Contact
</div>
<div class="item">
<div class="icon">
<i class="material-icons">account_circle</i>
</div>
<div class="text">
<ul>
<li> Born {{person.birth.year}} in {{person.birth.location}}</li>
</ul>
</div>
</div>
<div class="item">
<div class="icon">
<i class="material-icons">location_city</i>
</div>
<div class="text">
<ul>
<li>{{person.contact.street}}</li>
<li>{{person.contact.city}}</li>
</ul>
</div>
</div>
<a :href="'tel:'+person.contact.phone">
<div class="item">
<div class="icon">
<i class="material-icons">phone</i>
</div>
<div class="text">
{{person.contact.phone}}
</div>
</div>
</a>
<a :href="'mailto:'+person.contact.email">
<div class="item">
<div class="icon">
<i class="material-icons">email</i>
</div>
<div class="text">
{{person.contact.email}}
</div>
</div>
</a>
<a :href="'https://github.com/'+person.contact.github" target="_blank">
<div class="item">
<div class="icon">
<i class="fa fa-github"></i>
</div>
<div class="text">
<span>@{{person.contact.github}}</span>
<span>github.com/{{person.contact.github}}</span>
</div>
</div>
</a>
<a :href="person.contact.website" target="_blank">
<div class="item">
<div class="icon">
<i class="material-icons">language</i>
</div>
<div class="text">
<span>{{person.contact.website}}m</span>
</div>
</div>
</a>
</div>
<div class="rightCol">
<div class="title">
<h2>{{person.name.first}} {{person.name.last}}</h2>
<div>{{person.position}}</div>
</div>
<div class="section-headline">Working experience</div>
{{#person.experience}}
<div class="block">
<div class="block-helper"></div>
<div class="headline">{{position}} - {{company}}</h3>
<div class="subheadline">{{timeperiod}}</div>
<p class="info">
{{description}}
</p>
</div>
</div>
{{/person.experience}}
<div class="section-headline">Education</div>
{{#person.education}}
<div class="block">
<div class="block-helper"></div>
<div class="headline">{{degree}}</div>
<p class="info">
{{timeperiod}}, {{description}}
</p>
</div>
{{/person.education}}
</div>
<div style="clear:both;"></div>
</template>
<script>
import {
PERSON
} from '../person';
export default {
name: 'hello',
data() {
return {
person: PERSON
}
}
};
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
.resume {
font-family: 'Roboto' !important;
}
a {
cursor: pointer;
}
.description-personal {
margin-let: 20px;
margin-top: 20px;
padding-right: 40px;
text-align: justify;
font-family: Roboto;
}
.title {
right: 25px;
padding-left: 20px;
padding-top: 20px;
bottom: 25px;
}
.title h2 {
text-transform: uppercase;
display: block;
font-size: 1.17em;
-webkit-margin-before: 1em;
-webkit-margin-after: 1em;
-webkit-margin-start: 0;
-webkit-margin-end: 0;
color: white;
padding-top: 0;
margin-top: 0;
letter-spacing: 10px;
font-weight: 400;
color: rgba(0, 0, 0, 0.7);
}
.title div {
margin-top: -5px;
margin: 0;
padding: 0;
line-height: 15pt;
font-weight: 300;
letter-spacing: 2px;
color: white;
display: block;
font-size: 0.67em;
-webkit-margin-before: 2.33em;
-webkit-margin-start: 0;
-webkit-margin-end: 0;
padding-top: 0;
margin-top: 0;
color: #16151c;
text-transform: uppercase;
font-weight: 500;
letter-spacing: 3px;
font-size: 10pt;
opacity: 0.8;
color: rgba(63, 61, 60, 0.71);
}
.section-headline {
text-transform: uppercase;
font-weight: 500;
letter-spacing: 3px;
font-size: 10pt;
opacity: 0.8;
margin-left: 20px;
margin-top: 40px;
margin-bottom: 20px;
color: #3f3d3c;
}
{
font-family: Roboto, sans-serif !important;
background-color: #ccc;
font-size: 15px;
line-height: 1.5;
color: #767270;
letter-spacing: 0.072em;
font-weight: normal;
}
.c {
clear: both;
}
li,
ul {
margin: 0;
padding: 0;
list-style-type: none;
}
li {
padding-top: 9px;
}
p {
margin-top: 0;
margin-bottom: 25px;
font-family: 'Roboto', sans-serif;
font-weight: 300;
font-size: 10pt;
line-height: 17pt;
}
.m_box {
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
}
.fa,
.material-icons {
display: inline-block;
font-style: normal;
font-weight: normal;
line-height: 1;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
font-size: 26px;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-weight: 400;
margin: 0;
}
h2 {
font-size: 22pt;
line-height: 37pt;
margin: 0;
font-weight: 500;
}
h4 {
font-size: 12pt;
line-height: 20pt;
opacity: 1;
}
.rightCol {
width: 63.5%;
height: 100%;
float: right;
display: flex;
flex-direction: column;
}
.rightCol .block {
width: 90%;
position: relative;
background-color: #fff;
padding: 20px;
margin-top: 5px;
margin-bottom: 5px;
display: inline-block;
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
}
.rightCol .block .headline {
font-weight: 300;
display: block;
font-size: 15px;
color: rgba(0, 0, 0, 0.870588);
}
.rightCol .block .subheadline {
color: rgba(0, 0, 0, 0.541176);
display: block;
font-size: 14px;
font-weight: 300;
}
.rightCol .block .info {
font-size: 14px;
color: rgba(0, 0, 0, 0.870588);
margin-bottom: 0;
padding-top: 20px;
}
.rightCol .block .icon {
width: 16%;
float: left;
margin-left: 0;
}
.rightCol .block .icon .fa,
.rightCol .block .icon .material-icons {
text-align: center;
display: block;
font-size: 30pt;
}
.rightCol .block .content {
width: 80%;
position: absolute;
height: 96%;
left: 17%;
padding-right: 3%;
text-align: left;
display: flex;
flex-direction: column;
}
.rightCol .block .content .item {
border-bottom: 1px solid #bdbdbd;
flex: 1;
width: 97%;
display: flex;
justify-content: center;
flex-direction: column;
text-align: left;
padding-top: 0;
}
.rightCol .block .content .item span {
color: #d8ab94;
margin-top: 0;
font-size: 10pt;
line-height: 16pt;
}
.rightCol .block .content .item p {
margin-top: 5px;
}
.rightCol .block .content .item:last-of-type {
border-bottom-style: none;
}
.rightCol .block .content .item:last-of-type {
border-bottom-style: none;
}
.leftCol {
width: 35%;
height: 100%;
float: left;
padding: 0;
text-align: left;
color: #ffffff;
background-color: #16151c;
overflow: hidden;
display: block;
color: rgba(255, 255, 255, 0.59);
}
.leftCol .section-headline {
color: rgba(255, 255, 255, 0.54);
}
.leftCol a {
color: rgba(255, 255, 255, 0.59);
text-decoration: none;
}
.leftCol .heading {
background-color: white;
background-repeat: no-repeat;
background-size: cover;
background-position: center;
position: relative;
width: 100%;
height: 277px;
}
.leftCol .item {
width: 100%;
margin-top: 13px;
float: left;
}
.leftCol .item .icon {
width: 20%;
float: left;
}
.leftCol .item .fa,
.leftCol .item .material-icons {
display: inherit;
text-align: center;
}
.leftCol .item .text {
float: right;
width: 69%;
padding-right: 10%;
padding-top: 0;
display: block;
font-size: 15px;
font-weight: 300;
}
.leftCol .item .text li {
padding-top: 0;
display: block;
font-size: 15px;
font-weight: 300;
}
.leftCol .item span {
font-weight: 300;
}
.leftCol .item .skill {
clear: both;
width: 97%;
padding-top: 4px;
}
.leftCol .item .skill .left {
float: left;
width: 10%;
padding-top: 3px;
}
.leftCol .item .skill .left i:nth-child(2) {
float: left;
padding-top: 4px;
}
.leftCol .item .skill .right {
float: right;
width: 93%;
}
.leftCol .item .skill .right .progress {
float: left;
position: relative;
height: 2px;
display: block;
width: 95%;
background-color: rgba(255, 255, 255, 0.19);
border-radius: 2px;
margin: 0.5rem 0 1rem;
overflow: visible;
margin-bottom: 10px;
}
.leftCol .item .skill .right .progress .determinate {
background-color: #78909C;
position: absolute;
top: 0;
bottom: 0;
}
.leftCol .item .skill .right .progress .determinate .fa,
.leftCol .item .skill .right .progress .determinate .material-icons {
font-size: 13px;
position: absolute;
top: -4px;
right: -2px;
margin-left: 50%;
color: white;
}
.leftCol .item.last .text {
border-bottom-style: none;
padding-bottom: 0;
}
#myselfpic {
background-image: url('../assets/person.jpg');
color: black;
}
#githubIcon {
width: 25px;
padding-left: 17px;
}
</style>

85
src/person.js Normal file
View File

@ -0,0 +1,85 @@
/* eslint-disable */
export const PERSON = {
name: {
first: 'John',
last: 'Doe',
},
position: 'Software Developer',
birth: {
year: 1990,
location: 'New York'
},
experience: [{
company: 'Company A',
position: 'Developer',
timeperiod: 'since January 2016',
description: 'Programming and watching cute cat videos.'
},
{
company: 'Company B',
position: 'Frontend Developer',
timeperiod: 'January 2015 - December 2015',
description: 'Fulfillment of extremly important tasks.'
},
{
company: 'Company C',
position: 'Trainee',
timeperiod: 'March 2014 - December 2014',
description: 'Making coffee and baking cookies.'
}
],
education: [{
degree: 'Master of Arts',
timeperiod: 'March 2012 - December 2013',
description: 'Major in Hacking and Computer Penetration, University A, New York, USA.'
},
{
degree: 'Bachelor of Science',
timeperiod: 'March 2009 - December 2011',
description: 'Major in Engineering, University B, Los Angeles, USA.'
}
],
// skill level goes 0 to 100
skills: [{
name: 'HTML5',
level: '99'
},
{
name: 'CSS3',
level: '95'
},
{
name: 'JavaScript',
level: '97'
},
{
name: 'Node.js',
level: '93'
},
{
name: 'Angular 2',
level: '60'
},
{
name: 'TypeScript',
level: '80'
},
{
name: 'ES.Next',
level: '70'
},
{
name: 'Docker',
level: '99'
}
],
skillDescription: 'Also proficient in Adobe Photoshop and Illustrator, grew up bilingual (English and Klingon).',
contact: {
email: 'john.doe@email.com',
phone: '0123 456789',
street: '1234 Broadway',
city: 'New York',
website: 'johndoe.com',
github: 'johnyD'
}
};

View File

@ -1,15 +1,15 @@
import Vue from 'vue'
import Router from 'vue-router'
import Hello from '@/components/Hello'
import ResumeMaterialDark from '@/components/resume-material-dark'
Vue.use(Router)
export default new Router({
routes: [
{
path: '/',
name: 'Hello',
component: Hello
path: '/resume-material-dark',
name: 'resume-material-dark',
component: ResumeMaterialDark
}
]
})