From ede10ecbd59740850735842eb3f7167669cc7dcb Mon Sep 17 00:00:00 2001 From: Josh Creek Date: Sun, 6 Oct 2019 18:14:03 +0100 Subject: [PATCH] Initial commit using lightly customised bootstap resume template. --- .browserslistrc | 13 + .gitignore | 1 + .travis.yml | 14 + LICENSE | 21 + README.md | 68 + css/resume.css | 177 + css/resume.min.css | 5 + gulpfile.js | 135 + img/profile.png | Bin 0 -> 114080 bytes index.html | 328 + js/resume.js | 28 + js/resume.min.js | 7 + noogler-hat-edited-round.psd | Bin 0 -> 801034 bytes package-lock.json | 6367 ++++++++++ package.json | 50 + scss/_bootstrap-overrides.scss | 16 + scss/_global.scss | 80 + scss/_mixins.scss | 8 + scss/_nav.scss | 58 + scss/_resume-item.scss | 27 + scss/_variables.scss | 46 + scss/resume.scss | 6 + vendor/bootstrap/css/bootstrap-grid.css | 3719 ++++++ vendor/bootstrap/css/bootstrap-grid.css.map | 1 + vendor/bootstrap/css/bootstrap-grid.min.css | 7 + .../bootstrap/css/bootstrap-grid.min.css.map | 1 + vendor/bootstrap/css/bootstrap-reboot.css | 331 + vendor/bootstrap/css/bootstrap-reboot.css.map | 1 + vendor/bootstrap/css/bootstrap-reboot.min.css | 8 + .../css/bootstrap-reboot.min.css.map | 1 + vendor/bootstrap/css/bootstrap.css | 10038 +++++++++++++++ vendor/bootstrap/css/bootstrap.css.map | 1 + vendor/bootstrap/css/bootstrap.min.css | 7 + vendor/bootstrap/css/bootstrap.min.css.map | 1 + vendor/bootstrap/js/bootstrap.bundle.js | 7013 ++++++++++ vendor/bootstrap/js/bootstrap.bundle.js.map | 1 + vendor/bootstrap/js/bootstrap.bundle.min.js | 7 + .../bootstrap/js/bootstrap.bundle.min.js.map | 1 + vendor/bootstrap/js/bootstrap.js | 4435 +++++++ vendor/bootstrap/js/bootstrap.js.map | 1 + vendor/bootstrap/js/bootstrap.min.js | 7 + vendor/bootstrap/js/bootstrap.min.js.map | 1 + vendor/fontawesome-free/css/all.css | 4396 +++++++ vendor/fontawesome-free/css/all.min.css | 5 + vendor/fontawesome-free/css/brands.css | 14 + vendor/fontawesome-free/css/brands.min.css | 5 + vendor/fontawesome-free/css/fontawesome.css | 4363 +++++++ .../fontawesome-free/css/fontawesome.min.css | 5 + vendor/fontawesome-free/css/regular.css | 15 + vendor/fontawesome-free/css/regular.min.css | 5 + vendor/fontawesome-free/css/solid.css | 16 + vendor/fontawesome-free/css/solid.min.css | 5 + vendor/fontawesome-free/css/svg-with-js.css | 371 + .../fontawesome-free/css/svg-with-js.min.css | 5 + vendor/fontawesome-free/css/v4-shims.css | 2166 ++++ vendor/fontawesome-free/css/v4-shims.min.css | 5 + .../webfonts/fa-brands-400.eot | Bin 0 -> 129590 bytes .../webfonts/fa-brands-400.svg | 3449 +++++ .../webfonts/fa-brands-400.ttf | Bin 0 -> 129284 bytes .../webfonts/fa-brands-400.woff | Bin 0 -> 87520 bytes .../webfonts/fa-brands-400.woff2 | Bin 0 -> 74524 bytes .../webfonts/fa-regular-400.eot | Bin 0 -> 34394 bytes .../webfonts/fa-regular-400.svg | 803 ++ .../webfonts/fa-regular-400.ttf | Bin 0 -> 34096 bytes .../webfonts/fa-regular-400.woff | Bin 0 -> 16804 bytes .../webfonts/fa-regular-400.woff2 | Bin 0 -> 13584 bytes .../webfonts/fa-solid-900.eot | Bin 0 -> 192122 bytes .../webfonts/fa-solid-900.svg | 4649 +++++++ .../webfonts/fa-solid-900.ttf | Bin 0 -> 191836 bytes .../webfonts/fa-solid-900.woff | Bin 0 -> 98016 bytes .../webfonts/fa-solid-900.woff2 | Bin 0 -> 75408 bytes .../jquery.easing.compatibility.js | 59 + vendor/jquery-easing/jquery.easing.js | 166 + vendor/jquery-easing/jquery.easing.min.js | 1 + vendor/jquery/jquery.js | 10598 ++++++++++++++++ vendor/jquery/jquery.min.js | 2 + vendor/jquery/jquery.min.map | 1 + vendor/jquery/jquery.slim.js | 8495 +++++++++++++ vendor/jquery/jquery.slim.min.js | 2 + vendor/jquery/jquery.slim.min.map | 1 + 80 files changed, 72639 insertions(+) create mode 100644 .browserslistrc create mode 100644 .gitignore create mode 100644 .travis.yml create mode 100644 LICENSE create mode 100644 README.md create mode 100644 css/resume.css create mode 100644 css/resume.min.css create mode 100644 gulpfile.js create mode 100644 img/profile.png create mode 100644 index.html create mode 100644 js/resume.js create mode 100644 js/resume.min.js create mode 100644 noogler-hat-edited-round.psd create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 scss/_bootstrap-overrides.scss create mode 100644 scss/_global.scss create mode 100644 scss/_mixins.scss create mode 100644 scss/_nav.scss create mode 100644 scss/_resume-item.scss create mode 100644 scss/_variables.scss create mode 100644 scss/resume.scss create mode 100644 vendor/bootstrap/css/bootstrap-grid.css create mode 100644 vendor/bootstrap/css/bootstrap-grid.css.map create mode 100644 vendor/bootstrap/css/bootstrap-grid.min.css create mode 100644 vendor/bootstrap/css/bootstrap-grid.min.css.map create mode 100644 vendor/bootstrap/css/bootstrap-reboot.css create mode 100644 vendor/bootstrap/css/bootstrap-reboot.css.map create mode 100644 vendor/bootstrap/css/bootstrap-reboot.min.css create mode 100644 vendor/bootstrap/css/bootstrap-reboot.min.css.map create mode 100644 vendor/bootstrap/css/bootstrap.css create mode 100644 vendor/bootstrap/css/bootstrap.css.map create mode 100644 vendor/bootstrap/css/bootstrap.min.css create mode 100644 vendor/bootstrap/css/bootstrap.min.css.map create mode 100644 vendor/bootstrap/js/bootstrap.bundle.js create mode 100644 vendor/bootstrap/js/bootstrap.bundle.js.map create mode 100644 vendor/bootstrap/js/bootstrap.bundle.min.js create mode 100644 vendor/bootstrap/js/bootstrap.bundle.min.js.map create mode 100644 vendor/bootstrap/js/bootstrap.js create mode 100644 vendor/bootstrap/js/bootstrap.js.map create mode 100644 vendor/bootstrap/js/bootstrap.min.js create mode 100644 vendor/bootstrap/js/bootstrap.min.js.map create mode 100644 vendor/fontawesome-free/css/all.css create mode 100644 vendor/fontawesome-free/css/all.min.css create mode 100644 vendor/fontawesome-free/css/brands.css create mode 100644 vendor/fontawesome-free/css/brands.min.css create mode 100644 vendor/fontawesome-free/css/fontawesome.css create mode 100644 vendor/fontawesome-free/css/fontawesome.min.css create mode 100644 vendor/fontawesome-free/css/regular.css create mode 100644 vendor/fontawesome-free/css/regular.min.css create mode 100644 vendor/fontawesome-free/css/solid.css create mode 100644 vendor/fontawesome-free/css/solid.min.css create mode 100644 vendor/fontawesome-free/css/svg-with-js.css create mode 100644 vendor/fontawesome-free/css/svg-with-js.min.css create mode 100644 vendor/fontawesome-free/css/v4-shims.css create mode 100644 vendor/fontawesome-free/css/v4-shims.min.css create mode 100644 vendor/fontawesome-free/webfonts/fa-brands-400.eot create mode 100644 vendor/fontawesome-free/webfonts/fa-brands-400.svg create mode 100644 vendor/fontawesome-free/webfonts/fa-brands-400.ttf create mode 100644 vendor/fontawesome-free/webfonts/fa-brands-400.woff create mode 100644 vendor/fontawesome-free/webfonts/fa-brands-400.woff2 create mode 100644 vendor/fontawesome-free/webfonts/fa-regular-400.eot create mode 100644 vendor/fontawesome-free/webfonts/fa-regular-400.svg create mode 100644 vendor/fontawesome-free/webfonts/fa-regular-400.ttf create mode 100644 vendor/fontawesome-free/webfonts/fa-regular-400.woff create mode 100644 vendor/fontawesome-free/webfonts/fa-regular-400.woff2 create mode 100644 vendor/fontawesome-free/webfonts/fa-solid-900.eot create mode 100644 vendor/fontawesome-free/webfonts/fa-solid-900.svg create mode 100644 vendor/fontawesome-free/webfonts/fa-solid-900.ttf create mode 100644 vendor/fontawesome-free/webfonts/fa-solid-900.woff create mode 100644 vendor/fontawesome-free/webfonts/fa-solid-900.woff2 create mode 100644 vendor/jquery-easing/jquery.easing.compatibility.js create mode 100644 vendor/jquery-easing/jquery.easing.js create mode 100644 vendor/jquery-easing/jquery.easing.min.js create mode 100644 vendor/jquery/jquery.js create mode 100644 vendor/jquery/jquery.min.js create mode 100644 vendor/jquery/jquery.min.map create mode 100644 vendor/jquery/jquery.slim.js create mode 100644 vendor/jquery/jquery.slim.min.js create mode 100644 vendor/jquery/jquery.slim.min.map diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 0000000..66df8f4 --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,13 @@ +# https://github.com/browserslist/browserslist#readme + +>= 1% +last 1 major version +not dead +Chrome >= 60 +Firefox >= 60 +Edge >= 15.15063 +Explorer 11 +iOS >= 10 +Safari >= 10 +Android >= 6 +not ExplorerMobile <= 11 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..9662ddf --- /dev/null +++ b/.travis.yml @@ -0,0 +1,14 @@ +language: node_js +git: + depth: 3 +node_js: + - "node" +install: npm install +script: + - npm test + - gulp +cache: + directories: + - node_modules +notifications: + email: false diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9478164 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2013-2019 Blackrock Digital LLC + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..9ae038d --- /dev/null +++ b/README.md @@ -0,0 +1,68 @@ +# [Start Bootstrap - Resume](https://startbootstrap.com/template-overviews/resume/) + +[Resume](https://startbootstrap.com/template-overviews/resume/) is a resume and CV theme for [Bootstrap](http://getbootstrap.com/) created by [Start Bootstrap](http://startbootstrap.com/). This theme features a fixed sidebar with content sections to build a simple, yet elegant resume. + +## Preview + +[![Resume Preview](https://startbootstrap.com/assets/img/screenshots/themes/resume.png)](https://blackrockdigital.github.io/startbootstrap-resume/) + +**[View Live Preview](https://blackrockdigital.github.io/startbootstrap-resume/)** + +## Status + +[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/BlackrockDigital/startbootstrap-resume/master/LICENSE) +[![npm version](https://img.shields.io/npm/v/startbootstrap-resume.svg)](https://www.npmjs.com/package/startbootstrap-resume) +[![Build Status](https://travis-ci.org/BlackrockDigital/startbootstrap-resume.svg?branch=master)](https://travis-ci.org/BlackrockDigital/startbootstrap-resume) +[![dependencies Status](https://david-dm.org/BlackrockDigital/startbootstrap-resume/status.svg)](https://david-dm.org/BlackrockDigital/startbootstrap-resume) +[![devDependencies Status](https://david-dm.org/BlackrockDigital/startbootstrap-resume/dev-status.svg)](https://david-dm.org/BlackrockDigital/startbootstrap-resume?type=dev) + +## Download and Installation + +To begin using this template, choose one of the following options to get started: +* [Download the latest release on Start Bootstrap](https://startbootstrap.com/template-overviews/resume/) +* Install via npm: `npm i startbootstrap-resume` +* Clone the repo: `git clone https://github.com/BlackrockDigital/startbootstrap-resume.git` +* [Fork, Clone, or Download on GitHub](https://github.com/BlackrockDigital/startbootstrap-resume) + +## Usage + +### Basic Usage + +After downloading, simply edit the HTML and CSS files included with the template in your favorite text editor to make changes. These are the only files you need to worry about, you can ignore everything else! To preview the changes you make to the code, you can open the `index.html` file in your web browser. + +### Advanced Usage + +After installation, run `npm install` and then run `npm start` which will open up a preview of the template in your default browser, watch for changes to core template files, and live reload the browser when changes are saved. You can view the `gulpfile.js` to see which tasks are included with the dev environment. + +#### Gulp Tasks + +- `gulp` the default task that builds everything +- `gulp watch` browserSync opens the project in your default browser and live reloads when changes are made +- `gulp css` compiles SCSS files into CSS and minifies the compiled CSS +- `gulp js` minifies the themes JS file +- `gulp vendor` copies dependencies from node_modules to the vendor directory + +You must have npm installed globally in order to use this build environment. + +## Bugs and Issues + +Have a bug or an issue with this template? [Open a new issue](https://github.com/BlackrockDigital/startbootstrap-resume/issues) here on GitHub or leave a comment on the [template overview page at Start Bootstrap](http://startbootstrap.com/template-overviews/resume/). + +## About + +Start Bootstrap is an open source library of free Bootstrap templates and themes. All of the free templates and themes on Start Bootstrap are released under the MIT license, which means you can use them for any purpose, even for commercial projects. + +* https://startbootstrap.com +* https://twitter.com/SBootstrap + +Start Bootstrap was created by and is maintained by **[David Miller](http://davidmiller.io/)**, Owner of [Blackrock Digital](http://blackrockdigital.io/). + +* http://davidmiller.io +* https://twitter.com/davidmillerskt +* https://github.com/davidtmiller + +Start Bootstrap is based on the [Bootstrap](http://getbootstrap.com/) framework created by [Mark Otto](https://twitter.com/mdo) and [Jacob Thorton](https://twitter.com/fat). + +## Copyright and License + +Copyright 2013-2019 Blackrock Digital LLC. Code released under the [MIT](https://github.com/BlackrockDigital/startbootstrap-resume/blob/gh-pages/LICENSE) license. diff --git a/css/resume.css b/css/resume.css new file mode 100644 index 0000000..15f7b1b --- /dev/null +++ b/css/resume.css @@ -0,0 +1,177 @@ +/*! + * Start Bootstrap - Resume v5.0.8 (https://startbootstrap.com/template-overviews/resume) + * Copyright 2013-2019 Start Bootstrap + * Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap-resume/blob/master/LICENSE) + */ + +body { + font-family: 'Muli', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; + padding-top: 54px; + color: #868e96; +} + +@media (min-width: 992px) { + body { + padding-top: 0; + padding-left: 17rem; + } +} + +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: 'Saira Extra Condensed', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; + font-weight: 700; + text-transform: uppercase; + color: #343a40; +} + +h1 { + font-size: 6rem; + line-height: 5.5rem; +} + +h2 { + font-size: 3.5rem; +} + +h3 { + font-size: 2rem; +} + +p.lead { + font-size: 1.15rem; + font-weight: 400; +} + +.subheading { + text-transform: uppercase; + font-weight: 500; + font-family: 'Saira Extra Condensed', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; + font-size: 1.5rem; +} + +.social-icons a { + display: inline-block; + height: 3.5rem; + width: 3.5rem; + background-color: #495057; + color: #fff !important; + border-radius: 100%; + text-align: center; + font-size: 1.5rem; + line-height: 3.5rem; + margin-right: 1rem; +} + +.social-icons a:last-child { + margin-right: 0; +} + +.social-icons a:hover { + background-color: #F4B400; +} + +.dev-icons { + font-size: 3rem; +} + +.dev-icons .list-inline-item i:hover { + color: #F4B400; +} + +#sideNav .navbar-nav .nav-item .nav-link { + font-weight: 800; + letter-spacing: 0.05rem; + text-transform: uppercase; +} + +#sideNav .navbar-toggler:focus { + outline-color: #ffcd42; +} + +@media (min-width: 992px) { + #sideNav { + text-align: center; + position: fixed; + top: 0; + left: 0; + display: flex; + flex-direction: column; + width: 17rem; + height: 100vh; + } + #sideNav .navbar-brand { + display: flex; + margin: auto auto 0; + padding: 0.5rem; + } + #sideNav .navbar-brand .img-profile { + max-width: 10rem; + max-height: 10rem; + border: 0.5rem solid #343a40; + background: white; + } + #sideNav .navbar-collapse { + display: flex; + align-items: flex-start; + flex-grow: 0; + width: 100%; + margin-bottom: auto; + } + #sideNav .navbar-collapse .navbar-nav { + flex-direction: column; + width: 100%; + } + #sideNav .navbar-collapse .navbar-nav .nav-item { + display: block; + } + #sideNav .navbar-collapse .navbar-nav .nav-item .nav-link { + display: block; + } +} + +section.resume-section { + padding-top: 5rem !important; + padding-bottom: 5rem !important; + max-width: 75rem; +} + +section.resume-section .resume-item .resume-date { + min-width: none; +} + +@media (min-width: 768px) { + section.resume-section { + min-height: 100vh; + } + section.resume-section .resume-item .resume-date { + min-width: 18rem; + } +} + +@media (min-width: 992px) { + section.resume-section { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } +} + +.bg-primary { + background-color: #F4B400 !important; +} + +.text-primary { + color: #F4B400 !important; +} + +a { + color: #F4B400; +} + +a:hover, a:focus, a:active { + color: #a87c00; +} diff --git a/css/resume.min.css b/css/resume.min.css new file mode 100644 index 0000000..af8fc1e --- /dev/null +++ b/css/resume.min.css @@ -0,0 +1,5 @@ +/*! + * Start Bootstrap - Resume v5.0.8 (https://startbootstrap.com/template-overviews/resume) + * Copyright 2013-2019 Start Bootstrap + * Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap-resume/blob/master/LICENSE) + */body{font-family:Muli,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';padding-top:54px;color:#868e96}@media (min-width:992px){body{padding-top:0;padding-left:17rem}}h1,h2,h3,h4,h5,h6{font-family:'Saira Extra Condensed',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-weight:700;text-transform:uppercase;color:#343a40}h1{font-size:6rem;line-height:5.5rem}h2{font-size:3.5rem}h3{font-size:2rem}p.lead{font-size:1.15rem;font-weight:400}.subheading{text-transform:uppercase;font-weight:500;font-family:'Saira Extra Condensed',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';font-size:1.5rem}.social-icons a{display:inline-block;height:3.5rem;width:3.5rem;background-color:#495057;color:#fff!important;border-radius:100%;text-align:center;font-size:1.5rem;line-height:3.5rem;margin-right:1rem}.social-icons a:last-child{margin-right:0}.social-icons a:hover{background-color:#f4b400}.dev-icons{font-size:3rem}.dev-icons .list-inline-item i:hover{color:#f4b400}#sideNav .navbar-nav .nav-item .nav-link{font-weight:800;letter-spacing:.05rem;text-transform:uppercase}#sideNav .navbar-toggler:focus{outline-color:#ffcd42}@media (min-width:992px){#sideNav{text-align:center;position:fixed;top:0;left:0;display:flex;flex-direction:column;width:17rem;height:100vh}#sideNav .navbar-brand{display:flex;margin:auto auto 0;padding:.5rem}#sideNav .navbar-brand .img-profile{max-width:10rem;max-height:10rem;border:.5rem solid #343a40;background:#fff}#sideNav .navbar-collapse{display:flex;align-items:flex-start;flex-grow:0;width:100%;margin-bottom:auto}#sideNav .navbar-collapse .navbar-nav{flex-direction:column;width:100%}#sideNav .navbar-collapse .navbar-nav .nav-item{display:block}#sideNav .navbar-collapse .navbar-nav .nav-item .nav-link{display:block}}section.resume-section{padding-top:5rem!important;padding-bottom:5rem!important;max-width:75rem}section.resume-section .resume-item .resume-date{min-width:none}@media (min-width:768px){section.resume-section{min-height:100vh}section.resume-section .resume-item .resume-date{min-width:18rem}}@media (min-width:992px){section.resume-section{padding-top:3rem!important;padding-bottom:3rem!important}}.bg-primary{background-color:#f4b400!important}.text-primary{color:#f4b400!important}a{color:#f4b400}a:active,a:focus,a:hover{color:#a87c00} \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 0000000..42e2f14 --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,135 @@ +"use strict"; + +// Load plugins +const autoprefixer = require("gulp-autoprefixer"); +const browsersync = require("browser-sync").create(); +const cleanCSS = require("gulp-clean-css"); +const del = require("del"); +const gulp = require("gulp"); +const header = require("gulp-header"); +const merge = require("merge-stream"); +const plumber = require("gulp-plumber"); +const rename = require("gulp-rename"); +const sass = require("gulp-sass"); +const uglify = require("gulp-uglify"); + +// Load package.json for banner +const pkg = require('./package.json'); + +// Set the banner content +const banner = ['/*!\n', + ' * Start Bootstrap - <%= pkg.title %> v<%= pkg.version %> (<%= pkg.homepage %>)\n', + ' * Copyright 2013-' + (new Date()).getFullYear(), ' <%= pkg.author %>\n', + ' * Licensed under <%= pkg.license %> (https://github.com/BlackrockDigital/<%= pkg.name %>/blob/master/LICENSE)\n', + ' */\n', + '\n' +].join(''); + +// BrowserSync +function browserSync(done) { + browsersync.init({ + server: { + baseDir: "./" + }, + port: 3000 + }); + done(); +} + +// BrowserSync reload +function browserSyncReload(done) { + browsersync.reload(); + done(); +} + +// Clean vendor +function clean() { + return del(["./vendor/"]); +} + +// Bring third party dependencies from node_modules into vendor directory +function modules() { + // Bootstrap + var bootstrap = gulp.src('./node_modules/bootstrap/dist/**/*') + .pipe(gulp.dest('./vendor/bootstrap')); + // Font Awesome CSS + var fontAwesomeCSS = gulp.src('./node_modules/@fortawesome/fontawesome-free/css/**/*') + .pipe(gulp.dest('./vendor/fontawesome-free/css')); + // Font Awesome Webfonts + var fontAwesomeWebfonts = gulp.src('./node_modules/@fortawesome/fontawesome-free/webfonts/**/*') + .pipe(gulp.dest('./vendor/fontawesome-free/webfonts')); + // jQuery Easing + var jqueryEasing = gulp.src('./node_modules/jquery.easing/*.js') + .pipe(gulp.dest('./vendor/jquery-easing')); + // jQuery + var jquery = gulp.src([ + './node_modules/jquery/dist/*', + '!./node_modules/jquery/dist/core.js' + ]) + .pipe(gulp.dest('./vendor/jquery')); + return merge(bootstrap, fontAwesomeCSS, fontAwesomeWebfonts, jquery, jqueryEasing); +} + +// CSS task +function css() { + return gulp + .src("./scss/**/*.scss") + .pipe(plumber()) + .pipe(sass({ + outputStyle: "expanded", + includePaths: "./node_modules", + })) + .on("error", sass.logError) + .pipe(autoprefixer({ + cascade: false + })) + .pipe(header(banner, { + pkg: pkg + })) + .pipe(gulp.dest("./css")) + .pipe(rename({ + suffix: ".min" + })) + .pipe(cleanCSS()) + .pipe(gulp.dest("./css")) + .pipe(browsersync.stream()); +} + +// JS task +function js() { + return gulp + .src([ + './js/*.js', + '!./js/*.min.js' + ]) + .pipe(uglify()) + .pipe(header(banner, { + pkg: pkg + })) + .pipe(rename({ + suffix: '.min' + })) + .pipe(gulp.dest('./js')) + .pipe(browsersync.stream()); +} + +// Watch files +function watchFiles() { + gulp.watch("./scss/**/*", css); + gulp.watch(["./js/**/*", "!./js/**/*.min.js"], js); + gulp.watch("./**/*.html", browserSyncReload); +} + +// Define complex tasks +const vendor = gulp.series(clean, modules); +const build = gulp.series(vendor, gulp.parallel(css, js)); +const watch = gulp.series(build, gulp.parallel(watchFiles, browserSync)); + +// Export tasks +exports.css = css; +exports.js = js; +exports.clean = clean; +exports.vendor = vendor; +exports.build = build; +exports.watch = watch; +exports.default = build; diff --git a/img/profile.png b/img/profile.png new file mode 100644 index 0000000000000000000000000000000000000000..a0d78268eda5fff1530867a4c410f648a4eec0ad GIT binary patch literal 114080 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