1
1
Fork 0

Cleared out for 2020

This commit is contained in:
Jo Wroten 2019-12-08 15:10:00 -06:00
parent 5aab3888a2
commit d25d7a6ddd
43 changed files with 0 additions and 1648 deletions

View file

@ -1,7 +0,0 @@
# Joe Wroten's Portfolio
```bash
export GITHUB_API_TOKEN="TOKEN"
```

View file

@ -1,42 +0,0 @@
const chalk = require('chalk');
const { getPinnedRepoJSONs, getStaticPageJSONs } = require('./src/discoverJSONData');
const { initialize: initializePages, generateIndexPage, generateInteriorPages } = require('./src/generateHTMLPages');
const copyStaticAssets = require('./src/copyStaticAssets');
const generateSpritesheet = require('./src/generateSpritesheet');
const { existsSync, mkdirSync } = require('fs');
['./dist', './dist/assets'].forEach(dir => {
if (!existsSync(dir)) mkdirSync(dir);
});
(async () => {
console.log(chalk.blue('● Fetching Pinned Repo Data...'));
let repoJSONs = await getPinnedRepoJSONs();
console.log(chalk.blue('● Fetching Static Page Data...'));
let staticJSONs = await getStaticPageJSONs();
console.log(chalk.blue('● Initializing page generator...'));
await initializePages();
console.log(chalk.green('✓ Initialized page partials'));
console.log(chalk.blue('● Generating index html page...'));
await generateIndexPage(repoJSONs.concat(staticJSONs));
console.log(chalk.green('✓ Generated index html page'));
console.log(chalk.blue('● Generating interior html pages...'));
await generateInteriorPages(repoJSONs.concat(staticJSONs));
console.log(chalk.green('✓ Generated interior html pages'));
})();
(async () => {
console.log(chalk.blue('● Copying static assets...'));
await copyStaticAssets();
console.log(chalk.green('✓ Copied static assets'));
})();
(async () => {
console.log(chalk.blue('● Generating spritesheet...'));
await generateSpritesheet();
console.log(chalk.green('✓ Generated spritesheet'));
})();

630
package-lock.json generated
View file

