dynamically generate linux in ejs

This commit is contained in:
Raven Scott 2024-09-26 01:51:44 -04:00
parent 59f866100a
commit 9ec9374ea2
5 changed files with 41 additions and 41 deletions

20
app.js
View File

@ -106,7 +106,7 @@ app.get('/', (req, res) => {
const { blogPosts, totalPages } = getAllBlogPosts(page, postsPerPage, searchQuery); const { blogPosts, totalPages } = getAllBlogPosts(page, postsPerPage, searchQuery);
res.render('index', { res.render('index', {
title: 'Raven Scott Blog', title: `${process.env.OWNER_NAME} Blog`,
blogPosts, blogPosts,
currentPage: page, currentPage: page,
totalPages, totalPages,
@ -116,12 +116,12 @@ app.get('/', (req, res) => {
// About Route // About Route
app.get('/about', (req, res) => { app.get('/about', (req, res) => {
res.render('about', { title: 'About Raven Scott' }); res.render('about', { title: `About ${process.env.OWNER_NAME}` });
}); });
// Display the Request a Quote form // Display the Request a Quote form
app.get('/contact', (req, res) => { app.get('/contact', (req, res) => {
res.render('contact', { title: 'Contact Raven Scott', msg: undefined }); res.render('contact', { title: `Contact ${process.env.OWNER_NAME}`, msg: undefined });
}); });
// Handle contact form submission // Handle contact form submission
@ -129,7 +129,7 @@ app.post('/contact', async (req, res) => {
const { name, email, subject, message, 'g-recaptcha-response': captchaToken } = req.body; const { name, email, subject, message, 'g-recaptcha-response': captchaToken } = req.body;
if (!name || !email || !subject || !message) { if (!name || !email || !subject || !message) {
return res.render('contact', { title: 'Contact Raven Scott', msg: 'All fields are required.' }); return res.render('contact', { title: `Contact ${process.env.OWNER_NAME}`, msg: 'All fields are required.' });
} }
const captchaSecret = process.env.CAPTCHA_SECRET_KEY; const captchaSecret = process.env.CAPTCHA_SECRET_KEY;
@ -138,7 +138,7 @@ app.post('/contact', async (req, res) => {
try { try {
const captchaResponse = await axios.post(captchaVerifyUrl); const captchaResponse = await axios.post(captchaVerifyUrl);
if (!captchaResponse.data.success) { if (!captchaResponse.data.success) {
return res.render('contact', { title: 'Contact Raven Scott', msg: 'Captcha verification failed. Please try again.' }); return res.render('contact', { title: `Contact ${process.env.OWNER_NAME}`, msg: 'Captcha verification failed. Please try again.' });
} }
const output = ` const output = `
@ -173,12 +173,12 @@ app.post('/contact', async (req, res) => {
transporter.sendMail(mailOptions, (error, info) => { transporter.sendMail(mailOptions, (error, info) => {
if (error) { if (error) {
return res.render('contact', { title: 'Contact Raven Scott', msg: 'An error occurred. Please try again.' }); return res.render('contact', { title: `Contact ${process.env.OWNER_NAME}`, msg: 'An error occurred. Please try again.' });
} }
return res.render('contact', { title: 'Contact Raven Scott', msg: 'Your message has been sent successfully!' }); return res.render('contact', { title: `Contact ${process.env.OWNER_NAME}`, msg: 'Your message has been sent successfully!' });
}); });
} catch (error) { } catch (error) {
return res.render('contact', { title: 'Contact Raven Scott', msg: 'An error occurred while verifying CAPTCHA. Please try again.' }); return res.render('contact', { title: `Contact ${process.env.OWNER_NAME}`, msg: 'An error occurred while verifying CAPTCHA. Please try again.' });
} }
}); });
@ -266,9 +266,9 @@ app.get('/rss', (req, res) => {
}); });
let rssFeed = `<?xml version="1.0" encoding="UTF-8" ?>\n<rss version="2.0">\n<channel>\n`; let rssFeed = `<?xml version="1.0" encoding="UTF-8" ?>\n<rss version="2.0">\n<channel>\n`;
rssFeed += `<title>Raven Scott Blog</title>\n`; rssFeed += `<title>${process.env.OWNER_NAME} Blog</title>\n`;
rssFeed += `<link>https://${hostname}</link>\n`; rssFeed += `<link>https://${hostname}</link>\n`;
rssFeed += `<description>This is the RSS feed for Raven Scott's blog.</description>\n`; rssFeed += `<description>This is the RSS feed for ${process.env.OWNER_NAME}'s blog.</description>\n`;
blogFiles.forEach(file => { blogFiles.forEach(file => {
const title = file.replace('.md', ''); const title = file.replace('.md', '');

View File

@ -5,13 +5,13 @@
<!-- Meta and Title --> <!-- Meta and Title -->
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>About Me - Raven Scott</title> <title><%= title %> | <%= process.env.OWNER_NAME %> Blog</title>
<!-- Bootstrap CSS --> <!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css">
<!-- Font Awesome CSS for Icons --> <!-- Font Awesome CSS for Icons -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
<!-- Custom CSS --> <!-- Custom CSS -->
<link rel="stylesheet" href="https://raven-scott.fyi/css/styles.css"> <link rel="stylesheet" href="<%= process.env.HOST_URL %>/css/styles.css">
<style> <style>
/* Custom styles for a more professional look */ /* Custom styles for a more professional look */
body { body {
@ -86,20 +86,20 @@
<!-- Navigation Bar --> <!-- Navigation Bar -->
<nav class="navbar navbar-expand-lg navbar-dark"> <nav class="navbar navbar-expand-lg navbar-dark">
<div class="container-fluid"> <div class="container-fluid">
<a class="navbar-brand" href="https://raven-scott.fyi">raven-scott.fyi</a> <a class="navbar-brand" href="<%= process.env.HOST_URL %>">raven-scott.fyi</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span> <span class="navbar-toggler-icon"></span>
</button> </button>
<div class="collapse navbar-collapse" id="navbarNav"> <div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ms-auto"> <ul class="navbar-nav ms-auto">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link active" href="https://raven-scott.fyi">Home</a> <a class="nav-link active" href="<%= process.env.HOST_URL %>">Home</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="https://raven-scott.fyi/about">About Me</a> <a class="nav-link" href="<%= process.env.HOST_URL %>/about">About Me</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="https://raven-scott.fyi/contact">Contact</a> <a class="nav-link" href="<%= process.env.HOST_URL %>/contact">Contact</a>
</li> </li>
</ul> </ul>
</div> </div>
@ -137,8 +137,8 @@
<a href="/" class="text-white text-decoration-none me-3">Home</a> <a href="/" class="text-white text-decoration-none me-3">Home</a>
<a href="/about" class="text-white text-decoration-none me-3">About</a> <a href="/about" class="text-white text-decoration-none me-3">About</a>
<a href="/contact" class="text-white text-decoration-none me-3">Contact</a> <a href="/contact" class="text-white text-decoration-none me-3">Contact</a>
<a href="https://raven-scott.fyi/sitemap.xml" class="text-white text-decoration-none me-3">Sitemap</a> <a href="<%= process.env.HOST_URL %>/sitemap.xml" class="text-white text-decoration-none me-3">Sitemap</a>
<a href="https://raven-scott.fyi/rss" class="text-white text-decoration-none">RSS Feed</a> <a href="<%= process.env.HOST_URL %>/rss" class="text-white text-decoration-none">RSS Feed</a>
</p> </p>
<p class="mb-0">&copy; 2024 Raven Scott. All rights reserved.</p> <p class="mb-0">&copy; 2024 Raven Scott. All rights reserved.</p>
</div> </div>

View File

@ -3,11 +3,11 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><%= title %></title> <title><%= title %> | <%= process.env.OWNER_NAME %> Blog</title>
<!-- Stylesheets --> <!-- Stylesheets -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
<link rel="stylesheet" href="https://raven-scott.fyi/css/styles.css"> <link rel="stylesheet" href="<%= process.env.HOST_URL %>/css/styles.css">
<!-- Highlight.js CSS for Syntax Highlighting --> <!-- Highlight.js CSS for Syntax Highlighting -->
<!-- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/default.min.css"> --> <!-- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/default.min.css"> -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/styles/atom-one-dark.min.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/styles/atom-one-dark.min.css">
@ -18,20 +18,20 @@
<!-- Navbar --> <!-- Navbar -->
<nav class="navbar navbar-expand-lg navbar-dark"> <nav class="navbar navbar-expand-lg navbar-dark">
<div class="container-fluid"> <div class="container-fluid">
<a class="navbar-brand" href="https://raven-scott.fyi">raven-scott.fyi</a> <a class="navbar-brand" href="<%= process.env.HOST_URL %>">raven-scott.fyi</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span> <span class="navbar-toggler-icon"></span>
</button> </button>
<div class="collapse navbar-collapse" id="navbarNav"> <div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ms-auto"> <ul class="navbar-nav ms-auto">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link active" href="https://raven-scott.fyi">Home</a> <a class="nav-link active" href="<%= process.env.HOST_URL %>">Home</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="https://raven-scott.fyi/about">About Me</a> <a class="nav-link" href="<%= process.env.HOST_URL %>/about">About Me</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="https://raven-scott.fyi/contact">Contact</a> <a class="nav-link" href="<%= process.env.HOST_URL %>/contact">Contact</a>
</li> </li>
</ul> </ul>
</div> </div>
@ -58,8 +58,8 @@
<a href="/" class="text-white text-decoration-none me-3">Home</a> <a href="/" class="text-white text-decoration-none me-3">Home</a>
<a href="/about" class="text-white text-decoration-none me-3">About</a> <a href="/about" class="text-white text-decoration-none me-3">About</a>
<a href="/contact" class="text-white text-decoration-none me-3">Contact</a> <a href="/contact" class="text-white text-decoration-none me-3">Contact</a>
<a href="https://raven-scott.fyi/sitemap.xml" class="text-white text-decoration-none me-3">Sitemap</a> <a href="<%= process.env.HOST_URL %>/sitemap.xml" class="text-white text-decoration-none me-3">Sitemap</a>
<a href="https://raven-scott.fyi/rss" class="text-white text-decoration-none">RSS Feed</a> <a href="<%= process.env.HOST_URL %>/rss" class="text-white text-decoration-none">RSS Feed</a>
</p> </p>
<p class="mb-0">&copy; 2024 Raven Scott. All rights reserved.</p> <p class="mb-0">&copy; 2024 Raven Scott. All rights reserved.</p>
</div> </div>

View File

@ -5,13 +5,13 @@
<!-- Meta and Title --> <!-- Meta and Title -->
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Contact Me - Raven Scott</title> <title>Contact Me - <%= process.env.OWNER_NAME %></title>
<!-- Bootstrap CSS --> <!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css">
<!-- Font Awesome CSS for Icons --> <!-- Font Awesome CSS for Icons -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
<!-- Custom CSS --> <!-- Custom CSS -->
<link rel="stylesheet" href="https://raven-scott.fyi/css/styles.css"> <link rel="stylesheet" href="<%= process.env.HOST_URL %>/css/styles.css">
<!-- reCAPTCHA API --> <!-- reCAPTCHA API -->
<script src="https://www.google.com/recaptcha/api.js" async defer></script> <script src="https://www.google.com/recaptcha/api.js" async defer></script>
</head> </head>
@ -21,20 +21,20 @@
<!-- Navigation Bar --> <!-- Navigation Bar -->
<nav class="navbar navbar-expand-lg navbar-dark"> <nav class="navbar navbar-expand-lg navbar-dark">
<div class="container-fluid"> <div class="container-fluid">
<a class="navbar-brand" href="https://raven-scott.fyi">raven-scott.fyi</a> <a class="navbar-brand" href="<%= process.env.HOST_URL %>">raven-scott.fyi</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span> <span class="navbar-toggler-icon"></span>
</button> </button>
<div class="collapse navbar-collapse" id="navbarNav"> <div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ms-auto"> <ul class="navbar-nav ms-auto">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link active" href="https://raven-scott.fyi">Home</a> <a class="nav-link active" href="<%= process.env.HOST_URL %>">Home</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="https://raven-scott.fyi/about">About Me</a> <a class="nav-link" href="<%= process.env.HOST_URL %>/about">About Me</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="https://raven-scott.fyi/contact">Contact</a> <a class="nav-link" href="<%= process.env.HOST_URL %>/contact">Contact</a>
</li> </li>
</ul> </ul>
</div> </div>

View File

@ -5,26 +5,26 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><%= title %></title> <title><%= title %></title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="https://raven-scott.fyi/css/styles.css"> <link rel="stylesheet" href="<%= process.env.HOST_URL %>/css/styles.css">
</head> </head>
<body> <body>
<!-- Navbar --> <!-- Navbar -->
<nav class="navbar navbar-expand-lg navbar-dark"> <nav class="navbar navbar-expand-lg navbar-dark">
<div class="container-fluid"> <div class="container-fluid">
<a class="navbar-brand" href="https://raven-scott.fyi">raven-scott.fyi</a> <a class="navbar-brand" href="<%= process.env.HOST_URL %>">raven-scott.fyi</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span> <span class="navbar-toggler-icon"></span>
</button> </button>
<div class="collapse navbar-collapse" id="navbarNav"> <div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ms-auto"> <ul class="navbar-nav ms-auto">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link active" href="https://raven-scott.fyi">Home</a> <a class="nav-link active" href="<%= process.env.HOST_URL %>">Home</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="https://raven-scott.fyi/about">About Me</a> <a class="nav-link" href="<%= process.env.HOST_URL %>/about">About Me</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="https://raven-scott.fyi/contact">Contact</a> <a class="nav-link" href="<%= process.env.HOST_URL %>/contact">Contact</a>
</li> </li>
</ul> </ul>
</div> </div>
@ -33,9 +33,9 @@
<header class="py-5"> <header class="py-5">
<div class="container text-center"> <div class="container text-center">
<h1>Hello, my name is Raven Scott</h1> <h1>Hello, my name is <%= process.env.OWNER_NAME %></h1>
<p class="lead">Where Technology Meets Creativity: Insights from a Linux Enthusiast</p> <p class="lead">Where Technology Meets Creativity: Insights from a Linux Enthusiast</p>
<form action="/" method="get" class="mb-4"> <form action="/" method="get" class="mb-4">
<div class="input-group"> <div class="input-group">
<input type="text" name="search" class="form-control" placeholder="Search blog posts..." value="<%= typeof searchQuery !== 'undefined' ? searchQuery : '' %>"> <input type="text" name="search" class="form-control" placeholder="Search blog posts..." value="<%= typeof searchQuery !== 'undefined' ? searchQuery : '' %>">
<button type="submit" class="btn btn-primary">Search</button> <button type="submit" class="btn btn-primary">Search</button>
@ -100,8 +100,8 @@
<a href="/" class="text-white text-decoration-none me-3">Home</a> <a href="/" class="text-white text-decoration-none me-3">Home</a>
<a href="/about" class="text-white text-decoration-none me-3">About</a> <a href="/about" class="text-white text-decoration-none me-3">About</a>
<a href="/contact" class="text-white text-decoration-none me-3">Contact</a> <a href="/contact" class="text-white text-decoration-none me-3">Contact</a>
<a href="https://raven-scott.fyi/sitemap.xml" class="text-white text-decoration-none me-3">Sitemap</a> <a href="<%= process.env.HOST_URL %>/sitemap.xml" class="text-white text-decoration-none me-3">Sitemap</a>
<a href="https://raven-scott.fyi/rss" class="text-white text-decoration-none">RSS Feed</a> <a href="<%= process.env.HOST_URL %>/rss" class="text-white text-decoration-none">RSS Feed</a>
</p> </p>
<p class="mb-0">&copy; 2024 Raven Scott. All rights reserved.</p> <p class="mb-0">&copy; 2024 Raven Scott. All rights reserved.</p>
</div> </div>