-
-
- Born {{person.birth.year}} in {{person.birth.location}} -
Experience
-{{experience.position}} - {{experience.company}}
- {{experience.timeperiod}} -- {{experience.description}} -
-diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..90a375d
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,22 @@
+sudo: required
+
+dist: trusty
+
+language: node_js
+
+node_js: stable
+
+cache:
+ directories:
+ - node_modules
+
+before_deploy:
+ - npm run build
+
+deploy:
+ provider: pages
+ skip_cleanup: true
+ github_token: $GITHUB_TOKEN
+ local_dir: dist
+ on:
+ branch: master
diff --git a/DEVELOPER.md b/DEVELOPER.md
index 33c4609..bc14144 100644
--- a/DEVELOPER.md
+++ b/DEVELOPER.md
@@ -19,12 +19,9 @@ In the directory `src/resumes` you will find all existing templates.
1. Create a copy of `src/resumes/template.vue`.
-2. Rename file and update component name:
+2. Rename file and update template name:
```javascript
-export default Vue.component('TEMPLATE-NAME', {
- name: 'TEMPLATE-NAME',
- ...
-});
+let name = 'TEMPLATE-NAME';
```
3. Import the newly added template in `src/resumes/resumes.js`.
diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md
new file mode 100644
index 0000000..636edcc
--- /dev/null
+++ b/ISSUE_TEMPLATE.md
@@ -0,0 +1,22 @@
+
+
+### Case
+
+
+## Issue
+
+
+## Info
+- Operating System:
+- Node-Version:
+
+## Reproduce
+
diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000..d0ddb43
--- /dev/null
+++ b/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,23 @@
+
+
+## This PR contains:
+
+
+## Describe the problem you have without this PR
+
+
+
diff --git a/README.md b/README.md
index 126bbb7..7ba7898 100755
--- a/README.md
+++ b/README.md
@@ -17,7 +17,6 @@
-
@@ -29,6 +28,8 @@
## How to use
+best-resume-ever requires at least node v.7.6.
+
1. Clone this repository.
2. Run `npm install`.
@@ -53,7 +54,7 @@ Please read the developer docs on how to create or up
## Contribute
-Feel free to add your own templates, fix bugs or improve the docs. Any kind of help is appreciated!
+Feel free to add your own templates, fix bugs or improve the docs. Any kind of help is appreciated! If you any kind of changes to an existing template, please commit them as new templates.
diff --git a/build/webpack.prod.conf.js b/build/webpack.prod.conf.js
new file mode 100644
index 0000000..99713cc
--- /dev/null
+++ b/build/webpack.prod.conf.js
@@ -0,0 +1,124 @@
+var path = require('path')
+var utils = require('./utils')
+var webpack = require('webpack')
+var config = require('../config')
+var merge = require('webpack-merge')
+var baseWebpackConfig = require('./webpack.base.conf')
+var CopyWebpackPlugin = require('copy-webpack-plugin')
+var HtmlWebpackPlugin = require('html-webpack-plugin')
+var ExtractTextPlugin = require('extract-text-webpack-plugin')
+var OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
+
+var env = process.env.NODE_ENV === 'testing'
+ ? require('../config/test.env')
+ : config.build.env
+
+var webpackConfig = merge(baseWebpackConfig, {
+ module: {
+ rules: utils.styleLoaders({
+ sourceMap: config.build.productionSourceMap,
+ extract: true
+ })
+ },
+ devtool: config.build.productionSourceMap ? '#source-map' : false,
+ output: {
+ path: config.build.assetsRoot,
+ filename: utils.assetsPath('js/[name].[chunkhash].js'),
+ chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
+ },
+ plugins: [
+ // http://vuejs.github.io/vue-loader/en/workflow/production.html
+ new webpack.DefinePlugin({
+ 'process.env': env
+ }),
+ new webpack.optimize.UglifyJsPlugin({
+ compress: {
+ warnings: false
+ },
+ sourceMap: true
+ }),
+ // extract css into its own file
+ new ExtractTextPlugin({
+ filename: utils.assetsPath('css/[name].[contenthash].css')
+ }),
+ // Compress extracted CSS. We are using this plugin so that possible
+ // duplicated CSS from different components can be deduped.
+ new OptimizeCSSPlugin({
+ cssProcessorOptions: {
+ safe: true
+ }
+ }),
+ // generate dist index.html with correct asset hash for caching.
+ // you can customize output by editing /index.html
+ // see https://github.com/ampedandwired/html-webpack-plugin
+ new HtmlWebpackPlugin({
+ filename: process.env.NODE_ENV === 'testing'
+ ? 'index.html'
+ : config.build.index,
+ template: 'index.html',
+ inject: true,
+ minify: {
+ removeComments: true,
+ collapseWhitespace: true,
+ removeAttributeQuotes: true
+ // more options:
+ // https://github.com/kangax/html-minifier#options-quick-reference
+ },
+ // necessary to consistently work with multiple chunks via CommonsChunkPlugin
+ chunksSortMode: 'dependency'
+ }),
+ // split vendor js into its own file
+ new webpack.optimize.CommonsChunkPlugin({
+ name: 'vendor',
+ minChunks: function (module, count) {
+ // any required modules inside node_modules are extracted to vendor
+ return (
+ module.resource &&
+ /\.js$/.test(module.resource) &&
+ module.resource.indexOf(
+ path.join(__dirname, '../node_modules')
+ ) === 0
+ )
+ }
+ }),
+ // extract webpack runtime and module manifest to its own file in order to
+ // prevent vendor hash from being updated whenever app bundle is updated
+ new webpack.optimize.CommonsChunkPlugin({
+ name: 'manifest',
+ chunks: ['vendor']
+ }),
+ // copy custom static assets
+ new CopyWebpackPlugin([
+ {
+ from: path.resolve(__dirname, '../static'),
+ to: config.build.assetsSubDirectory,
+ ignore: ['.*']
+ }
+ ])
+ ]
+})
+
+if (config.build.productionGzip) {
+ var CompressionWebpackPlugin = require('compression-webpack-plugin')
+
+ webpackConfig.plugins.push(
+ new CompressionWebpackPlugin({
+ asset: '[path].gz[query]',
+ algorithm: 'gzip',
+ test: new RegExp(
+ '\\.(' +
+ config.build.productionGzipExtensions.join('|') +
+ ')$'
+ ),
+ threshold: 10240,
+ minRatio: 0.8
+ })
+ )
+}
+
+if (config.build.bundleAnalyzerReport) {
+ var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
+ webpackConfig.plugins.push(new BundleAnalyzerPlugin())
+}
+
+module.exports = webpackConfig
diff --git a/config/index.js b/config/index.js
index 196da1f..215a35e 100755
--- a/config/index.js
+++ b/config/index.js
@@ -7,7 +7,7 @@ module.exports = {
index: path.resolve(__dirname, '../dist/index.html'),
assetsRoot: path.resolve(__dirname, '../dist'),
assetsSubDirectory: 'static',
- assetsPublicPath: '/',
+ assetsPublicPath: '/best-resume-ever/',
productionSourceMap: true,
// Gzip off by default as many popular static hosts such as
// Surge or Netlify already gzip all static assets for you.
diff --git a/package.json b/package.json
index 0fc743b..de81f3e 100755
--- a/package.json
+++ b/package.json
@@ -5,6 +5,7 @@
"author": "salomonelli",
"scripts": {
"dev": "node build/dev-server.js",
+ "build": "node build/build.js",
"start": "node build/dev-server.js",
"pdf": "node node/app.js",
"template": "node node/template/template.js",
@@ -30,20 +31,15 @@
"babel-core": "^6.26.0",
"babel-eslint": "^7.1.1",
"babel-loader": "^7.1.2",
- "babel-plugin-istanbul": "^4.1.1",
"babel-plugin-transform-runtime": "^6.22.0",
"babel-preset-env": "^1.6.0",
"babel-preset-stage-2": "^6.22.0",
"babel-register": "^6.26.0",
- "chai": "^4.1.2",
"chalk": "^1.1.3",
- "chromedriver": "^2.32.1",
"concurrently": "^3.5.0",
"connect-history-api-fallback": "^1.3.0",
"copy-webpack-plugin": "^4.0.1",
"cpx": "^1.5.0",
- "cross-env": "^5.0.5",
- "cross-spawn": "^5.0.1",
"css-loader": "^0.28.0",
"electroshot": "^1.4.0",
"eslint": "^4.6.1",
@@ -63,25 +59,12 @@
"html-webpack-plugin": "^2.30.1",
"http": "0.0.0",
"http-proxy-middleware": "^0.17.3",
- "inject-loader": "^3.0.1",
- "karma": "^1.7.1",
- "karma-coverage": "^1.1.1",
- "karma-mocha": "^1.3.0",
- "karma-phantomjs-launcher": "^1.0.2",
- "karma-phantomjs-shim": "^1.4.0",
- "karma-sinon-chai": "^1.3.2",
- "karma-sourcemap-loader": "^0.3.7",
- "karma-spec-reporter": "0.0.31",
- "karma-webpack": "^2.0.4",
"less": "^2.7.2",
"less-loader": "^4.0.5",
"lolex": "^1.5.2",
- "mocha": "^3.5.0",
- "nightwatch": "^0.9.16",
"opn": "^5.1.0",
"optimize-css-assets-webpack-plugin": "^2.0.0",
"ora": "^1.3.0",
- "phantomjs-prebuilt": "^2.1.15",
"postcss": "^6.0.11",
"postcss-cssnext": "^2.11.0",
"rename": "^1.0.4",
@@ -90,11 +73,8 @@
"rimraf": "^2.6.0",
"rx": "^4.1.0",
"rxjs": "^5.4.3",
- "selenium-server": "^3.5.3",
"semver": "^5.4.1",
"shelljs": "^0.7.6",
- "sinon": "^2.3.4",
- "sinon-chai": "^2.13.0",
"url-exists": "^1.0.3",
"url-loader": "^0.5.9",
"vue-loader": "^12.2.1",
@@ -107,12 +87,7 @@
"webpack-merge": "^4.1.0"
},
"engines": {
- "node": ">= 4.0.0",
- "npm": ">= 3.0.0"
- },
- "browserslist": [
- "> 1%",
- "last 2 versions",
- "not ie <= 8"
- ]
+ "node": ">= 7.4.0",
+ "npm": ">= 5.0.0"
+ }
}
diff --git a/pdf/left-right.pdf b/pdf/left-right.pdf
index 5b416e2..10cfaf5 100644
Binary files a/pdf/left-right.pdf and b/pdf/left-right.pdf differ
diff --git a/pdf/material-blue.pdf b/pdf/material-blue.pdf
deleted file mode 100644
index 9852eda..0000000
Binary files a/pdf/material-blue.pdf and /dev/null differ
diff --git a/pdf/material-dark.pdf b/pdf/material-dark.pdf
index d018ba6..268472c 100644
Binary files a/pdf/material-dark.pdf and b/pdf/material-dark.pdf differ
diff --git a/pdf/oblique.pdf b/pdf/oblique.pdf
index afba1ac..99434d2 100644
Binary files a/pdf/oblique.pdf and b/pdf/oblique.pdf differ
diff --git a/pdf/side-bar.pdf b/pdf/side-bar.pdf
index 3ed0472..70c5a08 100644
Binary files a/pdf/side-bar.pdf and b/pdf/side-bar.pdf differ
diff --git a/src/assets/preview/resume-material-blue.png b/src/assets/preview/resume-material-blue.png
deleted file mode 100755
index d85f9e9..0000000
Binary files a/src/assets/preview/resume-material-blue.png and /dev/null differ
diff --git a/src/assets/profile-images/girl.png b/src/assets/profile-images/girl.png
new file mode 100644
index 0000000..b614ebf
Binary files /dev/null and b/src/assets/profile-images/girl.png differ
diff --git a/src/assets/profile-images/guy.png b/src/assets/profile-images/guy.png
new file mode 100644
index 0000000..27e3d20
Binary files /dev/null and b/src/assets/profile-images/guy.png differ
diff --git a/src/lang/de.js b/src/lang/de.js
new file mode 100644
index 0000000..e6aa180
--- /dev/null
+++ b/src/lang/de.js
@@ -0,0 +1,10 @@
+/* eslint-disable */
+const de = {
+ headings: {
+ contact: 'Kontakt',
+ experience: 'Berufserfahrung',
+ education: 'Schulbildung',
+ skills: 'Qualifikationen'
+ }
+};
+export default de;
diff --git a/src/lang/en.js b/src/lang/en.js
new file mode 100644
index 0000000..1335226
--- /dev/null
+++ b/src/lang/en.js
@@ -0,0 +1,10 @@
+/* eslint-disable */
+const en = {
+ headings: {
+ contact: 'Contact',
+ experience: 'Experience',
+ education: 'Education',
+ skills: 'Skills'
+ }
+};
+export default en;
diff --git a/src/lang/fr.js b/src/lang/fr.js
new file mode 100644
index 0000000..2d6afa7
--- /dev/null
+++ b/src/lang/fr.js
@@ -0,0 +1,10 @@
+/* eslint-disable */
+const fr = {
+ headings: {
+ contact: 'Contact',
+ experience: 'Expériences professionelles',
+ education: 'Formation',
+ skills: 'Compétences'
+ }
+};
+export default fr;
diff --git a/src/pages/home.vue b/src/pages/home.vue
index 2e99b6d..6f25c4a 100755
--- a/src/pages/home.vue
+++ b/src/pages/home.vue
@@ -14,14 +14,6 @@
-
- purple
-
+ purple
+ {{person.position}}
@@ -13,7 +13,7 @@| {{person.contact.email}} | @@ -49,13 +49,13 @@