@ -1,630 +0,0 @@
{
"name": "joe-wroten-portfolio",
"requires": true,
"lockfileVersion": 1,
"dependencies": {
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
"dev": true
},
"ansi-styles": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
"requires": {
"color-convert": "^1.9.0"
}
},
"async": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
"integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
"dev": true,
"requires": {
"lodash": "^4.17.10"
}
},
"axios": {
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz",
"integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==",
"dev": true,
"requires": {
"follow-redirects": "1.5.10",
"is-buffer": "^2.0.2"
}
},
"builtin-modules": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
"integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
"dev": true
},
"camelcase": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
"integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
"dev": true
},
"chalk": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
"integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
"dev": true,
"requires": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
"supports-color": "^5.3.0"
}
},
"cliui": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
"integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
"dev": true,
"requires": {
"string-width": "^1.0.1",
"strip-ansi": "^3.0.1",
"wrap-ansi": "^2.0.0"
}
},
"code-point-at": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
"dev": true
},
"color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"dev": true,
"requires": {
"color-name": "1.1.3"
}
},
"color-name": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
"dev": true
},
"commander": {
"version": "2.20.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
"integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==",
"dev": true,
"optional": true
},
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"dev": true,
"requires": {
"ms": "2.0.0"
}
},
"decamelize": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
"dev": true
},
"error-ex": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
"integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
"dev": true,
"requires": {
"is-arrayish": "^0.2.1"
}
},
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
"dev": true
},
"find-up": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
"integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
"dev": true,
"requires": {
"path-exists": "^2.0.0",
"pinkie-promise": "^2.0.0"
}
},
"follow-redirects": {
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
"integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
"dev": true,
"requires": {
"debug": "=3.1.0"
}
},
"fs-extra": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
"integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
"jsonfile": "^4.0.0",
"universalify": "^0.1.0"
}
},
"get-caller-file": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
"integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
"dev": true
},
"graceful-fs": {
"version": "4.1.15",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
"integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==",
"dev": true
},
"handlebars": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz",
"integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==",
"dev": true,
"requires": {
"neo-async": "^2.6.0",
"optimist": "^0.6.1",
"source-map": "^0.6.1",
"uglify-js": "^3.1.4"
}
},
"has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
"dev": true
},
"hosted-git-info": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
"integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==",
"dev": true
},
"invert-kv": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
"integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
"dev": true
},
"is-arrayish": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
"dev": true
},
"is-buffer": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
"integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==",
"dev": true
},
"is-builtin-module": {
"version": "1.0.0",
"resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
"integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
"dev": true,
"requires": {
"builtin-modules": "^1.0.0"
}
},
"is-fullwidth-code-point": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
"dev": true,
"requires": {
"number-is-nan": "^1.0.0"
}
},
"is-utf8": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
"integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
"dev": true
},
"jsonfile": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
"integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.6"
}
},
"lcid": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
"integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
"dev": true,
"requires": {
"invert-kv": "^1.0.0"
}
},
"load-json-file": {
"version": "1.1.0",
"resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
"integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
"parse-json": "^2.2.0",
"pify": "^2.0.0",
"pinkie-promise": "^2.0.0",
"strip-bom": "^2.0.0"
}
},
"locate-character": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/locate-character/-/locate-character-1.0.0.tgz",
"integrity": "sha1-EWRDwj8p+uKJAMrChboMcfJpP20=",
"dev": true
},
"lodash": {
"version": "4.17.14",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz",
"integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==",
"dev": true
},
"marked": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/marked/-/marked-0.6.2.tgz",
"integrity": "sha512-LqxwVH3P/rqKX4EKGz7+c2G9r98WeM/SW34ybhgNGhUQNKtf1GmmSkJ6cDGJ/t6tiyae49qRkpyTw2B9HOrgUA==",
"dev": true
},
"minimist": {
"version": "0.0.10",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
"integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
"dev": true
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
},
"neo-async": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz",
"integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==",
"dev": true
},
"normalize-package-data": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
"integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
"dev": true,
"requires": {
"hosted-git-info": "^2.1.4",
"is-builtin-module": "^1.0.0",
"semver": "2 || 3 || 4 || 5",
"validate-npm-package-license": "^3.0.1"
}
},
"number-is-nan": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
"dev": true
},
"optimist": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
"integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
"dev": true,
"requires": {
"minimist": "~0.0.1",
"wordwrap": "~0.0.2"
}
},
"os-locale": {
"version": "1.4.0",
"resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
"integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
"dev": true,
"requires": {
"lcid": "^1.0.0"
}
},
"parse-json": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
"integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
"dev": true,
"requires": {
"error-ex": "^1.2.0"
}
},
"path-exists": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
"integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
"dev": true,
"requires": {
"pinkie-promise": "^2.0.0"
}
},
"path-type": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
"integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
"pify": "^2.0.0",
"pinkie-promise": "^2.0.0"
}
},
"pify": {
"version": "2.3.0",
"resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true
},
"pinkie": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
"integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
"dev": true
},
"pinkie-promise": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
"integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
"dev": true,
"requires": {
"pinkie": "^2.0.0"
}
},
"read-pkg": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
"integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
"dev": true,
"requires": {
"load-json-file": "^1.0.0",
"normalize-package-data": "^2.3.2",
"path-type": "^1.0.0"
}
},
"read-pkg-up": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
"integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
"dev": true,
"requires": {
"find-up": "^1.0.0",
"read-pkg": "^1.0.0"
}
},
"require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
"dev": true
},
"require-main-filename": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
"integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
"dev": true
},
"semver": {
"version": "5.6.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
"integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
"dev": true
},
"set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
"dev": true
},
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
},
"spdx-correct": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
"integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
"dev": true,
"requires": {
"spdx-expression-parse": "^3.0.0",
"spdx-license-ids": "^3.0.0"
}
},
"spdx-exceptions": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
"integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
"dev": true
},
"spdx-expression-parse": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
"integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
"dev": true,
"requires": {
"spdx-exceptions": "^2.1.0",
"spdx-license-ids": "^3.0.0"
}
},
"spdx-license-ids": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz",
"integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==",
"dev": true
},
"string-width": {
"version": "1.0.2",
"resolved": "http://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
"dev": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
"strip-ansi": "^3.0.0"
}
},
"strip-ansi": {
"version": "3.0.1",
"resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": {
"ansi-regex": "^2.0.0"
}
},
"strip-bom": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
"integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
"dev": true,
"requires": {
"is-utf8": "^0.2.0"
}
},
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
"requires": {
"has-flag": "^3.0.0"
}
},
"svg-parser": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-1.0.5.tgz",
"integrity": "sha1-e6c+varHpUK4QtaFmIctB3flt/8=",
"dev": true,
"requires": {
"locate-character": "^1.0.0"
}
},
"svg2sprite": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/svg2sprite/-/svg2sprite-2.0.1.tgz",
"integrity": "sha1-0jR9YA2Xppzy6T5X7lXEUwanCuc=",
"dev": true,
"requires": {
"svg-parser": "^1.0.5"
}
},
"svgdir2sprite": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/svgdir2sprite/-/svgdir2sprite-1.0.2.tgz",
"integrity": "sha512-24wgP/afi48CqtXVWXGtHUYsNlB9ju2aDiswmJpBBA7obs4Eq9sdHpyPgVTEoeVd/Y3s9NRipKdoIdjr6j56ew==",
"dev": true,
"requires": {
"async": "^2.6.1",
"svg2sprite": "^2.0.1",
"yargs": "^7.1.0"
}
},
"uglify-js": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz",
"integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==",
"dev": true,
"optional": true,
"requires": {
"commander": "~2.20.0",
"source-map": "~0.6.1"
}
},
"universalify": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
"dev": true
},
"validate-npm-package-license": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
"integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
"dev": true,
"requires": {
"spdx-correct": "^3.0.0",
"spdx-expression-parse": "^3.0.0"
}
},
"which-module": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
"integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
"dev": true
},
"wordwrap": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
"integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
"dev": true
},
"wrap-ansi": {
"version": "2.1.0",
"resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
"integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
"dev": true,
"requires": {
"string-width": "^1.0.1",
"strip-ansi": "^3.0.1"
}
},
"y18n": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
"integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
"dev": true
},
"yargs": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz",
"integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=",
"dev": true,
"requires": {
"camelcase": "^3.0.0",
"cliui": "^3.2.0",
"decamelize": "^1.1.1",
"get-caller-file": "^1.0.1",
"os-locale": "^1.4.0",
"read-pkg-up": "^1.0.1",
"require-directory": "^2.1.1",
"require-main-filename": "^1.0.1",
"set-blocking": "^2.0.0",
"string-width": "^1.0.2",
"which-module": "^1.0.0",
"y18n": "^3.2.1",
"yargs-parser": "^5.0.0"
}
},
"yargs-parser": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz",
"integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=",
"dev": true,
"requires": {
"camelcase": "^3.0.0"
}
}
}
}

View file

