diff --git a/src/routes/generic.py b/src/routes/generic.py
index e737f1a..cf350dd 100644
--- a/src/routes/generic.py
+++ b/src/routes/generic.py
@@ -1,7 +1,7 @@
# Imports
-from flask import Blueprint, render_template, request, abort, send_from_directory, send_file
+from flask import Blueprint, render_template, request, abort, send_file
from os import getenv as env
-import logging
+import logging, os
# Create blueprint
@@ -44,10 +44,22 @@ def sitemap():
# Catch-all route for generic pages
@bp.route('/')
def catch_all(filename):
- # try to find template in the pages directory and add .html extension
- if not filename.endswith('.html'):
- filename += '.html'
- try:
- return render_template(f'pages/{filename}')
+ try: return render_template(f'pages/{filename if filename.endswith(".html") else filename + ".html"}')
except Exception as e:
+ # If the template is not found, check if it is a directory
+ os_path = os.path.join(bp.template_folder, 'pages', filename)[3:]
+ if os.path.isdir(os_path):
+ # walk through the directory and find all files
+ pages = []
+ for root, dirs, files_in_dir in os.walk(os_path):
+ for file in files_in_dir:
+ pages.append(os.path.relpath(os.path.join(root, file), os_path))
+ for dir in dirs:
+ pages.append(os.path.relpath(os.path.join(root, dir), os_path) + '/')
+
+ # If it is a directory, render a directory page
+ if not filename.endswith('/'): filename += '/'
+ return render_template('bases/directory.html', directory=filename, pages=pages)
+
+ # If it is a file, return a 404 error
abort(404, f"Template '{filename}' not found: {e}")
\ No newline at end of file
diff --git a/static/content/fur_meets/03-08-2025_paws_n_pistons/PXL_20250803_140629639.jpg b/static/content/fur_meets/03-08-2025_paws_n_pistons/PXL_20250803_140629639.jpg
new file mode 100644
index 0000000..0714fff
Binary files /dev/null and b/static/content/fur_meets/03-08-2025_paws_n_pistons/PXL_20250803_140629639.jpg differ
diff --git a/static/content/fur_meets/03-08-2025_paws_n_pistons/PXL_20250803_141242090.jpg b/static/content/fur_meets/03-08-2025_paws_n_pistons/PXL_20250803_141242090.jpg
new file mode 100644
index 0000000..55a18a3
Binary files /dev/null and b/static/content/fur_meets/03-08-2025_paws_n_pistons/PXL_20250803_141242090.jpg differ
diff --git a/static/content/fur_meets/03-08-2025_paws_n_pistons/PXL_20250803_182023562.jpg b/static/content/fur_meets/03-08-2025_paws_n_pistons/PXL_20250803_182023562.jpg
new file mode 100644
index 0000000..04a0ea6
Binary files /dev/null and b/static/content/fur_meets/03-08-2025_paws_n_pistons/PXL_20250803_182023562.jpg differ
diff --git a/static/content/fur_meets/03-08-2025_paws_n_pistons/PXL_20250803_184321576.jpg b/static/content/fur_meets/03-08-2025_paws_n_pistons/PXL_20250803_184321576.jpg
new file mode 100644
index 0000000..00d9404
Binary files /dev/null and b/static/content/fur_meets/03-08-2025_paws_n_pistons/PXL_20250803_184321576.jpg differ
diff --git a/static/content/fur_meets/03-08-2025_paws_n_pistons/PXL_20250803_200906329.jpg b/static/content/fur_meets/03-08-2025_paws_n_pistons/PXL_20250803_200906329.jpg
new file mode 100644
index 0000000..b4ee0aa
Binary files /dev/null and b/static/content/fur_meets/03-08-2025_paws_n_pistons/PXL_20250803_200906329.jpg differ
diff --git a/static/content/fur_meets/26-08-2025_critters_mk/PXL_20250726_152110445.jpg b/static/content/fur_meets/26-07-2025_critters_mk/PXL_20250726_152110445.jpg
similarity index 100%
rename from static/content/fur_meets/26-08-2025_critters_mk/PXL_20250726_152110445.jpg
rename to static/content/fur_meets/26-07-2025_critters_mk/PXL_20250726_152110445.jpg
diff --git a/static/content/fur_meets/26-08-2025_critters_mk/PXL_20250726_155134418.jpg b/static/content/fur_meets/26-07-2025_critters_mk/PXL_20250726_155134418.jpg
similarity index 100%
rename from static/content/fur_meets/26-08-2025_critters_mk/PXL_20250726_155134418.jpg
rename to static/content/fur_meets/26-07-2025_critters_mk/PXL_20250726_155134418.jpg
diff --git a/static/content/fur_meets/26-08-2025_critters_mk/PXL_20250726_155226274.jpg b/static/content/fur_meets/26-07-2025_critters_mk/PXL_20250726_155226274.jpg
similarity index 100%
rename from static/content/fur_meets/26-08-2025_critters_mk/PXL_20250726_155226274.jpg
rename to static/content/fur_meets/26-07-2025_critters_mk/PXL_20250726_155226274.jpg
diff --git a/static/content/fur_meets/26-08-2025_critters_mk/PXL_20250726_155434701.jpg b/static/content/fur_meets/26-07-2025_critters_mk/PXL_20250726_155434701.jpg
similarity index 100%
rename from static/content/fur_meets/26-08-2025_critters_mk/PXL_20250726_155434701.jpg
rename to static/content/fur_meets/26-07-2025_critters_mk/PXL_20250726_155434701.jpg
diff --git a/static/css/directory.css b/static/css/directory.css
new file mode 100644
index 0000000..0854233
--- /dev/null
+++ b/static/css/directory.css
@@ -0,0 +1,13 @@
+section#directory ul {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+}
+
+section#directory li {
+ margin: 0.5rem 0;
+}
+
+section#directory a:hover {
+ scale: 1.05;
+}
\ No newline at end of file
diff --git a/static/css/gallery.css b/static/css/gallery.css
new file mode 100644
index 0000000..5faafc5
--- /dev/null
+++ b/static/css/gallery.css
@@ -0,0 +1,17 @@
+.gallery {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ gap: 1rem;
+}
+
+.gallery img {
+ max-width: 100%;
+ height: auto;
+ border-radius: 10px;
+}
+
+.gallery-date {
+ margin: 1rem 0 .25rem 0;
+ font-size: 2rem;
+}
\ No newline at end of file
diff --git a/templates/bases/base.html b/templates/bases/base.html
index ff8689f..44f434b 100644
--- a/templates/bases/base.html
+++ b/templates/bases/base.html
@@ -4,7 +4,7 @@
{% block title %}Alfie's basement{% endblock %}
-
+
@@ -28,6 +28,7 @@
Home
Toaster
+ Events
Gitea
LastFm
Prismic
diff --git a/templates/bases/directory.html b/templates/bases/directory.html
new file mode 100644
index 0000000..16a99da
--- /dev/null
+++ b/templates/bases/directory.html
@@ -0,0 +1,22 @@
+{% extends "bases/base.html" %}
+
+{% block title %}{{ directory }} - Alfie's basement{% endblock %}
+{% block description %}server backend survivor{% endblock %}
+
+{% block head %}
+
+{% endblock %}
+
+{% block scripts %}
+{% endblock %}
+
+{% block content %}
+
+{% endblock %}
\ No newline at end of file
diff --git a/templates/pages/events/crittersmk.html b/templates/pages/events/crittersmk.html
new file mode 100644
index 0000000..e430984
--- /dev/null
+++ b/templates/pages/events/crittersmk.html
@@ -0,0 +1,45 @@
+{% extends "bases/base.html" %}
+
+{% block title %}Critters MK - Alfie's basement{% endblock %}
+{% block description %}furry corner{% endblock %}
+{% block og_image %}/static/content/Toaster_v1.0_Dark.png{% endblock %}
+{% block keywords %}
+Alfie King, Alfie, King, Alfieking, Alfieking.dev, dev, server, developer, backend, selfhost, homelab, furry, protogen, toaster,
+fursona, fur, furmeet, fursuit, persona, character, protogen fursona, protogen character, protogen fursona design,
+protogen character design, critters mk, critters cmk, paws n pistons, paws'n'pistons, paws n pistons furry meet, paws'n'pistons furry meet,
+protogen v1.0, toaster v1.0
+{% endblock %}
+
+{% block head %}
+
+{% endblock %}
+
+{% block content %}
+
+ Critters MK
+
+ Critters Mk is a fur meet based in Milton Keynes, UK. They hold a meet once a month on saturdays around the area, usually at local parks. They are a
+ therian friendly group, and there are a variety of fursuiters and non-fursuiters that attend. The group is very welcoming to newcomers, and the meets
+ are a great way to meet new people in the furry community. There is also atleast one fursuit maker in the group to my knowledge, so if you are looking
+ for a fursuit, you may be able to find one there. The group is also very active on Telegram, and they have a Twitter page where they post updates about
+ the meets.
+
+ I have attended a few of the meets, and I enjoyed talking to the people there. I plan on attending every meet I can in the future, as well as any other local events
+ that I can find. If you are in the area, I highly recommend checking them out. You can find more information about the group on their
+ Twitter page (I don't know if I can link their Telegram group :<)
+
+
+
+ Photos :3
+
+ Here are some photos from the meets I have attended. I will add more as I attend more meets.
+
+ 26th July 2025
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/templates/pages/events/paws-n-pistons.html b/templates/pages/events/paws-n-pistons.html
new file mode 100644
index 0000000..eb3d892
--- /dev/null
+++ b/templates/pages/events/paws-n-pistons.html
@@ -0,0 +1,67 @@
+{% extends "bases/base.html" %}
+
+{% block title %}Paws'N'Pistons - Alfie's basement{% endblock %}
+{% block description %}furry corner{% endblock %}
+{% block og_image %}/static/content/Toaster_v1.0_Dark.png{% endblock %}
+{% block keywords %}
+Alfie King, Alfie, King, Alfieking, Alfieking.dev, dev, server, developer, backend, selfhost, homelab, furry, protogen, toaster,
+fursona, fur, furmeet, fursuit, persona, character, protogen fursona, protogen character, protogen fursona design,
+protogen character design, critters mk, critters cmk, paws n pistons, paws'n'pistons, paws n pistons furry meet, paws'n'pistons furry meet,
+protogen v1.0, toaster v1.0
+{% endblock %}
+
+{% block head %}
+
+
+{% endblock %}
+
+{% block content %}
+
+ Paws'N'Pistons
+
+ Paws'N'Pistons is a furry car meet that takes place across the UK. They are a very welcoming group that is open to all furries, regardless
+ of whether you have a car or not. Their meets last all day and involve multiple hours of driving across the country to various locations. They
+ also have a shop where you can buy car stickers and other merch. They also hand out free
+ stickers at their meets. Their main social media is their Instagram , where
+ they post photos from their meets and updates about upcoming events.
+
+ I've only attended one meet on the 3rd of August 2025, and it was a great experience. The people were very chill and I enjoyed driving around with them.
+ ALSO, one of them offered to let me try their fursuit!!! Im now going to speedrun going broke trying to get a fursuit of my own cus of this :3 (I was
+ already planning on getting one, but this just made me want one more).
+
+
+
+ Unfortunately, I don't have any contact with them, cus they were a rly chill person. If anyone knows them, please let me know!
+
+
+
+ Photos :3
+
+ Here are some photos from the meets I have attended. I will add more as I attend more meets.
+
+ 3rd Aug 2025
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/templates/pages/toaster.html b/templates/pages/toaster.html
index b2fa1dc..d8a7383 100644
--- a/templates/pages/toaster.html
+++ b/templates/pages/toaster.html
@@ -84,16 +84,16 @@ protogen v1.0, toaster v1.0
{% endblock %}
\ No newline at end of file