From 7e49db5ddefe8c515b5f3931a5c701efaac33d91 Mon Sep 17 00:00:00 2001
From: David Luevano Alvarado <david@luevano.xyz>
Date: Fri, 16 Dec 2022 17:45:03 -0600
Subject: change structure for new pyssg version

---
 plt/art/index.html           | 60 ++++++++++++++++++++++++++++++++
 plt/art/page.html            | 76 +++++++++++++++++++++++++++++++++++++++++
 plt/art/page_list.html       | 22 ++++++++++++
 plt/art/page_list_entry.html |  5 +++
 plt/art/tag.html             | 54 +++++++++++++++++++++++++++++
 plt/base.html                | 38 +++++++++++++++++++++
 plt/blog/index.html          | 60 ++++++++++++++++++++++++++++++++
 plt/blog/page.html           | 81 ++++++++++++++++++++++++++++++++++++++++++++
 plt/blog/page_list.html      | 15 ++++++++
 plt/blog/tag.html            | 54 +++++++++++++++++++++++++++++
 plt/body/footer.html         | 33 ++++++++++++++++++
 plt/body/header.html         | 35 +++++++++++++++++++
 plt/highlightjs.html         |  9 +++++
 plt/page_nav.html            | 28 +++++++++++++++
 plt/root_page.html           | 52 ++++++++++++++++++++++++++++
 plt/rss.xml                  | 39 +++++++++++++++++++++
 plt/sitemap.xml              | 65 +++++++++++++++++++++++++++++++++++
 plt/tag_list.html            |  9 +++++
 18 files changed, 735 insertions(+)
 create mode 100644 plt/art/index.html
 create mode 100644 plt/art/page.html
 create mode 100644 plt/art/page_list.html
 create mode 100644 plt/art/page_list_entry.html
 create mode 100644 plt/art/tag.html
 create mode 100644 plt/base.html
 create mode 100644 plt/blog/index.html
 create mode 100644 plt/blog/page.html
 create mode 100644 plt/blog/page_list.html
 create mode 100644 plt/blog/tag.html
 create mode 100644 plt/body/footer.html
 create mode 100644 plt/body/header.html
 create mode 100644 plt/highlightjs.html
 create mode 100644 plt/page_nav.html
 create mode 100644 plt/root_page.html
 create mode 100644 plt/rss.xml
 create mode 100644 plt/sitemap.xml
 create mode 100644 plt/tag_list.html

(limited to 'plt')