@ -1,16 +0,0 @@
{
"name": "jo-wroten-portfolio",
"main": "index.js",
"scripts": {
"start": "node index.js"
},
"devDependencies": {
"axios": "^0.19.0",
"chalk": "^2.4.1",
"fs-extra": "^7.0.1",
"handlebars": "^4.1.2",
"marked": "^0.6.2",
"svgdir2sprite": "^1.0.2"
},
"dependencies": {}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 332 KiB

View file

@ -1,79 +0,0 @@
/* Dracula Theme v1.2.5
*
* https://github.com/dracula/highlightjs
*
* Copyright 2016-present, All rights reserved
*
* Code licensed under the MIT license
*
* @author Denis Ciccale <dciccale@gmail.com>
* @author Zeno Rocha <hi@zenorocha.com>
*/
.hljs {
display: block;
overflow-x: auto;
padding: 0.5em;
background: #282a36;
}
.hljs-built_in,
.hljs-selector-tag,
.hljs-section,
.hljs-link {
color: #8be9fd;
}
.hljs-keyword {
color: #ff79c6;
}
.hljs,
.hljs-subst {
color: #f8f8f2;
}
.hljs-title {
color: #50fa7b;
}
.hljs-string,
.hljs-meta,
.hljs-name,
.hljs-type,
.hljs-attr,
.hljs-symbol,
.hljs-bullet,
.hljs-addition,
.hljs-variable,
.hljs-template-tag,
.hljs-template-variable {
color: #f1fa8c;
}
.hljs-comment,
.hljs-quote,
.hljs-deletion {
color: #6272a4;
}
.hljs-keyword,
.hljs-selector-tag,
.hljs-literal,
.hljs-title,
.hljs-section,
.hljs-doctag,
.hljs-type,
.hljs-name,
.hljs-strong {
font-weight: bold;
}
.hljs-literal,
.hljs-number {
color: #bd93f9;
}
.hljs-emphasis {
font-style: italic;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 505 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 896 KiB

Binary file not shown.

View file

@ -1,339 +0,0 @@
html, body {
padding: 0;
margin: 0;
font-family: 'Source Sans Pro', sans-serif;
font-size: 15pt;
color: #6C7A81;
}
svg {
fill: currentColor;
max-width: 100%;
max-height: 100%;
height: 1em;
}
code {
font-family: 'Source Code Pro', monospace;
}
h1, h2, h3, h4, h5, h6 {
font-family: 'Slabo 27px', serif;
}
h1 {
font-size: 35pt;
}
a {
color: #15202C;
}
.-underline {
text-decoration: underline;
}
.-pad-h {
padding-left: 20px;
padding-right: 20px;
}
.-pad-v {
padding-top: 20px;
padding-bottom: 20px;
}
.-mar-no {
margin: 0;
}
.-left {
float: left;
}
.-right {
float: right;
}
.-clearfix:after {
content: "";
display: table;
clear: both;
}
.-container {
position: relative;
max-width: 40rem;
margin: 0 auto;
}
.about-link {
transition: top .15s ease-out;
position: absolute;
top: -5px;
right: 20px;
}
.about-link:hover,
.about-link:focus {
top: 0;
}
.about-link-image {
height: 60px;
border-radius: 0 0 50% 50%;
}
.tag {
padding: 0 .3em;
border-radius: 3px;
margin-bottom: .25em;
margin-right: .5em;
box-shadow: 0px 5px 5px rgba(0, 0, 0, .1);
color: #1A323E;
text-decoration: none;
display: inline-block;
}
.-work-history .tag {
background: #EDF7FF;
}
.-volunteer .tag {
background: #F3EDFF;
}
.-git .tag {
background: #F0FFED;
}
.index-menulink {
color: white;
}
.index-menulink svg {
height: 1.5em;
}
.index-top {
color: #5B7189;
margin-bottom: 2.5rem;
}
.index-top-info {
display: flex;
}
.index-top em {
color: #B8CCE3;
font-style: normal;
text-decoration: none;
}
.index .name {
font-size: 20px;
flex-grow: 1;
}
.index .intro {
font-size: 59px;
line-height: 45px;
margin-top: 0;
margin-bottom: 5px;
text-transform: uppercase;
}
@media screen and (min-width: 550px) {
.index .intro {
margin-top: 2rem;
}
}
.index .tag {
margin-bottom: 1rem;
}
.index,
.interior-header {
background: #15202C;
color: white;
}
.interior-info {
display: flex;
}
.interior-link {
white-space: nowrap;
}
.interior-tags {
flex-grow: 1;
}
.index-interiorlinks {
list-style-type: none;
}
.index-interiorlink-wrapper {
margin: 1rem 0;
}
.index-interiorlink {
display: block;
width: 100%;
padding: .5rem 2rem;
color: white;
text-decoration: none;
box-sizing: border-box;
}
.index-interiorlink-description {
margin-bottom: .25em;
}
.index-interiorlink-icon {
position: relative;
top: .2em;
}
.interior-topbar {
height: 25px;
}
.interior-topbar svg {
color: white;
height: 2rem;
max-height: none;
position: relative;
top: -.5rem;
}
.index-interiorlink.-work-history,
.interior-headline.-work-history {
background: linear-gradient(90deg, rgba(181, 212, 242, .3), rgba(95, 118, 132, .3));
}
.index-interiorlink.-volunteer,
.interior-headline.-volunteer {
background: linear-gradient(90deg, rgba(235, 181, 242, .3), rgba(128, 95, 132, .3));
}
.index-interiorlink.-git,
.interior-headline.-git {
background: linear-gradient(90deg, rgba(181, 242, 186, .3), rgba(95, 132, 105, .3));
}
.interior-headline svg {
vertical-align: bottom;
}
.interior-headline h1 {
line-height: 1em;
margin: 0 auto;
}
.interior-content .interior-description {
margin-top: 0;
margin-bottom: .25em;
color: black;
font-size: 25pt;
}
.interior-content h1:first-of-type {
display: none;
speak: none;
}
.interior-content p > img,
.interior-content p > a > img {
max-height: 300px;
max-width: calc(100% + 40px);
position: relative;
left: -20px;
}
.interior-content p > img[src^="https://travis-ci"],
.interior-content p > img[src^="https://play.google.com/intl/en_us/badges"],
.interior-content p > img[src^="https://emberobserver"],
.interior-content p > img[src^="https://badge"],
.interior-content p > a > img[src^="https://travis-ci"],
.interior-content p > a > img[src^="https://play.google.com/intl/en_us/badges"],
.interior-content p > a > img[src^="https://emberobserver"],
.interior-content p > a > img[src^="https://badge"] {
left: 0;
}
.interior-content pre code {
font-size: 13pt;
border-radius: 3px;
max-width: 100%;
max-height: 6em;
display: block;
overflow: auto;
}
.tags {
list-style: none;
margin: 0;
padding: 0;
}
.index .tags {
height: 1.6em;
overflow: hidden;
}
.popup {
position: fixed;
top: 0;
right: 0;
left: 0;
bottom: 0;
z-index: 10;
transform: translateX(-100vw);
opacity: 0;
transition: opacity .35s;
}
.popup.open {
transform: translateX(0);
opacity: 1;
}
#about {
background: linear-gradient(-20deg, rgba(251, 181, 217, 0) 50%, rgba(250, 206, 190, 1)), linear-gradient(20deg, #92E8FD, #FCBADB);
}
.about-close {
position: absolute;
top: 0;
right: 1rem;
color: white;
}
.about-image {
width: 185px;
margin: 1rem auto;
display: block;
border-radius: 50%;
box-shadow: 0 5px 15px rgba(0,0,0,.4);
}
.about-links {
margin: 0 auto;
width: 360px;
list-style-type: none;
font-size: 2rem;
line-height: 4rem;
}
.about-links a {
text-decoration: none;
display: flex;
align-items: center;
}
.about-links svg {
margin-right: 1rem;
}
.footer {
font-size: 75%;
margin-top: 3rem;
margin-bottom: 1rem;
}
.footer a {
color: inherit;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 469 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 794 KiB

View file

@ -1,35 +0,0 @@
const { readdir, copyFile } = require('fs-extra');
const { extname, join } = require('path');
const paths = {
srcAssets: './src/assets',
distAssets: './dist/assets',
}
const _discoverAssets = async () => {
try {
return await readdir(paths.srcAssets);
} catch (error) {
console.error('Unable to find assets to copy', error);
return [];
}
};
const _copyAssets = async assets => {
try {
assets.forEach(asset => {
let srcFile = join(paths.srcAssets, asset);
let distFile = join(paths.distAssets, asset);
return copyFile(srcFile, distFile);
});
} catch (error) {
console.error('Unable to copy assets', error);
return;
}
};
module.exports = async () => {
let assets = await _discoverAssets();
_copyAssets(assets);
};

View file

@ -1,61 +0,0 @@
const { join } = require('path');
const { readdir, readJson } = require('fs-extra');
const marked = require('marked');
const requestGithub = require('./request');
const schema = require('./schema');
const pagesPath = './src/pages';
const getPinnedRepoJSONs = async () => {
let {
data: {
viewer: {
pinnedRepositories: {
edges: pinnedRepoData
}
}
}
} = await requestGithub(schema);
return pinnedRepoData.map(data => {
data.node.pageType = 'git';
if (data.node.readme && data.node.readme.text) {
data.node.readme.html = marked(data.node.readme.text);
}
return data.node;
});
};
const getStaticPageJSONs = async () => {
let fileNames;
let filesJSON;
try {
fileNames = await readdir(pagesPath);
} catch (error) {
console.error(error);
return;
}
let readFilesPromises = fileNames.map(fileName => {
let filePath = join(pagesPath, fileName);
return readJson(filePath);
});
try {
let allData = await Promise.all(readFilesPromises);
return allData.map(data => {
if (data.readme && data.readme.text) {
data.readme.html = marked(data.readme.text);
}
return data;
});
} catch (error) {
console.error('Error while reading JSON', error);
return;
}
};
module.exports = {
getPinnedRepoJSONs,
getStaticPageJSONs,
};

View file

@ -1,42 +0,0 @@
const { join } = require('path');
const { outputFile } = require('fs-extra');
const { getTemplate, registerPartials } = require('./template');
const distPath = './dist';
const initialize = async () => {
return registerPartials();
}
const generateIndexPage = async jsonData => {
let sortedData = jsonData.sort((prev, cur) => new Date(prev.updatedAt) < new Date(cur.updatedAt));
const indexTemplate = await getTemplate('index');
try {
return outputFile(join(distPath, 'index') + '.html', indexTemplate(sortedData));
} catch (error) {
console.error('Error while writing index html file', error);
return;
}
};
const generateInteriorPages = async jsonData => {
const interiorTemplate = await getTemplate('interior');
const saveAsInteriorHTML = async json => {
return outputFile(join(distPath, json.name) + '.html', interiorTemplate(json));
}
try {
return await Promise.all(jsonData.map(saveAsInteriorHTML));
} catch (error) {
console.error('Error while writing html files', error);
return;
}
};
module.exports = {
initialize,
generateInteriorPages,
generateIndexPage,
};

View file

@ -1,11 +0,0 @@
const svgdir2sprite = require('svgdir2sprite');
const { join } = require('path');
const paths = {
srcIcons: './src/icons',
distAssets: './dist/assets',
};
module.exports = async () => {
svgdir2sprite(paths.srcIcons, join(paths.distAssets, 'spritesheet.svg'));
};

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M8.997 13.985c.01 1.104-.88 2.008-1.986 2.015-1.105.009-2.005-.88-2.011-1.984-.01-1.105.879-2.005 1.982-2.016 1.106-.007 2.009.883 2.015 1.985zm-.978-3.986c-1.104.008-2.008-.88-2.015-1.987-.009-1.103.877-2.004 1.984-2.011 1.102-.01 2.008.877 2.012 1.982.012 1.107-.88 2.006-1.981 2.016zm7.981-4.014c.004 1.102-.881 2.008-1.985 2.015-1.106.01-2.008-.879-2.015-1.983-.011-1.106.878-2.006 1.985-2.015 1.101-.006 2.005.881 2.015 1.983zm-12 15.847c4.587.38 2.944-4.492 7.188-4.537l1.838 1.534c.458 5.537-6.315 6.772-9.026 3.003zm14.065-7.115c1.427-2.239 5.846-9.748 5.846-9.748.353-.623-.429-1.273-.975-.813 0 0-6.572 5.714-8.511 7.525-1.532 1.432-1.539 2.086-2.035 4.447l1.68 1.4c2.227-.915 2.868-1.04 3.995-2.811zm-12.622 4.806c-2.084-1.82-3.42-4.479-3.443-7.447-.044-5.51 4.406-10.03 9.92-10.075 3.838-.021 6.479 1.905 6.496 3.447l1.663-1.456c-1.01-2.223-4.182-4.045-8.176-3.992-6.623.055-11.955 5.466-11.903 12.092.023 2.912 1.083 5.57 2.823 7.635.958.492 2.123.329 2.62-.204zm12.797-1.906c1.059 1.97-1.351 3.37-3.545 3.992-.304.912-.803 1.721-1.374 2.311 5.255-.591 9.061-4.304 6.266-7.889-.459.685-.897 1.197-1.347 1.586z"/></svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 12l9-8v6h15v4h-15v6z"/></svg>

Before

Width:  |  Height:  |  Size: 124 B

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M24 20.188l-8.315-8.209 8.2-8.282-3.697-3.697-8.212 8.318-8.31-8.203-3.666 3.666 8.321 8.24-8.206 8.313 3.666 3.666 8.237-8.318 8.285 8.203z"/></svg>

Before

Width:  |  Height:  |  Size: 241 B

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M24 0l-6 22-8.129-7.239 7.802-8.234-10.458 7.227-7.215-1.754 24-12zm-15 16.668v7.332l3.258-4.431-3.258-2.901z"/></svg>

Before

Width:  |  Height:  |  Size: 210 B

View file

@ -1 +0,0 @@
<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd"><path d="M23.548 10.931l-10.479-10.478c-.302-.302-.698-.453-1.093-.453-.396 0-.791.151-1.093.453l-2.176 2.176 2.76 2.76c.642-.216 1.377-.071 1.889.44.513.515.658 1.256.435 1.9l2.66 2.66c.644-.222 1.387-.078 1.901.437.718.718.718 1.881 0 2.6-.719.719-1.883.719-2.602 0-.54-.541-.674-1.334-.4-2l-2.481-2.481v6.529c.175.087.34.202.487.348.717.717.717 1.881 0 2.601-.719.718-1.884.718-2.601 0-.719-.72-.719-1.884 0-2.601.177-.178.383-.312.602-.402v-6.589c-.219-.089-.425-.223-.602-.401-.544-.544-.676-1.343-.396-2.011l-2.721-2.721-7.185 7.185c-.302.302-.453.697-.453 1.093 0 .395.151.791.453 1.093l10.479 10.478c.302.302.697.452 1.092.452.396 0 .791-.15 1.093-.452l10.431-10.428c.302-.303.452-.699.452-1.094 0-.396-.15-.791-.452-1.093"/></svg>

Before

Width:  |  Height:  |  Size: 842 B

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M24 6h-24v-4h24v4zm0 4h-24v4h24v-4zm0 8h-24v4h24v-4z"/></svg>

Before

Width:  |  Height:  |  Size: 153 B

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M22 4v16h-1.537c-.692-1.195-1.985-2-3.463-2s-2.771.805-3.463 2h-3.074c-.692-1.195-1.985-2-3.463-2s-2.771.805-3.463 2h-1.537v-16h20zm2-2h-24v20h5c0-1.104.896-2 2-2s2 .896 2 2h6c0-1.104.896-2 2-2s2 .896 2 2h5v-20zm-10 13.597v.403h-10v-.417c-.004-1.112.044-1.747 1.324-2.043 1.402-.324 2.787-.613 2.121-1.841-1.972-3.637-.562-5.699 1.555-5.699 2.077 0 3.521 1.985 1.556 5.699-.647 1.22.688 1.51 2.121 1.841 1.284.297 1.328.936 1.323 2.057zm6-9.597h-4v2h4v-2zm0 4h-4v2h4v-2zm0 4h-4v2h4v-2z"/></svg>

Before

Width:  |  Height:  |  Size: 586 B

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M11.329 19.6c-.185.252-.47.385-.759.385-.194 0-.389-.06-.558-.183-.419-.309-.509-.896-.202-1.315l1.077-1.456c.308-.417.896-.508 1.315-.199.421.306.511.895.201 1.313l-1.074 1.455zm-.825-2.839c.308-.418.217-1.007-.201-1.316-.421-.308-1.008-.216-1.317.203l-1.073 1.449c-.309.419-.217 1.009.202 1.317.417.307 1.007.218 1.315-.202l1.074-1.451zm-1.9-1.388c.309-.417.217-1.007-.203-1.315-.418-.307-1.007-.216-1.314.202l-1.083 1.461c-.308.419-.209.995.209 1.304.421.308 1 .229 1.308-.19l1.083-1.462zm-1.898-1.386c.308-.419.219-1.007-.203-1.315-.419-.309-1.007-.218-1.315.201l-1.075 1.451c-.308.418-.217 1.008.202 1.315.419.307 1.008.218 1.315-.202l1.076-1.45zm17.294-8.438s-1.555.301-2.667.479c-2.146.344-4.144-.416-6.361-1.562-.445-.229-.957-.466-1.458-.466-.461 0-.913.209-1.292.639-1.366 1.547-2.16 2.915-3.785 3.864-.801.468.14 1.934 1.86 1.331.878-.308 1.736-.895 2.706-1.677.762-.615 1.22-.524 1.879.135 1.238 1.238 5.404 5.351 5.404 5.351 1.317-.812 2.422-1.312 3.713-1.792v-6.302zm-10.524 12.662c-.158.459-.618 1.001-.953 1.455.297.235.608.334.882.334.717 0 1.188-.671.542-1.318l-.471-.471zm6.506-3.463c-1.07-1.055-4.732-4.667-5.803-5.713-.165-.161-.421-.18-.608-.044-.639.464-2.082 1.485-2.944 1.788-1.685.59-3.115-.222-3.422-1.359-.192-.712.093-1.411.727-1.781 1.008-.589 1.657-1.375 2.456-2.363-.695-.539-1.35-.732-1.991-.732-1.706 0-3.317 1.366-5.336 1.231-1.373-.09-3.061-.403-3.061-.403v6.333c1.476.321 2.455.464 3.92 1.199l.462-.624c.364-.496.949-.792 1.564-.792.87 0 1.622.578 1.861 1.388.951 0 1.667.602 1.898 1.387.826-.031 1.641.519 1.897 1.385 1.171 0 2.017.92 1.981 2.007l1.168 1.168c.367.368.963.367 1.331 0 .368-.368.368-.964 0-1.332l-1.686-1.687c-.22-.22.113-.553.333-.333l2.032 2.033c.368.368.963.368 1.331 0s.368-.963 0-1.331l-2.501-2.502c-.221-.218.113-.553.333-.333l2.7 2.701c.368.368.963.368 1.331 0 .358-.356.361-.922.027-1.291z"/></svg>

Before

Width:  |  Height:  |  Size: 1.9 KiB

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M23 10h-22v-3h22v3zm-14-8c-1.104 0-2 .896-2 2v2h2v-1.5c0-.276.224-.5.5-.5h5c.276 0 .5.224.5.5v1.5h2v-2c0-1.104-.896-2-2-2h-6zm15 10h-24l2 10h20l2-10z"/></svg>

Before

Width:  |  Height:  |  Size: 250 B

View file

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M12.014 6.54s2.147-3.969 3.475-6.54l8.511 8.511c-2.583 1.321-6.556 3.459-6.556 3.459l-5.43-5.43zm-8.517 6.423s-1.339 5.254-3.497 8.604l.827.826 3.967-3.967c.348-.348.569-.801.629-1.288.034-.27.153-.532.361-.74.498-.498 1.306-.498 1.803 0 .498.499.498 1.305 0 1.803-.208.209-.469.328-.74.361-.488.061-.94.281-1.288.63l-3.967 3.968.826.84c3.314-2.133 8.604-3.511 8.604-3.511l4.262-7.837-3.951-3.951-7.836 4.262z"/></svg>

Before

Width:  |  Height:  |  Size: 510 B

View file

@ -1,22 +0,0 @@
{
"name": "Code2College",
"description": "Curriculum development and interview prep.",
"updatedAt": "2018-12-10T00:00:00Z",
"organization": "Code2College",
"url": "https://code2college.org/",
"pageType": "volunteer",
"repositoryTopics": {
"edges": [
{
"node": {
"topic": {
"name": "volunteering"
}
}
}
]
},
"readme": {
"text": "## Preparing the Next Generation for Success \n There's more than one way to volunteer in today's world. Offering one's skills as a web designer and developer is a great way to give back while tackling unique challenges. \n\n ![Volunteers](./assets/code2college.jpg) \n\n Homegrown tech talent is what Code2College is all about. Eager students from underrepresented groups are ready to learn STEM field topics and Code2College reaches out to those in the industry to help them get there. \n\n Meeting with these excited young minds for interview preparation really changed the way I connect with potential hires. \n\n Recently they've opened their cirriculum planning to outside collaboration. It's been an exciting challenge to carefully consider the best ways to teach the fundamentals of web development from \"What is HTML?\" to \"I can build my own web app!\"."
}
}

View file

@ -1,22 +0,0 @@
{
"name": "Innovating in FinX",
"organization": "Q2ebanking",
"url": "https://www.q2ebanking.com/",
"description": "Stronger communities w/ better financial tools.",
"updatedAt": "2019-01-30T00:00:00Z",
"pageType": "work-history",
"repositoryTopics": {
"edges": [
{
"node": {
"topic": {
"name": "work history"
}
}
}
]
},
"readme": {
"text": "## Developer III at Q2ebanking \n [Q2](https://www.q2ebanking.com/) provides a banking platform that interfaces personal and professional banking needs into a single tool. They then offer this as a customizable software as a service to banks and credit unions big or small. Community banks who would have otherwise had to outsource or hire a team to build a platform with potential security holes and poor usability are a thing of the past. \n\n ![Mobile banking software](./assets/finx1.jpg) \n\n Built **Ember.js** & **Vue.js** powered banking software used by tens of millions worldwide. _Mentored_ new hires, reforged **automation testing** standards, improved A11y. \n\n Gave company-wide internal presentations around new initiatives, features and development strategies. Co-organized an internal developer convention. \n\n ![Desktop banking software](./assets/finx2.jpg) \n\n Lead an innovative [HTML5 Web Components project](https://wrotenwrites.com/web-components/) to achieve ambitious cross-team goals."
}
}

View file

@ -1,22 +0,0 @@
{
"name": "Austin Give Camp",
"description": "Pro-bono web dev for good.",
"updatedAt": "2016-10-04",
"organization": "Austin Give Camp",
"url": "https://www.austingivecamp.org/",
"pageType": "volunteer",
"repositoryTopics": {
"edges": [
{
"node": {
"topic": {
"name": "volunteering"
}
}
}
]
},
"readme": {
"text": "## The SEED \n ### Adult & Family Learning Community \n Through analytics it was apparent very few could find out how to sign up for classes on learning English - an all English website and the page being burried through subnavs was the likely culprit. We user tested some updated designs where a non-native speaker could jump right to a Spanish page on how to sign up for classes first. \n\n ![The Seed Volunteers](./assets/theseed1.jpg) \n\n We then improved **internationalization** for the rest of the website to support all the user personas we had discovered: _The Student, The Donor, and The Volunteer_. Next up was improving ways people can get involved either through their time or their dollar through a better workflow and cleaned up content. \n\n ![The Seed Wireframes](./assets/theseed2.png) \n\n Small tweaks made a world of difference for these users. Even ensuring the site ran on **HTTPS significantly raised the confidence of a potential donor**. I just about cried tears of happiness when the thank you letters came in from the group for impact we made on their group and org. \n\n ![Thank you letters](./assets/theseed3.png)"
}
}

View file

@ -1,22 +0,0 @@
{
"name": "Patient Education",
"description": "Empowering doctors to educate through tech.",
"updatedAt": "2015-12-30T00:00:00Z",
"organization": "Rendia",
"url": "https://get.rendia.com/",
"pageType": "work-history",
"repositoryTopics": {
"edges": [
{
"node": {
"topic": {
"name": "work history"
}
}
}
]
},
"readme": {
"text": "## Senior Web Engineer at Rendia \n Patient education can be difficult. Plastic eyeballs as a teaching tool is a thing of the past. Modern media and technology can help solve this problem. \n\n ![Flythrough of the human eye](./assets/patienteducation1.gif) \n\n Formerly known as Eyemaginations, the company [Rendia](https://rendia.com/) offers high quality animations to doctors to communicate complex medical topics to their patients and their families. \n\n ![App Design](./assets/patienteducation2.jpg) \n\n Launched two **Ember.js**, **HTML Video** & **Canvas** powered enterprise scale apps now educating thousands of patients nationwide. _Lead UX design_ initiatives, _tech stack decisions_ and technical _project management_. \n\n Doctors can build playlists of content, upload their own images/videos, and then share their creations with patients via email and by embedding them directly on their practice website. Or they can play this content right in their practice while taking advantage of onscreen drawing features with a mouse or touch device. [The media player](https://share.rendia.com/theater/5276fa67-49cb-48f8-40da-45b94cd34364) offers content protection, and patients may choose between multiple languages, closed captions, fullscreen, and more. \n\n [![Media Player Preview](./assets/patienteducation3.png)](https://share.rendia.com/theater/5276fa67-49cb-48f8-40da-45b94cd34364)"
}
}

View file

@ -1,27 +0,0 @@
const axios = require('axios');
module.exports = async query => {
let githubApiToken = process.env.GITHUB_API_TOKEN;
if (!githubApiToken) {
console.error('No process env GITHUB_API_TOKEN found.');
return;
}
let axiosGithubGraphql = axios.create({
baseURL: 'https://api.github.com/graphql',
headers: {
Authorization: `bearer ${githubApiToken}`
},
});
try {
const result = await axiosGithubGraphql({
url: '',
method: 'post',
data: {
query,
},
});
return result.data;
} catch (err) {
console.log(err);
}
};

View file

@ -1,28 +0,0 @@
module.exports = `{
viewer {
pinnedRepositories(last: 6) {
edges {
node {
name
description
url
updatedAt
repositoryTopics(last: 5) {
edges {
node {
topic {
name
}
}
}
}
readme: object(expression: "master:README.md") {
... on Blob {
text
}
}
}
}
}
}
}`;

View file

@ -1,39 +0,0 @@
const Handlebars = require('handlebars');
const { readFile, readdir } = require('fs-extra');
const { join, basename } = require('path');
const registerPartials = async () => {
try {
let results = await readdir('./src/templates/partials')
let resultsPromises = results.map(async filename => {
let filePath = join('./src/templates/partials', filename);
let partialName = basename(filename, '.hbs');
let partialContents = await readFile(filePath);
partialContents = partialContents.toString();
Handlebars.registerPartial(partialName, partialContents);
});
return Promise.all(resultsPromises);
} catch(error) {
console.error('Could not read partials in ./src/templates/partials/', error);
return;
}
}
const getTemplate = async filename => {
let template;
try {
template = await readFile(`./src/templates/${filename}.hbs`);
template = template.toString();
} catch(error) {
console.error('Could not fetch template', filename, error);
return;
}
return Handlebars.compile(template);
};
module.exports = {
registerPartials,
getTemplate,
};

View file

@ -1,72 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>Wroten - Portfolio</title>
<link href="./assets/stylesheet.css" rel="stylesheet" type="text/css">
<link href="https://fonts.googleapis.com/css?family=Slabo+27px|Source+Code+Pro|Source+Sans+Pro:300" rel="stylesheet">
<meta charset="UTF-8">
<meta name="author" content="Jo Wroten">
<meta name="description" content="Web engineer realizing the best tools to communicate valuable information to the people who need it.">
<meta name="keywords" content="developer,designer,engineer,web,portfolio">
<meta name="viewport" content="width=device-width; height=device-height; maximum-scale=1.4; initial-scale=1.0; user-scalable=yes">
</head>
<body class="index">
<header class="index-header -container -pad-h -pad-v">
<!--<a href="/" class="index-menulink">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<use xlink:href="./assets/spritesheet.svg#menu" />
</svg>
</a>-->
<a href="#" class="about-link" onclick="document.getElementById('about').classList.toggle('open')">
<img class="about-link-image" src="./assets/avatar-small.png" alt="About Jo Wroten" />
</a>
</header>
<div class="popup" id="about">
{{> about}}
</div>
<main class="index-top -container -pad-h">
<h1 class="intro">
Canine pretending to be a <em>web engineer</em>
</h1>
<div class="index-top-info">
<h2 class="name -mar-no">
<em>Jo Wroten</em>
</h2>
<div>
<a href="./assets/resume.pdf">
<em>
<svg class="index-interiorlink-icon" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<use xlink:href="./assets/spritesheet.svg#resume" />
</svg>
<span class="-underline">Resume</span>
</em>
</a>
</div>
</div>
</main>
<ol class="index-interiorlinks -container -pad-h">
{{#each this}}
<li class="index-interiorlink-wrapper">
<a class="index-interiorlink -{{this.pageType}}" href="./{{this.name}}.html">
<h3 class="-mar-no">
<svg class="index-interiorlink-icon" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<use xlink:href="./assets/spritesheet.svg#{{this.pageType}}" />
</svg>
<span class="-underline">{{this.name}}</span>
</h3>
<p class="index-interiorlink-description -mar-no">{{this.description}}</p>
<ul class="tags">
{{#each this.repositoryTopics.edges}}
<li class="tag">{{this.node.topic.name}}
{{/each}}
</ul>
</a>
</li>
{{/each}}
</ol>
{{> footer}}
</body>
</html>

View file

@ -1,73 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>Wroten - {{name}}</title>
<link href="./assets/stylesheet.css" rel="stylesheet" type="text/css">
<link href="./assets/highlightjs-dracula.css" rel="stylesheet" type="text/css">
<link href="https://fonts.googleapis.com/css?family=Slabo+27px|Source+Code+Pro|Source+Sans+Pro:300" rel="stylesheet">
<meta charset="UTF-8">
<meta name="author" content="Jo Wroten">
<meta name="description" content="Web engineer realizing the best tools to communicate valuable information to the people who need it.">
<meta name="keywords" content="developer,designer,engineer,web,portfolio">
<meta name="viewport" content="width=device-width; height=device-height; maximum-scale=1.4; initial-scale=1.0; user-scalable=yes">
</head>
<body class="interior -{{pageType}}">
<header class="interior-header">
<div class="interior-topbar -container -pad-h -pad-v">
<a href="/">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<use xlink:href="./assets/spritesheet.svg#back" />
</svg>
</a>
<a href="#" class="about-link" onclick="document.getElementById('about').classList.toggle('open')">
<img class="about-link-image" src="./assets/avatar-small.png" alt="About Jo Wroten" />
</a>
</div>
<div class="interior-headline -{{pageType}} -pad-h -pad-v">
<h1 class="-container">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<use xlink:href="./assets/spritesheet.svg#{{pageType}}" />
</svg>
{{name}}
</h1>
</div>
</header>
<div class="popup" id="about">
{{> about}}
</div>
<main class="interior-content -container -pad-h -pad-v">
<article>
<header class="-clearfix">
<h2 class="interior-description">
{{description}}
</h2>
<div class="interior-info">
<ul class="tags interior-tags">
{{#each repositoryTopics.edges}}
<li class="-left"><span class="tag"><!--<a href="#" class="tag">-->{{this.node.topic.name}}<!--</a>--></span>
{{/each}}
</ul>
<div class="interior-link">
<a href={{url}}>
{{#if organization}}
{{organization}}
{{else}}
Github Repo
{{/if}}
</a>
</div>
</div>
</header>
{{{readme.html}}}
</article>
</main>
{{> footer}}
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
</body>
</html>

View file

@ -1,44 +0,0 @@
<div class="-container">
<a href="#" class="about-close" onclick="document.getElementById('about').classList.remove('open')">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<use xlink:href="./assets/spritesheet.svg#close" />
</svg>
</a>
<img class="about-image" src="./assets/avatar-large.png" alt="About Jo Wroten" />
<ul class="about-links">
<li>
<a href="mailto:jo@wroten.me">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<use xlink:href="./assets/spritesheet.svg#email" />
</svg>
<span class="-underline">Jo@Wroten.me</span>
</a>
</li>
<li>
<a href="./assets/resume.pdf">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<use xlink:href="./assets/spritesheet.svg#resume" />
</svg>
<span class="-underline">Resume</span>
</a>
</li>
<li>
<a href="https://gaiety.life/">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<use xlink:href="./assets/spritesheet.svg#writing" />
</svg>
<span class="-underline">Life (Blog)</span>
</a>
</li>
<li>
<a href="https://gaiety.gallery/">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<use xlink:href="./assets/spritesheet.svg#art" />
</svg>
<span class="-underline">Art</span>
</a>
</li>
</ul>
</div>

View file

@ -1,5 +0,0 @@
<footer class="footer -container -pad-h">
Portfolio designed and coded by Jo Wroten |
<a href="mailto:jo@wroten.me">jo@wroten.me</a> |
<a href="https://github.com/sharpshark28/portfolio">Project Repo</a>
</footer>