diff --git a/README.md b/README.md
index 38f76f8..61e2dcd 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,41 @@
-# www
-My Website
+# My Website
+
+Custom website rather than using WordPress or anything else that handles the code for you.
+
+Rather than using apache or nginx just using Node.js to serve an HTML API. Gives more control.
+
+Use HTML and PHP files for the content because it sounds fun and I like challenges.
+
+Basically a "page" is just a program that echo's HTML content for the API.
+
+Will likely play with some pages being Bash and other fun things.
+
+All content is formatted so that the page source is readible.
+
+# How To Run
+
+The install script is currently only set up for apt, and the package names only tested on Ubuntu.
+
+`git clone https://github.com/Hyperling/www www`
+
+`cd www`
+
+`./run.sh`
+
+Then in a web browser, navigate to `your_machines_ip_address:8080`.
+
+## TODO
+
+Add New Content
+- HEALTH (My Priorities Sheet)
+ - How to host files? Put them in reverse-proxy's files.hyperling.com site?
+- JOURNEY
+
+## Inspiration
+
+- [https://liquorix.net/]
+ - The linux-zen kernel, a really great one if you're running FOSS OS's!
+- [https://cahlen.org/]
+ - Also has really interesting and important content, it is highly recommended.
+- [https://merkinvineyardsosteria.com/]
+ - A winery website for MJ Keenan.
diff --git a/main.js b/main.js
new file mode 100755
index 0000000..37bc194
--- /dev/null
+++ b/main.js
@@ -0,0 +1,196 @@
+#!/usr/bin/node
+'use strict';
+/*
+ 2022-09-14 Hyperling
+ Coding my own website rather than using WordPress or anything bloaty.
+*/
+
+//// Libraries ////
+
+let express = require('express');
+let app = express();
+
+const execSync = require('child_process').execSync;
+
+const fs = require('fs');
+
+//// Global Variables ////
+
+const DEBUG = false;
+
+const app_name = "hyperling.com";
+
+let pages = [];
+const pages_dir = "./pages/";
+const file_types = ["php", "sh"];
+
+let ports = [];
+ports.push(8080);
+
+//// Functions ////
+
+/* Code exists inside a main function so that we may use async/await.
+*/
+async function main() {
+ console.log("...Starting Main...");
+
+ // Getting dates in Node.js is awful, just use Linux.
+ const start_datetime = "" + await execSync('date "+%Y-%m-%dT%H:%M:%S%:z"');
+ const start_datetime_trimmed = start_datetime.trim();
+
+ console.log("Set app to return HTML documents.");
+ app.use(function (req, res, next) {
+ res.contentType('text/html');
+ next();
+ });
+
+ /* Loop through all file in the pages subdirectory and add the allowed
+ // file types into the pages array for automatic router creation.
+ */
+ console.log("...Starting Main...");
+ let ls = await fs.promises.readdir(pages_dir);
+ if (DEBUG) console.log("DEBUG: Results of ls, ", ls);
+ for (let file of ls) {
+ let file_test = file.split(".");
+ let file_name = file_test[0];
+ let file_type = file_test[file_test.length - 1];
+ if (file_types.includes(file_type)) {
+ if (DEBUG) console.log("DEBUG: Hooray!", file, "is being added.");
+ pages[file_name] = pages_dir + file;
+ console.log(" * Added page", file);
+ } else {
+ if (DEBUG) console.log("DEBUG: ", file, "is not an approved type, skipping.");
+ }
+ }
+ console.log(" * Pages loaded: ", pages);
+ //return; // Stop execution FORTESTING
+
+ /* Create both an XML and HTML sitemap based on these entries. XML is used for
+ // bots like SEO scrapers. HTML will be for human users looking for a list of
+ // all pages. Some are not in the menu. Generated an example XML sitemap at
+ // www.xml-sitemaps.com then stripped it apart and made it dynamic.
+ */
+ let sitemap_xml = `
+
+
+ Web Pages (Alphabetical)
+
+ `;
+
+ console.log("...Adding Routes...");
+ let router = express.Router();
+
+ /* AUTOMATIC METHOD BASED ON OBJECT/ARRAY OF WEB SCRIPTS
+ // Creates routes with the URL of the key and location of the value.
+ */
+ for (let key in pages) {
+ console.log(" * Creating router for", key);
+ router.get("/" + key, function (req,res) {
+ console.log(key, "fulfilling request to", req.socket.remoteAddress, "asking for", req.url)
+ res.send("" + execSync(pages[key]));
+ });
+
+ /* Append the page to the sitemap variables.
+ */
+ console.log(" * * Adding to sitemap.xml");
+ sitemap_xml = sitemap_xml + `
+
+ Hi there! My name is Chad, I am the primary content creator behind the + Hyperling and HyperVegan brands. Thank you for your interest! +
++ My hobbies go further than just coding and video making. I am big into + health and believe it is humanity's most important asset. I was fortunate + to have time off school/work/hobbies in my early 20's was able to lock + in a great lifestyle after a life of chronic sickness. See more below in + My Health Protocol, + it also includes a link to the full history. +
++ I am also an avid gardener, focusing on the principles of nature-based + permaculture in order to grow fruits and vegetables, like in a Food + Forest system. This comes with other outdoor interests such as hiking, + camping, backpacking, foraging, and traveling. +
+ ++ As of 2022 I reside in the US state of Indiana and am working to move + to the southwest for the following reasons: +
++ The search will begin in Arizona. Colorado and Mexico will likely + be explored. New Mexico and other locations will be visited as well. +
++ Public inquries can be made on my Odysee channel's discussion board. +
+ ++ For private matters, my email address may be used, but there is no + guarantee of timely response. If I do not know of you then please be + sure to form the email in a way that does not look like spam. +
+