')
+def error(code):
+ error_definitions = {
+ 400: 'Bad Request',
+ 403: 'Forbidden',
+ 404: 'Page Not Found',
+ 418: 'I\'m a Teapot',
+ 500: 'Internal Server Error',
+ 503: 'Service Temporarily Unavailable',
+ 505: 'HTTP Version Not Supported'
+ }
+ error_desc = {
+ 400: 'Sorry, we didn\'t understand your request.',
+ 403: 'Sorry, you aren\'t allowed to view this page.',
+ 404: 'Sorry, that page doesn\'t exist.',
+ 418: 'I can\'t brew coffee as I am, in fact, a teapot.',
+ 500: 'Something went wrong on our end.',
+ 503: 'Our website is experiencing some issues and will be back shortly.',
+ 505: 'Your browser tried to use a HTTP version we don\'t support. Check it is up to date.'
+ }
+ errorText = f'''
+
+ {code}: {error_definitions.get(int(code))}
+ {error_desc.get(int(code))}
+ Click here to return to our homepage
+
+ '''
+ return render_template('error.html', post=errorText)
+
+@app.route('//')
+def category(category):
+ with open(path.join(md_directory, 'categories.json')) as categories_file:
+ categories = json.load(categories_file)
+
+ the_category = next((x for x in categories if x.get('id') == category), None)
+
+ if the_category is None:
+ return Response(status=404)
+
+ articles_to_return = sorted(
+ common.get_by_meta_key(
+ md_directory, 'category', category),
+ key=lambda d: d.metadata.get('date'),
+ reverse=True
+ )
+
+ return render_template('projects.html', articles=articles_to_return,
+ title=the_category['title'],
+ description=the_category['long_description'],
+ pageName=f'{the_category["title"]} -')
+
+@app.route('//')
+def article(category, article):
+ articles = [x for x in common.get_by_meta_key(md_directory, 'id', article) if x.metadata.get('category') == category]
+
+ if len(articles) == 0:
+ return Response(status=404)
+ if len(articles) > 1:
+ return Response(status=500)
+
+ the_article = articles[0]
+ return render_template('article.html', post=markdown(the_article.content), metadata=the_article.metadata,
+ pageName=f'{the_article.metadata["title"]} - {the_article.metadata["author"]} -')
+
+@app.route('/image/')
+def image(image):
+ return send_from_directory(path.join(md_directory, 'images'), image)
diff --git a/src/projects.wsgi b/src/projects.wsgi
new file mode 100644
index 0000000..2c855ac
--- /dev/null
+++ b/src/projects.wsgi
@@ -0,0 +1,6 @@
+#!/usr/bin/python3
+
+import sys
+sys.path.append('/var/www/jc')
+
+from main import application
diff --git a/src/requirements.txt b/src/requirements.txt
new file mode 100644
index 0000000..e2d8dd1
--- /dev/null
+++ b/src/requirements.txt
@@ -0,0 +1,5 @@
+flask>=2.2.3
+flask-markdown>=0.3
+markdown>=3.4.1
+beautifulsoup4>=4.11.1
+python-frontmatter>=1.1.0
diff --git a/src/fonts/fontawesome/css/all.min.css b/src/static/fonts/fontawesome/css/all.min.css
similarity index 100%
rename from src/fonts/fontawesome/css/all.min.css
rename to src/static/fonts/fontawesome/css/all.min.css
diff --git a/src/fonts/fontawesome/webfonts/fa-brands-400.ttf b/src/static/fonts/fontawesome/webfonts/fa-brands-400.ttf
similarity index 100%
rename from src/fonts/fontawesome/webfonts/fa-brands-400.ttf
rename to src/static/fonts/fontawesome/webfonts/fa-brands-400.ttf
diff --git a/src/fonts/fontawesome/webfonts/fa-brands-400.woff2 b/src/static/fonts/fontawesome/webfonts/fa-brands-400.woff2
similarity index 100%
rename from src/fonts/fontawesome/webfonts/fa-brands-400.woff2
rename to src/static/fonts/fontawesome/webfonts/fa-brands-400.woff2
diff --git a/src/fonts/fontawesome/webfonts/fa-regular-400.ttf b/src/static/fonts/fontawesome/webfonts/fa-regular-400.ttf
similarity index 100%
rename from src/fonts/fontawesome/webfonts/fa-regular-400.ttf
rename to src/static/fonts/fontawesome/webfonts/fa-regular-400.ttf
diff --git a/src/fonts/fontawesome/webfonts/fa-regular-400.woff2 b/src/static/fonts/fontawesome/webfonts/fa-regular-400.woff2
similarity index 100%
rename from src/fonts/fontawesome/webfonts/fa-regular-400.woff2
rename to src/static/fonts/fontawesome/webfonts/fa-regular-400.woff2
diff --git a/src/fonts/fontawesome/webfonts/fa-solid-900.ttf b/src/static/fonts/fontawesome/webfonts/fa-solid-900.ttf
similarity index 100%
rename from src/fonts/fontawesome/webfonts/fa-solid-900.ttf
rename to src/static/fonts/fontawesome/webfonts/fa-solid-900.ttf
diff --git a/src/fonts/fontawesome/webfonts/fa-solid-900.woff2 b/src/static/fonts/fontawesome/webfonts/fa-solid-900.woff2
similarity index 100%
rename from src/fonts/fontawesome/webfonts/fa-solid-900.woff2
rename to src/static/fonts/fontawesome/webfonts/fa-solid-900.woff2
diff --git a/src/fonts/fontawesome/webfonts/fa-v4compatibility.ttf b/src/static/fonts/fontawesome/webfonts/fa-v4compatibility.ttf
similarity index 100%
rename from src/fonts/fontawesome/webfonts/fa-v4compatibility.ttf
rename to src/static/fonts/fontawesome/webfonts/fa-v4compatibility.ttf
diff --git a/src/fonts/fontawesome/webfonts/fa-v4compatibility.woff2 b/src/static/fonts/fontawesome/webfonts/fa-v4compatibility.woff2
similarity index 100%
rename from src/fonts/fontawesome/webfonts/fa-v4compatibility.woff2
rename to src/static/fonts/fontawesome/webfonts/fa-v4compatibility.woff2
diff --git a/src/images/njr-code.png b/src/static/images/njr-code.png
similarity index 100%
rename from src/images/njr-code.png
rename to src/static/images/njr-code.png
diff --git a/src/images/topfuel_startline.jpg.jpeg b/src/static/images/topfuel_startline.jpg.jpeg
similarity index 100%
rename from src/images/topfuel_startline.jpg.jpeg
rename to src/static/images/topfuel_startline.jpg.jpeg
diff --git a/src/index.html b/src/static/index.html
similarity index 100%
rename from src/index.html
rename to src/static/index.html
diff --git a/src/style/desktop.css b/src/static/style/desktop.css
similarity index 100%
rename from src/style/desktop.css
rename to src/static/style/desktop.css
diff --git a/src/style/mobile.css b/src/static/style/mobile.css
similarity index 100%
rename from src/style/mobile.css
rename to src/static/style/mobile.css
diff --git a/src/templates/article.html b/src/templates/article.html
new file mode 100644
index 0000000..badd2e7
--- /dev/null
+++ b/src/templates/article.html
@@ -0,0 +1,2 @@
+{% include 'header.html' %}
+{% include 'footer.html' %}
\ No newline at end of file
diff --git a/src/templates/error.html b/src/templates/error.html
new file mode 100644
index 0000000..4d715f4
--- /dev/null
+++ b/src/templates/error.html
@@ -0,0 +1,5 @@
+{% include 'header.html' %}
+
+ {{ post | safe }}
+
+{% include 'footer.html' %}
\ No newline at end of file
diff --git a/src/templates/footer.html b/src/templates/footer.html
new file mode 100644
index 0000000..56cdd8e
--- /dev/null
+++ b/src/templates/footer.html
@@ -0,0 +1,5 @@
+
+