Cleared out for 2020
|
@ -1,7 +0,0 @@
|
|||
|
||||
# Joe Wroten's Portfolio
|
||||
|
||||
```bash
|
||||
export GITHUB_API_TOKEN="TOKEN"
|
||||
```
|
||||
|
42
index.js
|
@ -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
|
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
16
package.json
|
@ -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": {}
|
||||
}
|
Before Width: | Height: | Size: 67 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 174 KiB |
Before Width: | Height: | Size: 194 KiB |
Before Width: | Height: | Size: 332 KiB |
|
@ -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;
|
||||
}
|
Before Width: | Height: | Size: 1.6 MiB |
Before Width: | Height: | Size: 505 KiB |
Before Width: | Height: | Size: 896 KiB |
|
@ -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;
|
||||
}
|
||||
|
Before Width: | Height: | Size: 149 KiB |
Before Width: | Height: | Size: 469 KiB |
Before Width: | Height: | Size: 794 KiB |
|
@ -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);
|
||||
};
|
||||
|
|
@ -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,
|
||||
};
|
|
@ -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,
|
||||
};
|
||||
|
|
@ -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'));
|
||||
};
|
||||
|
|
@ -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 |
|
@ -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 |
|
@ -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 |
|
@ -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 |
|
@ -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 |
|
@ -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 |
|
@ -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 |
|
@ -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 |
|
@ -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 |
|
@ -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 |
|
@ -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  \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!\"."
|
||||
}
|
||||
}
|
|
@ -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  \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  \n\n Lead an innovative [HTML5 Web Components project](https://wrotenwrites.com/web-components/) to achieve ambitious cross-team goals."
|
||||
}
|
||||
}
|
|
@ -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  \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  \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 "
|
||||
}
|
||||
}
|
|
@ -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  \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  \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 [](https://share.rendia.com/theater/5276fa67-49cb-48f8-40da-45b94cd34364)"
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
};
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}`;
|
|
@ -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,
|
||||
};
|
||||
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|