diff options
author | Mark Powers <mark@marks.kitchen> | 2021-09-26 21:53:40 -0500 |
---|---|---|
committer | Mark Powers <mark@marks.kitchen> | 2021-09-26 21:53:40 -0500 |
commit | bbab3cf95b85b0314e9f47328bb2a38c540a5345 (patch) | |
tree | 2559d699b0106b913697dc0543e1fe9fee055189 | |
parent | dc98fdf6664645b6356b71a60edca9a07f21dff6 (diff) |
Add about me page
-rw-r--r-- | package-lock.json | 75 | ||||
-rw-r--r-- | package.json | 7 | ||||
-rw-r--r-- | src/css/styles.css | 4 | ||||
-rw-r--r-- | src/server.js | 6 | ||||
-rw-r--r-- | src/templates.js | 1 | ||||
-rw-r--r-- | src/templates/about.html | 65 | ||||
-rw-r--r-- | src/templates/navigation.html | 1 |
7 files changed, 120 insertions, 39 deletions
diff --git a/package-lock.json b/package-lock.json index 795d2c9..4f39466 100644 --- a/package-lock.json +++ b/package-lock.json @@ -274,9 +274,9 @@ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, "denque": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz", - "integrity": "sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ==" + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", + "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==" }, "depd": { "version": "1.1.2", @@ -464,9 +464,9 @@ } }, "handlebars": { - "version": "4.7.6", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", - "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", "requires": { "minimist": "^1.2.5", "neo-async": "^2.6.0", @@ -634,9 +634,9 @@ } }, "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "lodash.includes": { "version": "4.3.0", @@ -679,17 +679,17 @@ "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" }, "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "requires": { - "yallist": "^3.0.2" + "yallist": "^4.0.0" } }, "marked": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/marked/-/marked-1.1.1.tgz", - "integrity": "sha512-mJzT8D2yPxoPh7h0UXkB+dBj4FykPJ2OIfxAWeIHrvoHDkFxukV/29QxoFQoPM6RLEwhIFdJpmKBlqVM3s2ZIw==" + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-3.0.2.tgz", + "integrity": "sha512-TMJQQ79Z0e3rJYazY0tIoMsFzteUGw9fB3FD+gzuIT3zLuG9L9ckIvUfF51apdJkcqc208jJN2KbtPbOvXtbjA==" }, "media-typer": { "version": "0.3.0", @@ -771,26 +771,26 @@ } }, "mysql2": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-1.7.0.tgz", - "integrity": "sha512-xTWWQPjP5rcrceZQ7CSTKR/4XIDeH/cRkNH/uzvVGQ7W5c7EJ0dXeJUusk7OKhIoHj7uFKUxDVSCfLIl+jluog==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-2.3.0.tgz", + "integrity": "sha512-0t5Ivps5Tdy5YHk5NdKwQhe/4Qyn2pload+S+UooDBvsqngtzujG1BaTWBihQLfeKO3t3122/GtusBtmHEHqww==", "requires": { "denque": "^1.4.1", "generate-function": "^2.3.1", - "iconv-lite": "^0.5.0", + "iconv-lite": "^0.6.2", "long": "^4.0.0", - "lru-cache": "^5.1.1", + "lru-cache": "^6.0.0", "named-placeholders": "^1.1.2", "seq-queue": "^0.0.5", - "sqlstring": "^2.3.1" + "sqlstring": "^2.3.2" }, "dependencies": { "iconv-lite": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.0.tgz", - "integrity": "sha512-NnEhI9hIEKHOzJ4f697DMz9IQEXr/MMJ5w64vN2/4Ai+wRnvV7SBrL0KLoRlwaKVghOc7LQ5YkPLuX146b6Ydw==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" } } } @@ -829,6 +829,11 @@ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, + "nodemailer": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.6.3.tgz", + "integrity": "sha512-faZFufgTMrphYoDjvyVpbpJcYzwyFnbAMmQtj1lVBYAUSm3SOy2fIdd9+Mr4UxPosBa0JRw9bJoIwQn+nswiew==" + }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", @@ -1103,9 +1108,9 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "sqlstring": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz", - "integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A=" + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.2.tgz", + "integrity": "sha512-vF4ZbYdKS8OnoJAWBmMxCQDkiEBkGQYU7UZPtL8flbDRSNkhaXvRJ279ZtI6M+zDaQovVU4tuRgzK5fVhvFAhg==" }, "sshpk": { "version": "1.15.2", @@ -1207,9 +1212,9 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, "uglify-js": { - "version": "3.11.6", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.11.6.tgz", - "integrity": "sha512-oASI1FOJ7BBFkSCNDZ446EgkSuHkOZBuqRFrwXIKWCoXw8ZXQETooTQjkAcBS03Acab7ubCKsXnwuV2svy061g==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.1.tgz", + "integrity": "sha512-JhS3hmcVaXlp/xSo3PKY5R0JqKs5M3IV+exdLHW99qKvKivPO4Z8qbej6mte17SOPqAOVMjt/XGgWacnFSzM3g==", "optional": true }, "unpipe": { @@ -1284,9 +1289,9 @@ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } } } diff --git a/package.json b/package.json index a3d4527..6895964 100644 --- a/package.json +++ b/package.json @@ -14,12 +14,13 @@ "body-parser": "^1.19.0", "cookie-parser": "^1.4.4", "express": "^4.17.1", - "handlebars": "^4.7.6", + "handlebars": "^4.7.7", "jsonwebtoken": "^8.5.1", - "marked": "^1.1.1", + "marked": "^3.0.2", "minimist": ">=0.2.1", "multer": "^1.4.2", - "mysql2": "^1.7.0", + "mysql2": "^2.3.0", + "nodemailer": "^6.6.3", "request": "^2.88.0", "rss": "^1.2.2", "sequelize": "^5.21.4", diff --git a/src/css/styles.css b/src/css/styles.css index 4572569..b89a373 100644 --- a/src/css/styles.css +++ b/src/css/styles.css @@ -237,3 +237,7 @@ a.navigation:visited, a.navigation:link { float: right; } +dl > dt { + font-weight: bold; +} + diff --git a/src/server.js b/src/server.js index 4e109ad..b689ff5 100644 --- a/src/server.js +++ b/src/server.js @@ -100,6 +100,7 @@ async function sitemap(models) { "/work-square", "/misc", "/projects", + "/about", ] routes.forEach(item => { urlset.push(to_sitemap_xml(host, item, new Date().toISOString())) @@ -215,7 +216,6 @@ function setUpRoutes(models, jwtFunctions, database, templates) { server.get('/word-square', cache('5 minutes'), (req, res) => res.sendFile(__dirname + "/html/word-square.html")); server.get('/chess', cache('5 minutes'), (req, res) => res.sendFile(__dirname + "/html/chess.html")); server.get('/admin/chess', cache('5 minutes'), async (req, res, next) => res.sendFile(__dirname + "/html/chess.html")); - // server.get('/projects', (req, res) => res.sendFile(__dirname + "/html/projects.html")); server.get('/zines', cache('5 minutes'), (req, res) => res.sendFile(__dirname + "/public/zines.html")); server.use('/static', express.static(__dirname + '/public')) @@ -227,6 +227,10 @@ function setUpRoutes(models, jwtFunctions, database, templates) { let body = templates["projects"](); res.status(200).send(body) }) + server.get('/about', cache('5 minutes'), async (req, res) => { + let body = templates["about"](); + res.status(200).send(body) + }) server.get('/sitemap.xml', cache('1 day'), async (req, res) => { res.setHeader('Content-Type', 'text/xml') diff --git a/src/templates.js b/src/templates.js index 05f117a..5761be7 100644 --- a/src/templates.js +++ b/src/templates.js @@ -25,6 +25,7 @@ function setUpTemplates(){ loadTemplate(templates, "tags", path.join(__dirname, 'templates/tags.html')) loadTemplate(templates, "misc", path.join(__dirname, 'templates/misc.html')) loadTemplate(templates, "projects", path.join(__dirname, 'templates/projects.html')) + loadTemplate(templates, "about", path.join(__dirname, 'templates/about.html')) return templates } diff --git a/src/templates/about.html b/src/templates/about.html new file mode 100644 index 0000000..b3d504b --- /dev/null +++ b/src/templates/about.html @@ -0,0 +1,65 @@ +<!doctype html> +<html lang="en"> + +<head> + <title>Mark's Kitchen - About</title> + <link rel="stylesheet" type="text/css" href="/css/styles.css"> + <meta name="description" content="About Mark"> + {{> header}} +</head> + +<body> + <div> + <h1> + <a class="navigation" href="/" title="marks.kitchen"><</a> + About + </h1> + {{> navigation}} + <p> + Hello! I'm Mark Powers. This is my website. I started it back in + 2018 when I wanted to share my process of learning to bake bread. + Now it's mostly just a general blog, but also where I host a lot + of my <a href="/projects">projects</a>. + </p> + <p> + Here's a list of stuff about me: + </p> + <dl> + <dt>Occupation</dt> + <dd>Software engineer at <a href="https://www.chameleoncloud.org/">Chameleon Cloud</a></dd> + + <dt>Location</dt> + <dd>Chicagoland</dd> + + <dt>Almae Matres</dt> + <dd>Hope College, UW-Madison</dd> + + <dt>Source Code</dt> + <dd> + <a href="https://git.marks.kitchen/">Gitweb</a> + or + <a href="https://github.com/Mark-Powers/">GitHub</a> + </dd> + + <dt>Social</dt> + <dd><a href="https://fosstodon.org/@markp">markp</a></dd> + + <dt>Hobbies</dt> + <dd> + Programming, video games, reading, bicycling, woodworking, + chess, cooking, disc golf + </dd> + + <dt>Operating System<dt> + <dd>Regolith Linux</dd> + + <dt>Editor<dt> + <dd>vim</dd> + + <dt>Pets<dt> + <dd>One very fluffy black cat</dd> + </dl> + </div> +</body> + +</html> diff --git a/src/templates/navigation.html b/src/templates/navigation.html index b101bab..6213e87 100644 --- a/src/templates/navigation.html +++ b/src/templates/navigation.html @@ -1,5 +1,6 @@ <nav class="titlebar"> <a href="/" class="btn btn-primary">Home</a> + <a href="/about" class="btn btn-primary">About</a> <a href="/bread" class="btn btn-primary">Bread</a> <a href="/blog" class="btn btn-primary">Blog</a> <a href="https://games.marks.kitchen" class="btn btn-primary">Games</a> |