diff --git a/plt/art/index.html b/plt/art/index.html
new file mode 100644
index 0000000..87c083d
--- /dev/null
+++ b/plt/art/index.html
@@ -0,0 +1,60 @@
+{%extends "base.html"%}
+
+{%block html_lang%}
+{{config['lang']}}
+{%endblock html_lang%}
+
+{%block head_title%}
+<title>Index -- {{config['title']}}</title>
+{%endblock head_title%}
+
+{%block head_description%}
+<meta name="description" content="{{config['description']}}"/>
+{%endblock head_description%}
+
+{%block head_rss%}
+<link rel="alternate" type="application/rss+xml" href="{{config['url']['main']}}/rss.xml" title="{{config['title']}} RSS">
+{%endblock head_rss%}
+
+{%block head_extra%}
+{%endblock head_extra%}
+
+{%block head_og%}
+  <meta property="og:title" content="Index -- {{config['title']}}"/>
+  <meta property="og:type" content="article"/>
+  <meta property="og:url" content="{{config['url']['main']}}/index.html"/>
+  <meta property="og:image" content="{{config['url']['static']}}/{{config['url']['default_image']}}"/>
+  <meta property="og:description" content="{{config['description']}}"/>
+  <meta property="og:locale" content="{{config['lang']}}"/>
+  <meta property="og:site_name" content="{{config['title']}}"/>
+{%endblock head_og%}
+
+{%block body_header%}
+{%import 'body/header.html' as body_header%}
+{{body_header.print(config)}}
+{%endblock body_header%}
+
+{%block body_content%}
+  <h1>Index -- {{config['title']}}</h1>
+
+  <p>Here is where I will post all of my drawings, sketches and more art related stuff. Right now this is managed similar to the <a href="https://blog.luevano.xyz" alt="Luévano's Blog">blog</a>, but more "gallery" oriented. The structure is kind of a 3-level zoom, where you see all the images in this index (or on a tag index), then you see the whole image in its separate link with additional information and then you can see the raw image itself.</p>
+
+  <p>Get the RSS feed: <a target="_blank" href="{{config['url']['main']}}/rss.xml">{{config['url']['main']}}/rss.xml</a></p>
+
+  {%import "tag_list.html" as tag_list%}
+  {{tag_list.print(all_tags, "art-tags")}}
+
+  {%import "art/page_list.html" as page_list%}
+  {{page_list.print(all_pages)}}
+{%endblock body_content%}
+
+{%block body_footer%}
+{%import 'body/footer.html' as body_footer%}
+{{body_footer.contact(config)}}
+{{body_footer.donate(config)}}
+{{body_footer.rss(config)}}
+<br>
+{{body_footer.created_with()}}
+<br>
+{{body_footer.copyright()}}
+{%endblock body_footer%}
\ No newline at end of file
diff --git a/plt/art/page.html b/plt/art/page.html
new file mode 100644
index 0000000..837422e
--- /dev/null
+++ b/plt/art/page.html
@@ -0,0 +1,76 @@
+{%extends "base.html"%}
+
+{%block html_lang%}
+{{config['lang']}}
+{%endblock html_lang%}
+
+{%block head_title%}
+<title>{{page.title}} -- {{config['title']}}</title>
+{%endblock head_title%}
+
+{%block head_description%}
+{%if page.summary is not none%}
+  <meta name="description" content="{{page.summary}}"/>
+{%else%}
+  <meta name="description" content="{{config['description']}}"/>
+{%endif%}
+{%endblock head_description%}
+
+{%block head_rss%}
+<link rel="alternate" type="application/rss+xml" href="{{config['url']['main']}}/rss.xml" title="{{config['title']}} RSS">
+{%endblock head_rss%}
+
+{%block head_og%}
+  <meta property="og:title" content="{{page.title}} -- {{config['title']}}"/>
+  <meta property="og:type" content="article"/>
+  <meta property="og:url" content="{{config['url']['main']}}/{{page.name}}"/>
+  <meta property="og:image" content="{{config['url']['static']}}/{{config['url']['default_image']}}"/>
+{%if page.summary is not none%}
+  <meta property="og:description" content="{{page.summary}}"/>
+{%else%}
+  <meta property="og:description" content="{{config['description']}}"/>
+{%endif%}
+  <meta property="og:locale" content="{{config['lang']}}"/>
+  <meta property="og:site_name" content="{{config['title']}}"/>
+{%endblock head_og%}
+
+{%block body_header%}
+{%import 'body/header.html' as body_header%}
+{{body_header.print(config)}}
+{%endblock body_header%}
+
+{%block body_content%}
+  <h1>{{page.title}}</h1>
+
+  <a class="zoom-in" href="{{page.image_url}}" alt="See raw.">
+  {%if page.summary is not none%}
+    <img src="{{page.image_url}}" alt="{{page.summary}}">
+  {%else%}
+    <img src="{{page.image_url}}">
+    {%endif%}
+    </a>
+
+  {{page.content}}
+
+  {%import "page_nav.html" as page_nav%}
+  {{page_nav.print(page, config, "art-nav")}}
+
+  <hr>
+  <div class="art-info">
+    <p>By {{', '.join(page.author)}}</p>
+    <p>Posted: {{page.cdate}}</p>
+    {%import "tag_list.html" as tag_list%}
+    {{tag_list.print(page.tags, "art-tags")}}
+  </div>
+{%endblock body_content%}
+
+{%block body_footer%}
+{%import 'body/footer.html' as body_footer%}
+{{body_footer.contact(config)}}
+{{body_footer.donate(config)}}
+{{body_footer.rss(config)}}
+<br>
+{{body_footer.created_with()}}
+<br>
+{{body_footer.copyright()}}
+{%endblock body_footer%}
\ No newline at end of file
diff --git a/plt/art/page_list.html b/plt/art/page_list.html
new file mode 100644
index 0000000..c634bcf
--- /dev/null
+++ b/plt/art/page_list.html
@@ -0,0 +1,22 @@
+{%macro print(pages)%}
+{%import "art/page_list_entry.html" as art_entry%}
+<div class="art-grid">
+  {%for p in pages%}
+    {%if p.meta['tall'] is defined%}
+      {%if p.meta['wide'] is defined%}
+        {{art_entry.print(p, 'tall wide')}}
+      {%else%}
+        {{art_entry.print(p, 'tall')}}
+      {%endif%}
+    {%elif p.meta['wide'] is defined%}
+      {%if p.meta['tall'] is defined%}
+        {{art_entry.print(p, 'tall wide')}}
+      {%else%}
+        {{art_entry.print(p, 'tall')}}
+      {%endif%}
+    {%else%}
+      {{art_entry.print(p)}}
+    {%endif%}
+  {%endfor%}
+</div>
+{%endmacro%}
diff --git a/plt/art/page_list_entry.html b/plt/art/page_list_entry.html
new file mode 100644
index 0000000..1790025
--- /dev/null
+++ b/plt/art/page_list_entry.html
@@ -0,0 +1,5 @@
+{%macro print(page, class='')%}
+<a class="zoom-in {{class}}" href="{{page.url}}" alt="{{page.title}}">
+  <img src="{{page.image_url}}" alt="{{page.title}}">
+</a>
+{%endmacro%}
diff --git a/plt/art/tag.html b/plt/art/tag.html
new file mode 100644
index 0000000..8881998
--- /dev/null
+++ b/plt/art/tag.html
@@ -0,0 +1,54 @@
+{%extends "base.html"%}
+
+{%block html_lang%}
+{{config['lang']}}
+{%endblock html_lang%}
+
+{%block head_title%}
+<title>Art filtered by {{tag[0]}} -- {{config['title']}}</title>
+{%endblock head_title%}
+
+{%block head_description%}
+<meta name="description" content="Posts filtered by {{tag[0]}}"/>
+{%endblock head_description%}
+
+{%block head_rss%}
+<link rel="alternate" type="application/rss+xml" href="{{config['url']['main']}}/rss.xml" title="{{config['title']}} RSS">
+{%endblock head_rss%}
+
+{%block head_extra%}
+{%endblock head_extra%}
+
+{%block head_og%}
+  <meta property="og:title" content="{{config['title']}}"/>
+  <meta property="og:type" content="article"/>
+  <meta property="og:url" content="{{tag[1]}}"/>
+  <meta property="og:image" content="{{config['url']['static']}}/{{config['url']['default_image']}}"/>
+  <meta property="og:description" content="Art filtered by {{tag[0]}}"/>
+  <meta property="og:locale" content="{{config['lang']}}"/>
+  <meta property="og:site_name" content="{{config['title']}}"/>
+{%endblock head_og%}
+
+{%block body_header%}
+{%import 'body/header.html' as body_header%}
+{{body_header.print(config)}}
+{%endblock body_header%}
+
+{%block body_content%}
+  <h1>Art filtered by {{tag[0]}}</h1>
+
+  {%import "art/page_list.html" as page_list%}
+  {{page_list.print(tag_pages)}}
+
+{%endblock body_content%}
+
+{%block body_footer%}
+{%import 'body/footer.html' as body_footer%}
+{{body_footer.contact(config)}}
+{{body_footer.donate(config)}}
+{{body_footer.rss(config)}}
+<br>
+{{body_footer.created_with()}}
+<br>
+{{body_footer.copyright()}}
+{%endblock body_footer%}
\ No newline at end of file
diff --git a/plt/base.html b/plt/base.html
new file mode 100644
index 0000000..d5cb77b
--- /dev/null
+++ b/plt/base.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html class="theme-dark" lang="{%block html_lang%}{%endblock html_lang%}"
+  prefix="og: https://ogp.me/ns#">
+  <head>
+    <base href="{{config['url']['static']}}">
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <link rel="icon" href="images/icons/favicon.ico">
+    {%block head_title%}{%endblock head_title%}
+    {%block head_description%}{%endblock head_description%}
+    {%block head_rss%}{%endblock head_rss%}
+    <!-- general style -->
+    <link rel="stylesheet" type="text/css" href="css/style.css">
+    <link rel="stylesheet" type="text/css" href="fork-awesome/css/fork-awesome.min.css">
+    <link rel="stylesheet" type="text/css" href="font-awesome/css/all.min.css">
+    <!-- theme related -->
+    <script type="text/javascript" src="scripts/theme.js"></script>
+    <link id="theme-css" rel="stylesheet" type="text/css" href="css/theme.css">
+    <!-- extra -->
+    {%block head_extra%}{%endblock head_extra%}
+    <!-- og meta -->
+    {%block head_og%}{%endblock head_og%}
+  </head>
+
+  <body>
+    <header>
+      {%block body_header%}{%endblock body_header%}
+    </header>
+
+    <main>
+      {%block body_content%}{%endblock body_content%}
+    </main>
+
+    <footer>
+      {%block body_footer%}{%endblock body_footer%}
+    </footer>
+  </body>
+</html>
\ No newline at end of file
diff --git a/plt/blog/index.html b/plt/blog/index.html
new file mode 100644
index 0000000..e9a03cf
--- /dev/null
+++ b/plt/blog/index.html
@@ -0,0 +1,60 @@
+{%extends "base.html"%}
+
+{%block html_lang%}
+{{config['lang']}}
+{%endblock html_lang%}
+
+{%block head_title%}
+<title>Index -- {{config['title']}}</title>
+{%endblock head_title%}
+
+{%block head_description%}
+<meta name="description" content="{{config['description']}}"/>
+{%endblock head_description%}
+
+{%block head_rss%}
+<link rel="alternate" type="application/rss+xml" href="{{config['url']['main']}}/rss.xml" title="{{config['title']}} RSS">
+{%endblock head_rss%}
+
+{%block head_extra%}
+{%endblock head_extra%}
+
+{%block head_og%}
+  <meta property="og:title" content="Index -- {{config['title']}}"/>
+  <meta property="og:type" content="article"/>
+  <meta property="og:url" content="{{config['url']['main']}}/index.html"/>
+  <meta property="og:image" content="{{config['url']['static']}}/{{config['url']['default_image']}}"/>
+  <meta property="og:description" content="{{config['description']}}"/>
+  <meta property="og:locale" content="{{config['lang']}}"/>
+  <meta property="og:site_name" content="{{config['title']}}"/>
+{%endblock head_og%}
+
+{%block body_header%}
+{%import 'body/header.html' as body_header%}
+{{body_header.print(config)}}
+{%endblock body_header%}
+
+{%block body_content%}
+  <h1>Index -- {{config['title']}}</h1>
+
+  <p>Welcome to my blog where I'll post whatever I please, ranging from rants to how-to's. Además, este pex va a estar en español e inglés porque quiero (no una mezcla en cada entrada, pero sí entradas completas en diferentes lenguajes).</p>
+
+  <p>Get the RSS feed: <a target="_blank" href="{{config['url']['main']}}/rss.xml">{{config['url']['main']}}/rss.xml</a></p>
+
+  {%import "tag_list.html" as tag_list%}
+  {{tag_list.print(all_tags, "article-tags")}}
+
+  {%import "blog/page_list.html" as page_list%}
+  {{page_list.print("Articles", all_pages)}}
+{%endblock body_content%}
+
+{%block body_footer%}
+{%import 'body/footer.html' as body_footer%}
+{{body_footer.contact(config)}}
+{{body_footer.donate(config)}}
+{{body_footer.rss(config)}}
+<br>
+{{body_footer.created_with()}}
+<br>
+{{body_footer.copyright()}}
+{%endblock body_footer%}
\ No newline at end of file
diff --git a/plt/blog/page.html b/plt/blog/page.html
new file mode 100644
index 0000000..71b4cfe
--- /dev/null
+++ b/plt/blog/page.html
@@ -0,0 +1,81 @@
+{%extends "base.html"%}
+
+{%block html_lang%}
+{{config['lang']}}
+{%endblock html_lang%}
+
+{%block head_title%}
+<title>{{page.title}} -- {{config['title']}}</title>
+{%endblock head_title%}
+
+{%block head_description%}
+{%if page.summary is not none%}
+  <meta name="description" content="{{page.summary}}"/>
+{%else%}
+  <meta name="description" content="{{config['description']}}"/>
+{%endif%}
+{%endblock head_description%}
+
+{%block head_rss%}
+<link rel="alternate" type="application/rss+xml" href="{{config['url']['main']}}/rss.xml" title="{{config['title']}} RSS">
+{%endblock head_rss%}
+
+{%block head_extra%}
+{%import "highlightjs.html" as hljs%}
+{{hljs.print()}}
+{%endblock head_extra%}
+
+{%block gdscript_hl%}
+<!-- Specific to GDScript -->
+<script type="text/javascript" src="hl/languages/gdscript.min.js"></script>
+{%endblock gdscript_hl%}
+
+{%block head_og%}
+  <meta property="og:title" content="{{page.title}} -- {{config['title']}}"/>
+  <meta property="og:type" content="article"/>
+  <meta property="og:url" content="{{config['url']['main']}}/{{page.name}}"/>
+  <meta property="og:image" content="{{config['url']['static']}}/{{config['url']['default_image']}}"/>
+{%if page.summary is not none%}
+  <meta property="og:description" content="{{page.summary}}"/>
+{%else%}
+  <meta property="og:description" content="{{config['description']}}"/>
+{%endif%}
+  <meta property="og:locale" content="{{config['lang']}}"/>
+  <meta property="og:site_name" content="{{config['title']}}"/>
+{%endblock head_og%}
+
+{%block body_header%}
+{%import 'body/header.html' as body_header%}
+{{body_header.print(config)}}
+{%endblock body_header%}
+
+{%block body_content%}
+  <h1>{{page.title}}</h1>
+
+  {{page.content}}
+
+  {%import "page_nav.html" as page_nav%}
+  {{page_nav.print(page, config, "page-nav")}}
+
+  <hr>
+  <div class="article-info">
+    <p>By {{', '.join(page.author)}}</p>
+    <p>Created: {{page.cdate}}</p>
+    {%if page.mdate is not none%}
+      <p>Modified: {{page.mdate}}</p>
+    {%endif%}
+    {%import "tag_list.html" as tag_list%}
+    {{tag_list.print(page.tags, "article-tags")}}
+  </div>
+{%endblock body_content%}
+
+{%block body_footer%}
+{%import 'body/footer.html' as body_footer%}
+{{body_footer.contact(config)}}
+{{body_footer.donate(config)}}
+{{body_footer.rss(config)}}
+<br>
+{{body_footer.created_with()}}
+<br>
+{{body_footer.copyright()}}
+{%endblock body_footer%}
\ No newline at end of file
diff --git a/plt/blog/page_list.html b/plt/blog/page_list.html
new file mode 100644
index 0000000..b818884
--- /dev/null
+++ b/plt/blog/page_list.html
@@ -0,0 +1,15 @@
+{%macro print(name, pages)%}
+  <h2>{{name}}</h2>
+  <ul class="page-list">
+    {%for p in pages%}
+      {%if loop.previtem%}
+        {%if loop.previtem.cdate_list_sep != p.cdate_list_sep%}
+          <h3>{{p.cdate_list_sep}}</h3>
+        {%endif%}
+      {%else%}
+        <h3>{{p.cdate_list_sep}}</h3>
+      {%endif%}
+      <li>{{p.cdate_list}} - <a href="{{p.url}}">{{p.title}}</a></li>
+    {%endfor%}
+  </ul>
+{%endmacro%}
diff --git a/plt/blog/tag.html b/plt/blog/tag.html
new file mode 100644
index 0000000..ec826bf
--- /dev/null
+++ b/plt/blog/tag.html
@@ -0,0 +1,54 @@
+{%extends "base.html"%}
+
+{%block html_lang%}
+{{config['lang']}}
+{%endblock html_lang%}
+
+{%block head_title%}
+<title>Posts filtered by {{tag[0]}} -- {{config['title']}}</title>
+{%endblock head_title%}
+
+{%block head_description%}
+<meta name="description" content="Posts filtered by {{tag[0]}}"/>
+{%endblock head_description%}
+
+{%block head_rss%}
+<link rel="alternate" type="application/rss+xml" href="{{config['url']['main']}}/rss.xml" title="{{config['title']}} RSS">
+{%endblock head_rss%}
+
+{%block head_extra%}
+{%endblock head_extra%}
+
+{%block head_og%}
+  <meta property="og:title" content="{{config['title']}}"/>
+  <meta property="og:type" content="article"/>
+  <meta property="og:url" content="{{tag[1]}}"/>
+  <meta property="og:image" content="{{config['url']['static']}}/{{config['url']['default_image']}}"/>
+  <meta property="og:description" content="Posts filtered by {{tag[0]}}"/>
+  <meta property="og:locale" content="{{config['lang']}}"/>
+  <meta property="og:site_name" content="{{config['title']}}"/>
+{%endblock head_og%}
+
+{%block body_header%}
+{%import 'body/header.html' as body_header%}
+{{body_header.print(config)}}
+{%endblock body_header%}
+
+{%block body_content%}
+  <h1>Posts filtered by {{tag[0]}}</h1>
+
+  {%import "blog/page_list.html" as page_list%}
+  {{page_list.print("Articles", tag_pages)}}
+
+{%endblock body_content%}
+
+{%block body_footer%}
+{%import 'body/footer.html' as body_footer%}
+{{body_footer.contact(config)}}
+{{body_footer.donate(config)}}
+{{body_footer.rss(config)}}
+<br>
+{{body_footer.created_with()}}
+<br>
+{{body_footer.copyright()}}
+{%endblock body_footer%}
\ No newline at end of file
diff --git a/plt/body/footer.html b/plt/body/footer.html
new file mode 100644
index 0000000..32dcaf0
--- /dev/null
+++ b/plt/body/footer.html
@@ -0,0 +1,33 @@
+{%macro contact(config)%}
+<span>
+  <i class="fas fa-address-card" alt="Contact"></i>
+  <a href="{{config['url']['main']}}/contact.html">Contact</a>
+</span>
+{%endmacro%}
+
+{%macro donate(config)%}
+<span>
+  <i class="fas fa-donate" alt="Donate"></i>
+  <a href="{{config['url']['main']}}/donate.html">Donate</a>
+</span>
+{%endmacro%}
+
+{%macro rss(config)%}
+<span>
+  <i class="fas fa-rss" alt="RSS"></i>
+  <a target="_blank" href="{{config['url']['main']}}/rss.xml">RSS</a>
+</span>
+{%endmacro%}
+
+{%macro created_with()%}
+<span class="created-with">
+  <i class="fas fa-hammer" alt="Hammer"></i>
+  Created with <a href="https://github.com/luevano/pyssg">pyssg</a>
+</span>
+{%endmacro%}
+
+{%macro copyright()%}
+<span class="copyright">
+  Copyright <i class="far fa-copyright" alt="Copyright"></i> 2023 David Luévano Alvarado
+</span>
+{%endmacro%}
\ No newline at end of file
diff --git a/plt/body/header.html b/plt/body/header.html
new file mode 100644
index 0000000..5ea4022
--- /dev/null
+++ b/plt/body/header.html
@@ -0,0 +1,35 @@
+{%macro print(config)%}
+<nav>
+  <ul>
+    <li>
+      <a href="https://luevano.xyz/"><i class="fas fa-home" alt="Home"></i><span>Home</span></a>
+    </li>
+
+    <li>
+      <a href="https://blog.luevano.xyz/"><i class="fas fa-book-open" alt="Blog"></i><span>Blog</span></a>
+    </li>
+
+    <li>
+      <a href="https://art.luevano.xyz/"><i class="fas fa-paint-brush" alt="Art"></i><span>Art</span></a>
+    </li>
+
+    <li><i class="fab fa-git" alt="Git"></i><span>Git</span>
+      <ul>
+        <li><a href="https://git.luevano.xyz/" target="_blank"><i class="fab fa-git-alt" alt="Git-alt"></i></a></li>
+
+        <li><a href="https://github.com/luevano" target="_blank"><i class="fab fa-github" alt="Github"></i></a></li>
+
+        <li><a href="https://gitlab.com/dluevano" target="_blank"><i class="fab fa-gitlab" alt="Gitlab"></i></a></li>
+      </ul>
+    </li>
+
+    <li><i class="fas fa-box-open" alt="Stuff"></i><span>Stuff</span>
+      <ul>
+        <li><a href="https://gb.luevano.xyz/"><i class="fas fa-gamepad" alt="Gameboy"></i><span>Gameboy</span></a></li>
+      </ul>
+    </li>
+  </ul>
+</nav>
+
+<button class="theme-switcher" onclick="toggleTheme()"><i class="fas fa-moon"></i><i class="fas fa-sun"></i></button>
+{%endmacro%}
\ No newline at end of file
diff --git a/plt/highlightjs.html b/plt/highlightjs.html
new file mode 100644
index 0000000..0a1ded3
--- /dev/null
+++ b/plt/highlightjs.html
@@ -0,0 +1,9 @@
+{%macro print()%}
+<!-- highlight support for code blocks -->
+<script type="text/javascript" src="hl/highlight.min.js"></script>
+{%block gdscript_hl%}{%endblock gdscript_hl%}
+<script type="text/javascript">
+  hljs.initHighlightingOnLoad();
+</script>
+<link id="code-theme-css" rel="stylesheet" type="text/css" href="hl/styles/nord.min.css">
+{%endmacro%}
\ No newline at end of file
diff --git a/plt/page_nav.html b/plt/page_nav.html
new file mode 100644
index 0000000..d182e53
--- /dev/null
+++ b/plt/page_nav.html
@@ -0,0 +1,28 @@
+{%macro print(page, config, div_class_name)%}
+<div class="{{div_class_name}}">
+  {%if page.next is not none%}
+    <span class="next">
+      <a href="{{page.next.url}}" alt="Next">
+        <i class="fas fa-arrow-left" alt="Arrow left"></i>
+        <span>Next</span>
+      </a>
+    </span>
+  {%endif%}
+
+    <span class="index">
+      <a href="{{config['url']['main']}}" alt="Index">
+        <i class="fas fa-home" alt="Home"></i>
+        <span>Index</span>
+      </a>
+    </span>
+
+  {%if page.previous is not none%}
+    <span class="previous">
+      <a href="{{page.previous.url}}" alt="Previous">
+        <i class="fas fa-arrow-right" alt="Arrow right"></i>
+        <span>Previous</span>
+      </a>
+    </span>
+  {%endif%}
+</div>
+{%endmacro%}
diff --git a/plt/root_page.html b/plt/root_page.html
new file mode 100644
index 0000000..ddc3ea0
--- /dev/null
+++ b/plt/root_page.html
@@ -0,0 +1,52 @@
+{%extends "base.html"%}
+
+{%block html_lang%}
+{{config['lang']}}
+{%endblock html_lang%}
+
+{%block head_title%}
+<title>{{config['title']}}</title>
+{%endblock head_title%}
+
+{%block head_description%}
+<meta name="description" content="{{config['description']}}"/>
+{%endblock head_description%}
+
+{%block head_rss%}
+  <link rel="alternate" type="application/rss+xml" href="https://blog.luevano.xyz/rss.xml" title="Luévano's Blog RSS">
+  <link rel="alternate" type="application/rss+xml" href="https://art.luevano.xyz/rss.xml" title="Luévano's Art RSS">
+{%endblock head_rss%}
+
+{%block head_extra%}
+{%endblock head_extra%}
+
+{%block head_og%}
+  <meta property="og:title" content="{{config['title']}}"/>
+  <meta property="og:type" content="article"/>
+  <meta property="og:url" content="{{config['url']['main']}}/{{page.name}}"/>
+  <meta property="og:image" content="{{config['url']['static']}}/{{config['url']['default_image']}}"/>
+  <meta property="og:description" content="{{config['description']}}"/>
+  <meta property="og:locale" content="{{config['lang']}}"/>
+  <meta property="og:site_name" content="{{config['title']}}"/>
+{%endblock head_og%}
+
+{%block body_header%}
+{%import 'body/header.html' as body_header%}
+{{body_header.print(config)}}
+{%endblock body_header%}
+
+{%block body_content%}
+  <h1>{{page.title}}</h1>
+
+  {{page.content}}
+{%endblock body_content%}
+
+{%block body_footer%}
+{%import 'body/footer.html' as body_footer%}
+{{body_footer.contact(config)}}
+{{body_footer.donate(config)}}
+<br>
+{{body_footer.created_with()}}
+<br>
+{{body_footer.copyright()}}
+{%endblock body_footer%}
\ No newline at end of file
diff --git a/plt/rss.xml b/plt/rss.xml
new file mode 100644
index 0000000..5f6231b
--- /dev/null
+++ b/plt/rss.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<rss version="2.0"
+  xmlns:atom="http://www.w3.org/2005/Atom"
+  xmlns:content="http://purl.org/rss/1.0/modules/content/">
+  <channel>
+    <title>{{config['title']}}</title>
+    <link>{{config['url']['main']}}</link>
+    <atom:link href="{{config['url']['main']}}/rss.xml" rel="self" type="application/rss+xml"/>
+    <description>{{config['description']}}</description>
+    <language>en-us</language>
+    <category>{{config['rss_gategory']}}</category>
+    <copyright>Copyright 2023 {{config['author']}}</copyright>
+    <managingEditor>{{config['author_email']}} ({{config['author']}})</managingEditor>
+    <webMaster>{{config['author_email']}} ({{config['author']}})</webMaster>
+    <pubDate>{{config['info']['rss_run_date']}}</pubDate>
+    <lastBuildDate>{{config['info']['rss_run_date']}}</lastBuildDate>
+    <generator>pyssg v{{config['info']['version']}}</generator>
+    <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
+    <ttl>30</ttl>
+    <image>
+      <url>{{config['url']['static']}}/{{config['url']['default_image']}}</url>
+      <title>{{config['title']}}</title>
+      <link>{{config['url']['main']}}</link>
+    </image>
+    {%for p in all_pages%}
+    <item>
+      <title>{{p.title}}</title>
+      <link>{{p.url}}</link>
+      <guid isPermaLink="true">{{p.url}}</guid>
+      <pubDate>{{p.cdate_rss}}</pubDate>
+      {%for t in p.tags%}
+      <category>{{t[0].lower().capitalize()}}</category>
+      {%endfor%}
+      <description>{{p.summary}}</description>
+      <content:encoded><![CDATA[{{p.content}}]]></content:encoded>
+    </item>
+    {%endfor%}
+  </channel>
+</rss>
diff --git a/plt/sitemap.xml b/plt/sitemap.xml
new file mode 100644
index 0000000..f7eaa47
--- /dev/null
+++ b/plt/sitemap.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
+<url>
+  <loc>https://luevano.xyz/index.html</loc>
+  <lastmod>2022-12-16</lastmod>
+  <changefreq>monthly</changefreq>
+  <priority>1.0</priority>
+</url>
+<url>
+  <loc>https://luevano.xyz/contact.html</loc>
+  <lastmod>2022-12-16</lastmod>
+  <changefreq>monthly</changefreq>
+  <priority>1.0</priority>
+</url>
+<url>
+  <loc>https://luevano.xyz/donate.html</loc>
+  <lastmod>2022-12-16</lastmod>
+  <changefreq>monthly</changefreq>
+  <priority>1.0</priority>
+</url>
+<url>
+  <loc>https://blog.luevano.xyz</loc>
+  <lastmod>2022-12-16</lastmod>
+  <changefreq>daily</changefreq>
+  <priority>1.0</priority>
+</url>
+<url>
+  <loc>https://art.luevano.xyz</loc>
+  <lastmod>2022-12-16</lastmod>
+  <changefreq>daily</changefreq>
+  <priority>1.0</priority>
+</url>
+<url>
+  <loc>https://gb.luevano.xyz</loc>
+  <lastmod>2022-12-16</lastmod>
+  <changefreq>monthly</changefreq>
+  <priority>0.5</priority>
+</url>
+<url>
+  <loc>https://git.luevano.xyz</loc>
+  <lastmod>2022-12-16</lastmod>
+  <changefreq>daily</changefreq>
+  <priority>1.0</priority>
+</url>
+
+  {%for p in all_pages%}
+    <url>
+      <loc>{{p.url}}</loc>
+      <lastmod>{{p.mdate_sitemap if p.mdate_sitemap else p.cdate_sitemap}}</lastmod>
+      <changefreq>weekly</changefreq>
+      <priority>1.0</priority>
+    </url>
+  {%endfor%}
+
+  {%for t in all_tags%}
+    <url>
+      <loc>{{t[1]}}</loc>
+      <lastmod>{{config['info']['sitemap_run_date']}}</lastmod>
+      <changefreq>daily</changefreq>
+      <priority>0.5</priority>
+    </url>
+  {%endfor%}
+</urlset>
diff --git a/plt/tag_list.html b/plt/tag_list.html
new file mode 100644
index 0000000..8fbbdc5
--- /dev/null
+++ b/plt/tag_list.html
@@ -0,0 +1,9 @@
+{%macro print(tags, div_class_name)%}
+<div class="{{div_class_name}}">
+  <p>Tags:
+  {%for t in tags-%}
+    <a href="{{t[1]}}">{{t[0]}}</a>{{", " if not loop.last else ""}}
+  {%-endfor%}
+  </p>
+</div>
+{%endmacro%}
-- 
cgit v1.2.3-70-g09d2