aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Powers <mark@marks.kitchen>2021-09-26 21:53:40 -0500
committerMark Powers <mark@marks.kitchen>2021-09-26 21:53:40 -0500
commitbbab3cf95b85b0314e9f47328bb2a38c540a5345 (patch)
tree2559d699b0106b913697dc0543e1fe9fee055189
parentdc98fdf6664645b6356b71a60edca9a07f21dff6 (diff)
Add about me page
-rw-r--r--package-lock.json75
-rw-r--r--package.json7
-rw-r--r--src/css/styles.css4
-rw-r--r--src/server.js6
-rw-r--r--src/templates.js1
-rw-r--r--src/templates/about.html65
-rw-r--r--src/templates/navigation.html1
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">&lt;</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>