diff --git a/Dockerfile b/Dockerfile
index b71ffbf..7b2943f 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -8,7 +8,7 @@ FROM forgejo.neshweb.net/firq/website-serve-docker:latest AS runtime
 
 COPY --from=build /app/dist /public
 COPY --from=build /app/serve.json /public/serve.json
-RUN rm -r /public/assets/data/
+RUN rm -r /public/data/
 
 ENV PORT 8081
 EXPOSE 8081
diff --git a/package-lock.json b/package-lock.json
index 331a458..01bdf97 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
 {
 	"name": "@firq/fgosite",
-	"version": "0.1.6",
+	"version": "0.1.11",
 	"lockfileVersion": 2,
 	"requires": true,
 	"packages": {
 		"": {
 			"name": "@firq/fgosite",
-			"version": "0.1.6",
+			"version": "0.1.11",
 			"dependencies": {
 				"@astrojs/check": "^0.3.3",
 				"@astrojs/sitemap": "^3.0.3",
diff --git a/package.json b/package.json
index 3ff968f..41def1f 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
 {
 	"name": "@firq/fgosite",
 	"type": "module",
-	"version": "0.1.10",
+	"version": "0.1.11",
 	"private": true,
 	"scripts": {
 		"dev": "astro dev",
diff --git a/serve.json b/serve.json
index 6f9caef..0ce65b6 100644
--- a/serve.json
+++ b/serve.json
@@ -21,7 +21,7 @@
       "source" : "**/*.@(jpg|jpeg|gif|png|webp|svg)",
       "headers" : [{
         "key" : "Cache-Control",
-        "value" : "max-age=86400"
+        "value" : "max-age=31536000"
       }]
     }
   ]
diff --git a/static/assets/atlas.png b/src/assets/atlas.png
similarity index 100%
rename from static/assets/atlas.png
rename to src/assets/atlas.png
diff --git a/src/assets/ce/2030.png b/src/assets/ce/2030.png
new file mode 100644
index 0000000..e9fae8f
Binary files /dev/null and b/src/assets/ce/2030.png differ
diff --git a/src/assets/ce/500.png b/src/assets/ce/500.png
new file mode 100644
index 0000000..9f5623c
Binary files /dev/null and b/src/assets/ce/500.png differ
diff --git a/src/assets/ce/black_grail.png b/src/assets/ce/black_grail.png
new file mode 100644
index 0000000..990ba68
Binary files /dev/null and b/src/assets/ce/black_grail.png differ
diff --git a/src/assets/ce/bond-ce/bride.png b/src/assets/ce/bond-ce/bride.png
new file mode 100644
index 0000000..06e7ac1
Binary files /dev/null and b/src/assets/ce/bond-ce/bride.png differ
diff --git a/src/assets/ce/bond-ce/castoria.png b/src/assets/ce/bond-ce/castoria.png
new file mode 100644
index 0000000..2b2875e
Binary files /dev/null and b/src/assets/ce/bond-ce/castoria.png differ
diff --git a/src/assets/ce/bond-ce/chiron.png b/src/assets/ce/bond-ce/chiron.png
new file mode 100644
index 0000000..4380a67
Binary files /dev/null and b/src/assets/ce/bond-ce/chiron.png differ
diff --git a/src/assets/ce/bond-ce/crane.png b/src/assets/ce/bond-ce/crane.png
new file mode 100644
index 0000000..f90cc92
Binary files /dev/null and b/src/assets/ce/bond-ce/crane.png differ
diff --git a/src/assets/ce/bond-ce/douman.png b/src/assets/ce/bond-ce/douman.png
new file mode 100644
index 0000000..b44f694
Binary files /dev/null and b/src/assets/ce/bond-ce/douman.png differ
diff --git a/src/assets/ce/bond-ce/gogh.png b/src/assets/ce/bond-ce/gogh.png
new file mode 100644
index 0000000..e6f5f61
Binary files /dev/null and b/src/assets/ce/bond-ce/gogh.png differ
diff --git a/src/assets/ce/bond-ce/himiko.png b/src/assets/ce/bond-ce/himiko.png
new file mode 100644
index 0000000..1d5dcc2
Binary files /dev/null and b/src/assets/ce/bond-ce/himiko.png differ
diff --git a/src/assets/ce/bond-ce/ibaraki.png b/src/assets/ce/bond-ce/ibaraki.png
new file mode 100644
index 0000000..805175f
Binary files /dev/null and b/src/assets/ce/bond-ce/ibaraki.png differ
diff --git a/src/assets/ce/bond-ce/jane.png b/src/assets/ce/bond-ce/jane.png
new file mode 100644
index 0000000..8a54d14
Binary files /dev/null and b/src/assets/ce/bond-ce/jane.png differ
diff --git a/src/assets/ce/bond-ce/koyanlight.png b/src/assets/ce/bond-ce/koyanlight.png
new file mode 100644
index 0000000..b5a9e61
Binary files /dev/null and b/src/assets/ce/bond-ce/koyanlight.png differ
diff --git a/src/assets/ce/bond-ce/liz.png b/src/assets/ce/bond-ce/liz.png
new file mode 100644
index 0000000..495d708
Binary files /dev/null and b/src/assets/ce/bond-ce/liz.png differ
diff --git a/src/assets/ce/bond-ce/merlin.png b/src/assets/ce/bond-ce/merlin.png
new file mode 100644
index 0000000..d3f492f
Binary files /dev/null and b/src/assets/ce/bond-ce/merlin.png differ
diff --git a/src/assets/ce/bond-ce/oberon.png b/src/assets/ce/bond-ce/oberon.png
new file mode 100644
index 0000000..b836b58
Binary files /dev/null and b/src/assets/ce/bond-ce/oberon.png differ
diff --git a/src/assets/ce/bond-ce/reines.png b/src/assets/ce/bond-ce/reines.png
new file mode 100644
index 0000000..8cdea85
Binary files /dev/null and b/src/assets/ce/bond-ce/reines.png differ
diff --git a/src/assets/ce/bond-ce/santagale.png b/src/assets/ce/bond-ce/santagale.png
new file mode 100644
index 0000000..0163273
Binary files /dev/null and b/src/assets/ce/bond-ce/santagale.png differ
diff --git a/src/assets/ce/bond-ce/skadi.png b/src/assets/ce/bond-ce/skadi.png
new file mode 100644
index 0000000..a2d445d
Binary files /dev/null and b/src/assets/ce/bond-ce/skadi.png differ
diff --git a/src/assets/ce/bond-ce/tamamo.png b/src/assets/ce/bond-ce/tamamo.png
new file mode 100644
index 0000000..03cac41
Binary files /dev/null and b/src/assets/ce/bond-ce/tamamo.png differ
diff --git a/src/assets/ce/bond-ce/waver.png b/src/assets/ce/bond-ce/waver.png
new file mode 100644
index 0000000..aafd1da
Binary files /dev/null and b/src/assets/ce/bond-ce/waver.png differ
diff --git a/src/assets/ce/bond-ce/wu.png b/src/assets/ce/bond-ce/wu.png
new file mode 100644
index 0000000..cfc46a5
Binary files /dev/null and b/src/assets/ce/bond-ce/wu.png differ
diff --git a/src/assets/ce/devilish_bodhisattva.png b/src/assets/ce/devilish_bodhisattva.png
new file mode 100644
index 0000000..e466954
Binary files /dev/null and b/src/assets/ce/devilish_bodhisattva.png differ
diff --git a/src/assets/ce/kaleidoscope.png b/src/assets/ce/kaleidoscope.png
new file mode 100644
index 0000000..351d722
Binary files /dev/null and b/src/assets/ce/kaleidoscope.png differ
diff --git a/src/assets/ce/maidens_teachings.png b/src/assets/ce/maidens_teachings.png
new file mode 100644
index 0000000..9d520a5
Binary files /dev/null and b/src/assets/ce/maidens_teachings.png differ
diff --git a/src/assets/ce/merciless_one.png b/src/assets/ce/merciless_one.png
new file mode 100644
index 0000000..5645c4b
Binary files /dev/null and b/src/assets/ce/merciless_one.png differ
diff --git a/src/assets/ce/mlb.png b/src/assets/ce/mlb.png
new file mode 100644
index 0000000..19e92b5
Binary files /dev/null and b/src/assets/ce/mlb.png differ
diff --git a/static/assets/ce/mlb.webp b/src/assets/ce/mlb.webp
similarity index 100%
rename from static/assets/ce/mlb.webp
rename to src/assets/ce/mlb.webp
diff --git a/src/assets/ce/outrage.png b/src/assets/ce/outrage.png
new file mode 100644
index 0000000..2cf3b1a
Binary files /dev/null and b/src/assets/ce/outrage.png differ
diff --git a/src/assets/ce/ox-demon.png b/src/assets/ce/ox-demon.png
new file mode 100644
index 0000000..df903c0
Binary files /dev/null and b/src/assets/ce/ox-demon.png differ
diff --git a/src/assets/ce/prisma_cosmos.png b/src/assets/ce/prisma_cosmos.png
new file mode 100644
index 0000000..7604f00
Binary files /dev/null and b/src/assets/ce/prisma_cosmos.png differ
diff --git a/src/assets/ce/vessel.png b/src/assets/ce/vessel.png
new file mode 100644
index 0000000..8b267b4
Binary files /dev/null and b/src/assets/ce/vessel.png differ
diff --git a/static/assets/embed.png b/src/assets/embed.png
similarity index 100%
rename from static/assets/embed.png
rename to src/assets/embed.png
diff --git a/src/assets/favourites/scathach.png b/src/assets/favourites/scathach.png
new file mode 100644
index 0000000..e2325f7
Binary files /dev/null and b/src/assets/favourites/scathach.png differ
diff --git a/src/assets/favourites/skadi.png b/src/assets/favourites/skadi.png
new file mode 100644
index 0000000..1585b7f
Binary files /dev/null and b/src/assets/favourites/skadi.png differ
diff --git a/static/assets/fedora.png b/src/assets/fedora.png
similarity index 100%
rename from static/assets/fedora.png
rename to src/assets/fedora.png
diff --git a/static/assets/logo.svg b/src/assets/logo.svg
similarity index 100%
rename from static/assets/logo.svg
rename to src/assets/logo.svg
diff --git a/static/assets/lurker.png b/src/assets/lurker.png
similarity index 100%
rename from static/assets/lurker.png
rename to src/assets/lurker.png
diff --git a/static/assets/okita.png b/src/assets/okita.png
similarity index 100%
rename from static/assets/okita.png
rename to src/assets/okita.png
diff --git a/static/assets/old.logo.svg b/src/assets/old.logo.svg
similarity index 100%
rename from static/assets/old.logo.svg
rename to src/assets/old.logo.svg
diff --git a/static/assets/padoru.png b/src/assets/padoru.png
similarity index 100%
rename from static/assets/padoru.png
rename to src/assets/padoru.png
diff --git a/src/assets/servant/bride_03.png b/src/assets/servant/bride_03.png
new file mode 100644
index 0000000..78ac024
Binary files /dev/null and b/src/assets/servant/bride_03.png differ
diff --git a/src/assets/servant/castoria_01.png b/src/assets/servant/castoria_01.png
new file mode 100644
index 0000000..0e5967b
Binary files /dev/null and b/src/assets/servant/castoria_01.png differ
diff --git a/src/assets/servant/castoria_02.png b/src/assets/servant/castoria_02.png
new file mode 100644
index 0000000..8ac5d39
Binary files /dev/null and b/src/assets/servant/castoria_02.png differ
diff --git a/src/assets/servant/chiron_01.png b/src/assets/servant/chiron_01.png
new file mode 100644
index 0000000..ee9ae6a
Binary files /dev/null and b/src/assets/servant/chiron_01.png differ
diff --git a/src/assets/servant/crane_01.png b/src/assets/servant/crane_01.png
new file mode 100644
index 0000000..24473f3
Binary files /dev/null and b/src/assets/servant/crane_01.png differ
diff --git a/src/assets/servant/douman_01.png b/src/assets/servant/douman_01.png
new file mode 100644
index 0000000..53cdeeb
Binary files /dev/null and b/src/assets/servant/douman_01.png differ
diff --git a/src/assets/servant/gogh_01.png b/src/assets/servant/gogh_01.png
new file mode 100644
index 0000000..db0cc6c
Binary files /dev/null and b/src/assets/servant/gogh_01.png differ
diff --git a/src/assets/servant/himiko_03.png b/src/assets/servant/himiko_03.png
new file mode 100644
index 0000000..e9a73df
Binary files /dev/null and b/src/assets/servant/himiko_03.png differ
diff --git a/src/assets/servant/ibaraki_02.png b/src/assets/servant/ibaraki_02.png
new file mode 100644
index 0000000..01e43ab
Binary files /dev/null and b/src/assets/servant/ibaraki_02.png differ
diff --git a/src/assets/servant/jane_02.png b/src/assets/servant/jane_02.png
new file mode 100644
index 0000000..f65d96d
Binary files /dev/null and b/src/assets/servant/jane_02.png differ
diff --git a/src/assets/servant/koyanlight_01.png b/src/assets/servant/koyanlight_01.png
new file mode 100644
index 0000000..7fe8bbd
Binary files /dev/null and b/src/assets/servant/koyanlight_01.png differ
diff --git a/src/assets/servant/liz_01.png b/src/assets/servant/liz_01.png
new file mode 100644
index 0000000..c1d83d8
Binary files /dev/null and b/src/assets/servant/liz_01.png differ
diff --git a/src/assets/servant/merlin_01.png b/src/assets/servant/merlin_01.png
new file mode 100644
index 0000000..8e8ffc5
Binary files /dev/null and b/src/assets/servant/merlin_01.png differ
diff --git a/src/assets/servant/merlin_03.png b/src/assets/servant/merlin_03.png
new file mode 100644
index 0000000..565563a
Binary files /dev/null and b/src/assets/servant/merlin_03.png differ
diff --git a/src/assets/servant/oberon_02.png b/src/assets/servant/oberon_02.png
new file mode 100644
index 0000000..59bb4bc
Binary files /dev/null and b/src/assets/servant/oberon_02.png differ
diff --git a/src/assets/servant/reines_01.png b/src/assets/servant/reines_01.png
new file mode 100644
index 0000000..e2ebfd2
Binary files /dev/null and b/src/assets/servant/reines_01.png differ
diff --git a/src/assets/servant/santagale_01.png b/src/assets/servant/santagale_01.png
new file mode 100644
index 0000000..7a1e541
Binary files /dev/null and b/src/assets/servant/santagale_01.png differ
diff --git a/src/assets/servant/skadi_01.png b/src/assets/servant/skadi_01.png
new file mode 100644
index 0000000..dfd43f3
Binary files /dev/null and b/src/assets/servant/skadi_01.png differ
diff --git a/src/assets/servant/skadi_02.png b/src/assets/servant/skadi_02.png
new file mode 100644
index 0000000..3218553
Binary files /dev/null and b/src/assets/servant/skadi_02.png differ
diff --git a/src/assets/servant/skadi_03.png b/src/assets/servant/skadi_03.png
new file mode 100644
index 0000000..a9687e6
Binary files /dev/null and b/src/assets/servant/skadi_03.png differ
diff --git a/src/assets/servant/tamamo_03.png b/src/assets/servant/tamamo_03.png
new file mode 100644
index 0000000..167e061
Binary files /dev/null and b/src/assets/servant/tamamo_03.png differ
diff --git a/src/assets/servant/waver_02.png b/src/assets/servant/waver_02.png
new file mode 100644
index 0000000..1860bc6
Binary files /dev/null and b/src/assets/servant/waver_02.png differ
diff --git a/src/assets/servant/wu_01.png b/src/assets/servant/wu_01.png
new file mode 100644
index 0000000..6c8b774
Binary files /dev/null and b/src/assets/servant/wu_01.png differ
diff --git a/static/assets/shishousad.webp b/src/assets/shishousad.webp
similarity index 100%
rename from static/assets/shishousad.webp
rename to src/assets/shishousad.webp
diff --git a/static/assets/social/custom-fgo.webp b/src/assets/social/custom-fgo.webp
similarity index 100%
rename from static/assets/social/custom-fgo.webp
rename to src/assets/social/custom-fgo.webp
diff --git a/static/assets/social/discord.webp b/src/assets/social/discord.webp
similarity index 100%
rename from static/assets/social/discord.webp
rename to src/assets/social/discord.webp
diff --git a/static/assets/social/reddit.webp b/src/assets/social/reddit.webp
similarity index 100%
rename from static/assets/social/reddit.webp
rename to src/assets/social/reddit.webp
diff --git a/static/assets/social/twitch.webp b/src/assets/social/twitch.webp
similarity index 100%
rename from static/assets/social/twitch.webp
rename to src/assets/social/twitch.webp
diff --git a/static/assets/social/twitter.webp b/src/assets/social/twitter.webp
similarity index 100%
rename from static/assets/social/twitter.webp
rename to src/assets/social/twitter.webp
diff --git a/static/assets/social/youtube.webp b/src/assets/social/youtube.webp
similarity index 100%
rename from static/assets/social/youtube.webp
rename to src/assets/social/youtube.webp
diff --git a/static/assets/ta_icons/___albion.webp b/src/assets/ta_icons/___albion.webp
similarity index 100%
rename from static/assets/ta_icons/___albion.webp
rename to src/assets/ta_icons/___albion.webp
diff --git a/static/assets/ta_icons/__albion.webp b/src/assets/ta_icons/__albion.webp
similarity index 100%
rename from static/assets/ta_icons/__albion.webp
rename to src/assets/ta_icons/__albion.webp
diff --git a/static/assets/ta_icons/abyssalworm.webp b/src/assets/ta_icons/abyssalworm.webp
similarity index 100%
rename from static/assets/ta_icons/abyssalworm.webp
rename to src/assets/ta_icons/abyssalworm.webp
diff --git a/static/assets/ta_icons/albion.webp b/src/assets/ta_icons/albion.webp
similarity index 100%
rename from static/assets/ta_icons/albion.webp
rename to src/assets/ta_icons/albion.webp
diff --git a/static/assets/ta_icons/arthur.webp b/src/assets/ta_icons/arthur.webp
similarity index 100%
rename from static/assets/ta_icons/arthur.webp
rename to src/assets/ta_icons/arthur.webp
diff --git a/static/assets/ta_icons/barghest.webp b/src/assets/ta_icons/barghest.webp
similarity index 100%
rename from static/assets/ta_icons/barghest.webp
rename to src/assets/ta_icons/barghest.webp
diff --git a/static/assets/ta_icons/caenis.webp b/src/assets/ta_icons/caenis.webp
similarity index 100%
rename from static/assets/ta_icons/caenis.webp
rename to src/assets/ta_icons/caenis.webp
diff --git a/static/assets/ta_icons/calamityofnorwich.webp b/src/assets/ta_icons/calamityofnorwich.webp
similarity index 100%
rename from static/assets/ta_icons/calamityofnorwich.webp
rename to src/assets/ta_icons/calamityofnorwich.webp
diff --git a/static/assets/ta_icons/cernnunos.webp b/src/assets/ta_icons/cernnunos.webp
similarity index 100%
rename from static/assets/ta_icons/cernnunos.webp
rename to src/assets/ta_icons/cernnunos.webp
diff --git a/static/assets/ta_icons/db.webp b/src/assets/ta_icons/db.webp
similarity index 100%
rename from static/assets/ta_icons/db.webp
rename to src/assets/ta_icons/db.webp
diff --git a/static/assets/ta_icons/dioscuri.webp b/src/assets/ta_icons/dioscuri.webp
similarity index 100%
rename from static/assets/ta_icons/dioscuri.webp
rename to src/assets/ta_icons/dioscuri.webp
diff --git a/static/assets/ta_icons/douman.webp b/src/assets/ta_icons/douman.webp
similarity index 100%
rename from static/assets/ta_icons/douman.webp
rename to src/assets/ta_icons/douman.webp
diff --git a/static/assets/ta_icons/erice.webp b/src/assets/ta_icons/erice.webp
similarity index 100%
rename from static/assets/ta_icons/erice.webp
rename to src/assets/ta_icons/erice.webp
diff --git a/static/assets/ta_icons/fuuma.webp b/src/assets/ta_icons/fuuma.webp
similarity index 100%
rename from static/assets/ta_icons/fuuma.webp
rename to src/assets/ta_icons/fuuma.webp
diff --git a/static/assets/ta_icons/galatea.webp b/src/assets/ta_icons/galatea.webp
similarity index 100%
rename from static/assets/ta_icons/galatea.webp
rename to src/assets/ta_icons/galatea.webp
diff --git a/static/assets/ta_icons/goetia.webp b/src/assets/ta_icons/goetia.webp
similarity index 100%
rename from static/assets/ta_icons/goetia.webp
rename to src/assets/ta_icons/goetia.webp
diff --git a/static/assets/ta_icons/ibuki.webp b/src/assets/ta_icons/ibuki.webp
similarity index 100%
rename from static/assets/ta_icons/ibuki.webp
rename to src/assets/ta_icons/ibuki.webp
diff --git a/static/assets/ta_icons/izumo.webp b/src/assets/ta_icons/izumo.webp
similarity index 100%
rename from static/assets/ta_icons/izumo.webp
rename to src/assets/ta_icons/izumo.webp
diff --git a/static/assets/ta_icons/kamasummer.webp b/src/assets/ta_icons/kamasummer.webp
similarity index 100%
rename from static/assets/ta_icons/kamasummer.webp
rename to src/assets/ta_icons/kamasummer.webp
diff --git a/static/assets/ta_icons/kingprotea.webp b/src/assets/ta_icons/kingprotea.webp
similarity index 100%
rename from static/assets/ta_icons/kingprotea.webp
rename to src/assets/ta_icons/kingprotea.webp
diff --git a/static/assets/ta_icons/kirschtaria.webp b/src/assets/ta_icons/kirschtaria.webp
similarity index 100%
rename from static/assets/ta_icons/kirschtaria.webp
rename to src/assets/ta_icons/kirschtaria.webp
diff --git a/static/assets/ta_icons/kiyohime.webp b/src/assets/ta_icons/kiyohime.webp
similarity index 100%
rename from static/assets/ta_icons/kiyohime.webp
rename to src/assets/ta_icons/kiyohime.webp
diff --git a/static/assets/ta_icons/koyo.webp b/src/assets/ta_icons/koyo.webp
similarity index 100%
rename from static/assets/ta_icons/koyo.webp
rename to src/assets/ta_icons/koyo.webp
diff --git a/static/assets/ta_icons/melusine.webp b/src/assets/ta_icons/melusine.webp
similarity index 100%
rename from static/assets/ta_icons/melusine.webp
rename to src/assets/ta_icons/melusine.webp
diff --git a/static/assets/ta_icons/mhxx.webp b/src/assets/ta_icons/mhxx.webp
similarity index 100%
rename from static/assets/ta_icons/mhxx.webp
rename to src/assets/ta_icons/mhxx.webp
diff --git a/static/assets/ta_icons/morgan.webp b/src/assets/ta_icons/morgan.webp
similarity index 100%
rename from static/assets/ta_icons/morgan.webp
rename to src/assets/ta_icons/morgan.webp
diff --git a/static/assets/ta_icons/moriarty.webp b/src/assets/ta_icons/moriarty.webp
similarity index 100%
rename from static/assets/ta_icons/moriarty.webp
rename to src/assets/ta_icons/moriarty.webp
diff --git a/static/assets/ta_icons/nobunaga.webp b/src/assets/ta_icons/nobunaga.webp
similarity index 100%
rename from static/assets/ta_icons/nobunaga.webp
rename to src/assets/ta_icons/nobunaga.webp
diff --git a/static/assets/ta_icons/odysseus.webp b/src/assets/ta_icons/odysseus.webp
similarity index 100%
rename from static/assets/ta_icons/odysseus.webp
rename to src/assets/ta_icons/odysseus.webp
diff --git a/static/assets/ta_icons/orion.webp b/src/assets/ta_icons/orion.webp
similarity index 100%
rename from static/assets/ta_icons/orion.webp
rename to src/assets/ta_icons/orion.webp
diff --git a/static/assets/ta_icons/penth.webp b/src/assets/ta_icons/penth.webp
similarity index 100%
rename from static/assets/ta_icons/penth.webp
rename to src/assets/ta_icons/penth.webp
diff --git a/static/assets/ta_icons/reddragon.webp b/src/assets/ta_icons/reddragon.webp
similarity index 100%
rename from static/assets/ta_icons/reddragon.webp
rename to src/assets/ta_icons/reddragon.webp
diff --git a/static/assets/ta_icons/santagale.webp b/src/assets/ta_icons/santagale.webp
similarity index 100%
rename from static/assets/ta_icons/santagale.webp
rename to src/assets/ta_icons/santagale.webp
diff --git a/static/assets/ta_icons/sei.webp b/src/assets/ta_icons/sei.webp
similarity index 100%
rename from static/assets/ta_icons/sei.webp
rename to src/assets/ta_icons/sei.webp
diff --git a/static/assets/ta_icons/shibata.webp b/src/assets/ta_icons/shibata.webp
similarity index 100%
rename from static/assets/ta_icons/shibata.webp
rename to src/assets/ta_icons/shibata.webp
diff --git a/static/assets/ta_icons/skadi.webp b/src/assets/ta_icons/skadi.webp
similarity index 100%
rename from static/assets/ta_icons/skadi.webp
rename to src/assets/ta_icons/skadi.webp
diff --git a/static/assets/ta_icons/solomon.webp b/src/assets/ta_icons/solomon.webp
similarity index 100%
rename from static/assets/ta_icons/solomon.webp
rename to src/assets/ta_icons/solomon.webp
diff --git a/src/assets/ta_icons/ta_servants/caren.png b/src/assets/ta_icons/ta_servants/caren.png
new file mode 100644
index 0000000..e7cedcd
Binary files /dev/null and b/src/assets/ta_icons/ta_servants/caren.png differ
diff --git a/src/assets/ta_icons/ta_servants/jalter.png b/src/assets/ta_icons/ta_servants/jalter.png
new file mode 100644
index 0000000..cf91568
Binary files /dev/null and b/src/assets/ta_icons/ta_servants/jalter.png differ
diff --git a/src/assets/ta_icons/ta_servants/kama.png b/src/assets/ta_icons/ta_servants/kama.png
new file mode 100644
index 0000000..3a24974
Binary files /dev/null and b/src/assets/ta_icons/ta_servants/kama.png differ
diff --git a/src/assets/ta_icons/ta_servants/musashi.png b/src/assets/ta_icons/ta_servants/musashi.png
new file mode 100644
index 0000000..0166148
Binary files /dev/null and b/src/assets/ta_icons/ta_servants/musashi.png differ
diff --git a/src/assets/ta_icons/ta_servants/saberalter.png b/src/assets/ta_icons/ta_servants/saberalter.png
new file mode 100644
index 0000000..a93e190
Binary files /dev/null and b/src/assets/ta_icons/ta_servants/saberalter.png differ
diff --git a/src/assets/ta_icons/ta_servants/shishou.png b/src/assets/ta_icons/ta_servants/shishou.png
new file mode 100644
index 0000000..9485dd9
Binary files /dev/null and b/src/assets/ta_icons/ta_servants/shishou.png differ
diff --git a/src/assets/ta_icons/ta_servants/skadi.png b/src/assets/ta_icons/ta_servants/skadi.png
new file mode 100644
index 0000000..c09fc84
Binary files /dev/null and b/src/assets/ta_icons/ta_servants/skadi.png differ
diff --git a/src/assets/ta_icons/ta_servants/summerjalter.png b/src/assets/ta_icons/ta_servants/summerjalter.png
new file mode 100644
index 0000000..3c896b4
Binary files /dev/null and b/src/assets/ta_icons/ta_servants/summerjalter.png differ
diff --git a/src/assets/ta_icons/ta_servants/summermusashi.png b/src/assets/ta_icons/ta_servants/summermusashi.png
new file mode 100644
index 0000000..23fa917
Binary files /dev/null and b/src/assets/ta_icons/ta_servants/summermusashi.png differ
diff --git a/src/assets/ta_icons/ta_servants/summershishou.png b/src/assets/ta_icons/ta_servants/summershishou.png
new file mode 100644
index 0000000..0dc2c16
Binary files /dev/null and b/src/assets/ta_icons/ta_servants/summershishou.png differ
diff --git a/src/assets/ta_icons/ta_servants/tamamocat.png b/src/assets/ta_icons/ta_servants/tamamocat.png
new file mode 100644
index 0000000..da03fe6
Binary files /dev/null and b/src/assets/ta_icons/ta_servants/tamamocat.png differ
diff --git a/src/assets/ta_icons/ta_servants/tomoe.png b/src/assets/ta_icons/ta_servants/tomoe.png
new file mode 100644
index 0000000..b4df46e
Binary files /dev/null and b/src/assets/ta_icons/ta_servants/tomoe.png differ
diff --git a/src/assets/ta_icons/ta_servants/tomoesummer.png b/src/assets/ta_icons/ta_servants/tomoesummer.png
new file mode 100644
index 0000000..ab72529
Binary files /dev/null and b/src/assets/ta_icons/ta_servants/tomoesummer.png differ
diff --git a/static/assets/ta_icons/taira.webp b/src/assets/ta_icons/taira.webp
similarity index 100%
rename from static/assets/ta_icons/taira.webp
rename to src/assets/ta_icons/taira.webp
diff --git a/static/assets/ta_icons/woodwose.webp b/src/assets/ta_icons/woodwose.webp
similarity index 100%
rename from static/assets/ta_icons/woodwose.webp
rename to src/assets/ta_icons/woodwose.webp
diff --git a/static/assets/ta_icons/zenobia.webp b/src/assets/ta_icons/zenobia.webp
similarity index 100%
rename from static/assets/ta_icons/zenobia.webp
rename to src/assets/ta_icons/zenobia.webp
diff --git a/static/assets/technologies/astro.webp b/src/assets/technologies/astro.webp
similarity index 100%
rename from static/assets/technologies/astro.webp
rename to src/assets/technologies/astro.webp
diff --git a/static/assets/technologies/docker.webp b/src/assets/technologies/docker.webp
similarity index 100%
rename from static/assets/technologies/docker.webp
rename to src/assets/technologies/docker.webp
diff --git a/src/assets/technologies/dockge.png b/src/assets/technologies/dockge.png
new file mode 100644
index 0000000..695aeb7
Binary files /dev/null and b/src/assets/technologies/dockge.png differ
diff --git a/static/assets/technologies/forgejo.webp b/src/assets/technologies/forgejo.webp
similarity index 100%
rename from static/assets/technologies/forgejo.webp
rename to src/assets/technologies/forgejo.webp
diff --git a/static/assets/technologies/nodejs.webp b/src/assets/technologies/nodejs.webp
similarity index 100%
rename from static/assets/technologies/nodejs.webp
rename to src/assets/technologies/nodejs.webp
diff --git a/static/assets/technologies/serve.webp b/src/assets/technologies/serve.webp
similarity index 100%
rename from static/assets/technologies/serve.webp
rename to src/assets/technologies/serve.webp
diff --git a/static/assets/technologies/typescript.webp b/src/assets/technologies/typescript.webp
similarity index 100%
rename from static/assets/technologies/typescript.webp
rename to src/assets/technologies/typescript.webp
diff --git a/static/assets/technologies/unlighthouse.webp b/src/assets/technologies/unlighthouse.webp
similarity index 100%
rename from static/assets/technologies/unlighthouse.webp
rename to src/assets/technologies/unlighthouse.webp
diff --git a/src/components/ceCard.astro b/src/components/ceCard.astro
index 5d154d4..deed4d9 100644
--- a/src/components/ceCard.astro
+++ b/src/components/ceCard.astro
@@ -1,16 +1,21 @@
 ---
+import type { ImageMetadata } from 'astro'
+import { Image } from 'astro:assets'
+import mlb_ce from '../assets/ce/mlb.webp'
+
 export interface Props {
   name: string
-  link: string
+  imageFile: string
   mlb: string
 }
 
-const { mlb, link, name } = Astro.props
+const { mlb, imageFile, name } = Astro.props
+const imagePath = `/src/assets/ce/${imageFile}`
+const images_ces = import.meta.glob<{ default: ImageMetadata }>(
+  '/src/assets/ce/*.{png,webp}'
+)
 
-const ce_img: string = `/assets/ce/${link}.webp`
-const mlb_ce: string = `/assets/ce/mlb.webp`
 let mlb_image: string = 'mlbalign'
-
 if (mlb === 'false') {
   mlb_image = 'hidemlb'
 }
@@ -18,10 +23,10 @@ if (mlb === 'false') {
 
 <article>
   <div>
-    <img class="ce-crop" src={ce_img} alt={name} />
+    <Image src={images_ces[imagePath]()} alt={name} class="ce-crop" />
   </div>
   <div class={mlb_image}>
-    <img class="mlb" src={mlb_ce} alt="Max-limit broken" />
+    <Image src={mlb_ce} alt="Max-limit broken" class="mlb" />
   </div>
 </article>
 
@@ -86,6 +91,7 @@ if (mlb === 'false') {
 
   .mlb {
     width: 5.5rem;
+    height: auto;
     margin-left: auto;
     margin-right: auto;
   }
diff --git a/src/components/contactCard.astro b/src/components/contactCard.astro
index 1317487..6a43077 100644
--- a/src/components/contactCard.astro
+++ b/src/components/contactCard.astro
@@ -1,20 +1,25 @@
 ---
+import type { ImageMetadata } from 'astro'
+import { Image } from 'astro:assets'
+
 export interface Props {
   site: string
   link: string
-  image: string
+  imageFile: string
 }
 
-const { image, link, site } = Astro.props
-const icon: string = `background-image: url('/assets/social/${image}.webp')`
+const { imageFile, link, site } = Astro.props
+const imagePath = `/src/assets/social/${imageFile}`
+const images_logos = import.meta.glob<{ default: ImageMetadata }>(
+  '/src/assets/social/*.{png,webp}'
+)
 ---
 
 <a href={link} target="_blank" rel="noopener noreferrer" aria-label={site}>
   <article class="contact do-hover">
-    <div style={icon}>
-      <span>
-        <h2>{site}</h2>
-      </span>
+    <Image src={images_logos[imagePath]()} alt="" />
+    <div>
+      <h2>{site}</h2>
     </div>
   </article>
 </a>
@@ -24,18 +29,29 @@ const icon: string = `background-image: url('/assets/social/${image}.webp')`
     text-decoration: none;
   }
 
-  article div {
-    border-radius: 1.25rem;
-    background-size: contain;
-    display: flex;
-    align-items: center;
-    justify-content: center;
+  article {
     --size-value: 6.25rem;
+    border-radius: 1.25rem;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    background-color: var(--c-darkergray);
+    border-color: var(--c-darkgray);
+    padding: 10px;
+    text-align: center;
+    transition: transform var(--speed) var(--ease);
+    height: auto;
+    width: auto;
+    position: relative;
+  }
+
+  article img {
+    border-radius: 1.25rem;
     width: var(--size-value);
     height: var(--size-value);
   }
 
-  article:hover span {
+  article:hover div {
     border-radius: 1.25rem;
     padding: 0 0.5rem;
     display: flex;
@@ -43,9 +59,11 @@ const icon: string = `background-image: url('/assets/social/${image}.webp')`
     justify-content: center;
     text-align: center;
     background-color: var(--c-darkgray);
-    height: calc(var(--size-value) + 0.1rem);
-    width: calc(var(--size-value) + 0.1rem);
+    height: calc(var(--size-value));
+    width: calc(var(--size-value) - 1rem);
     opacity: 90%;
+    z-index: 100;
+    position: absolute;
   }
 
   article:hover h2 {
@@ -57,25 +75,14 @@ const icon: string = `background-image: url('/assets/social/${image}.webp')`
   }
 
   article h2 {
+    position: absolute;
     display: none;
   }
 
-  article span {
+  article div {
     display: none;
   }
-  article {
-    border-radius: 1.25rem;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    background-color: var(--c-darkergray);
-    border-color: var(--c-darkgray);
-    padding: 10px;
-    text-align: center;
-    transition: transform var(--speed) var(--ease);
-    height: auto;
-    width: auto;
-  }
+
   a:hover {
     transform: scale(var(--hover-scale));
   }
diff --git a/src/components/favouriteCard.astro b/src/components/favouriteCard.astro
index 9cf6c4b..897e139 100644
--- a/src/components/favouriteCard.astro
+++ b/src/components/favouriteCard.astro
@@ -1,19 +1,22 @@
 ---
+import type { ImageMetadata } from 'astro';
+import { Image } from 'astro:assets';
+
 export interface Props {
   name: string
   origin: string
-  image: string
+  imageFile: string
   link: string
 }
 
-const { link, image, origin, name } = Astro.props
-
-const img: string = `/assets/favourites/${image}.webp`
+const { link, imageFile, origin, name } = Astro.props
+const imagePath = `/src/assets/favourites/${imageFile}`
+const images = import.meta.glob<{ default: ImageMetadata }>('/src/assets/favourites/*.{png,webp}')
 ---
 
 <a href={link} target="_blank" rel="noopener noreferrer">
   <div class="heading">{name}</div>
-  <img src={img} alt={name} />
+  <Image src={images[imagePath]()} alt={name} />
   <h2 class="subtext">
     {origin}
   </h2>
diff --git a/src/components/navbar.astro b/src/components/navbar.astro
index bed56e2..d4a6971 100644
--- a/src/components/navbar.astro
+++ b/src/components/navbar.astro
@@ -1,9 +1,11 @@
 ---
+import { Image } from 'astro:assets';
+import logo from '../assets/logo.svg'
 ---
 
 <header>
   <a href="/" rel="noopener noreferrer" aria-label="Home">
-    <img src="/assets/logo.svg" alt="" />
+    <Image src={logo} alt="Website Logo"/>
   </a>
   <ul class="desktop">
     <slot />
diff --git a/src/components/servantCard.astro b/src/components/servantCard.astro
index 8151cb2..22390d2 100644
--- a/src/components/servantCard.astro
+++ b/src/components/servantCard.astro
@@ -1,36 +1,40 @@
 ---
+import type { ImageMetadata } from 'astro';
+import { Image } from 'astro:assets';
+
 export interface Props {
   name: string
   level: string
   skills: string
   np: string
-  image_servant: string
-  image_bond: string
+  servantImageFile: string
+  bondceImageFile: string
   ml: string
-  bond10: string
+  bond10: boolean
 }
 
-const { bond10, ml, image_bond, image_servant, np, skills, level, name } =
-  Astro.props
+const { bond10, ml, bondceImageFile, servantImageFile, np, skills, level, name } = Astro.props
+const servantImagePath = `/src/assets/servant/${servantImageFile}`
+const bondceImagePath = `/src/assets/ce/bond-ce/${bondceImageFile}`
+const images_servants = import.meta.glob<{ default: ImageMetadata }>('/src/assets/servant/*.{png,webp}')
+const images_bond_ces = import.meta.glob<{ default: ImageMetadata }>('/src/assets/ce/bond-ce/*.{png,webp}')
 
-const servant_img: string = `/assets/servant/${image_servant}.webp`
-const bondce_img: string = `/assets/ce/bond-ce/${image_bond}.webp`
 let bondce_css: string = 'bond-ce'
 
-if (bond10 === 'false') {
+if (bond10 === false) {
   bondce_css += ' unobtained'
 }
 ---
 
 <article>
-  <img src={servant_img} alt={name} />
+  <Image src={images_servants[servantImagePath]()} alt={name} />
   <h2 class="subtext">
     Level {level}<br />
     {skills}<br />
     NP {np}
   </h2>
   <div class="expand-on-hover">
-    <img class={bondce_css} src={bondce_img} alt="" />
+    <Image src={images_bond_ces[bondceImagePath]()} alt="" class={bondce_css}/>
     <h2 class="subtext">Mana Loading: {ml === 'Not Unlocked' && <br />}{ml}</h2>
   </div>
 </article>
@@ -110,6 +114,7 @@ if (bond10 === 'false') {
 
   .bond-ce {
     padding-top: 0.75rem;
+    width: auto;
     height: 3rem;
   }
 
diff --git a/src/components/taCard.astro b/src/components/taCard.astro
index 9733b9d..8852ebc 100644
--- a/src/components/taCard.astro
+++ b/src/components/taCard.astro
@@ -1,15 +1,18 @@
 ---
+import type { ImageMetadata } from 'astro'
+import { Image } from 'astro:assets'
 export interface Props {
   date: string
   title: string
   link: string
-  image: string
+  targetImageFile: string
   user?: string
-  ta_servant?: string
+  servantImageFile?: string
   turns?: string
 }
 
-const { turns, ta_servant, user, date, image, link, title } = Astro.props
+const { turns, targetImageFile, user, date, servantImageFile, link, title } =
+  Astro.props
 
 const options_date: Intl.DateTimeFormatOptions = {
   year: 'numeric',
@@ -17,9 +20,16 @@ const options_date: Intl.DateTimeFormatOptions = {
   day: '2-digit',
 }
 
+const targetImagePath = `/src/assets/ta_icons/${targetImageFile}`
+const servantImagePath = `/src/assets/ta_icons/ta_servants/${servantImageFile}`
+
 const formatted_date = new Date(date).toLocaleDateString('de-DE', options_date)
-const icon: string = `background-image: url('/assets/ta_icons/${image}.webp')`
-const servant: string = `/assets/ta_icons/ta_servants/${ta_servant}.webp`
+const target_images = import.meta.glob<{ default: ImageMetadata }>(
+  '/src/assets/ta_icons/*.{png,webp}'
+)
+const servant_images = import.meta.glob<{ default: ImageMetadata }>(
+  '/src/assets/ta_icons/ta_servants/*.{png,webp}'
+)
 
 let hasuser = ''
 if (user !== undefined) {
@@ -29,10 +39,9 @@ if (user !== undefined) {
 
 <a href={link} target="_blank" rel="noopener noreferrer" aria-label={title}>
   <article>
-    <div class="icon" style={icon}>
-      <span>
-        <h2>{title}</h2>
-      </span>
+    <Image src={target_images[targetImagePath]()} alt={title} class="icon" />
+    <div class="title">
+      <h2>{title}</h2>
     </div>
     <p>
       <span class={hasuser}>
@@ -41,22 +50,29 @@ if (user !== undefined) {
       {formatted_date}
     </p>
     <div class="expand-on-hover">
-      <img src={servant} alt="" />
+      <Image src={servant_images[servantImagePath ?? 'undefined']()} alt="" />
       <h2>{turns}</h2>
     </div>
   </article>
 </a>
 
 <style>
+  div {
+    display: none;
+  }
+
   span {
     display: none;
   }
+
   .hasuser {
     display: flex;
   }
+
   a {
     text-decoration: none;
   }
+
   article {
     background-color: var(--c-darkergray);
     border-color: var(--c-darkgray);
@@ -65,23 +81,28 @@ if (user !== undefined) {
     transition: transform var(--speed) var(--ease);
     height: auto;
     width: auto;
+    max-width: 8rem;
     border-radius: 1.25rem;
     padding-bottom: 1.5rem;
+    --size-value: 7rem;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    flex-direction: column;
   }
+
   article:hover {
     transform: scale(var(--hover-scale));
   }
+
   article > .icon {
     border-radius: 1.25rem;
-    --size-value: 7rem;
     width: var(--size-value);
     height: var(--size-value);
     margin: 0.5rem;
-    background-size: var(--size-value);
-    background-position: center center;
   }
 
-  article:hover .icon span {
+  article:hover .title {
     display: flex;
     position: absolute;
     align-items: center;
@@ -92,9 +113,10 @@ if (user !== undefined) {
     width: calc(var(--size-value) + 0.1rem);
     opacity: 90%;
     border-radius: 1.25rem;
+    top: 1.1em;
   }
 
-  article:hover span h2 {
+  article:hover .title h2 {
     margin: 0;
     display: inline-flex;
     font-weight: bold;
@@ -104,11 +126,11 @@ if (user !== undefined) {
     padding: 0.5rem;
   }
 
-  article span h2 {
+  article .title h2 {
     display: none;
   }
 
-  article .icon span {
+  article .title {
     display: none;
   }
 
diff --git a/src/components/technologyCard.astro b/src/components/technologyCard.astro
index 55f2e8d..7b1d081 100644
--- a/src/components/technologyCard.astro
+++ b/src/components/technologyCard.astro
@@ -1,21 +1,25 @@
 ---
+import type { ImageMetadata } from 'astro'
+import { Image } from 'astro:assets'
+
 export interface Props {
   title: string
   link: string
-  image: string
+  imageFile: string
 }
 
-const { image, link, title } = Astro.props
-
-const icon: string = `background-image: url('/assets/technologies/${image}.webp')`
+const { imageFile, link, title } = Astro.props
+const imagePath = `/src/assets/technologies/${imageFile}`
+const images_logos = import.meta.glob<{ default: ImageMetadata }>(
+  '/src/assets/technologies/*.{png,webp}'
+)
 ---
 
 <a href={link} target="_blank" rel="noopener noreferrer" aria-label={title}>
   <article>
-    <div style={icon}>
-      <span>
-        <h2>{title}</h2>
-      </span>
+    <Image src={images_logos[imagePath]()} alt="" />
+    <div>
+      <h2>{title}</h2>
     </div>
   </article>
 </a>
@@ -25,31 +29,31 @@ const icon: string = `background-image: url('/assets/technologies/${image}.webp'
     text-decoration: none;
   }
   article {
+    --size-value: 6.25rem;
     background-color: var(--c-darkergray);
     border-color: var(--c-darkgray);
     padding: 10px;
+    display: flex;
+    justify-content: center;
+    align-items: center;
     text-align: center;
     transition: transform var(--speed) var(--ease);
     height: auto;
     width: auto;
     line-height: 100px;
     border-radius: 1.25rem;
+    position: relative;
   }
   article:hover {
     transform: scale(var(--hover-scale));
   }
-  article > div {
+  article > img {
     border-radius: 1.25rem;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-    background-size: contain;
-    --size-value: 6.25rem;
     width: var(--size-value);
     height: var(--size-value);
   }
 
-  article:hover span {
+  article:hover div {
     border-radius: 1.25rem;
     padding: 0 0.5rem;
     display: flex;
@@ -57,13 +61,16 @@ const icon: string = `background-image: url('/assets/technologies/${image}.webp'
     justify-content: center;
     text-align: center;
     background-color: var(--c-darkgray);
-    height: calc(var(--size-value) + 0.1rem);
-    width: calc(var(--size-value) + 0.1rem);
+    height: calc(var(--size-value));
+    width: calc(var(--size-value) - 1rem);
     opacity: 90%;
+    z-index: 100;
+    position: absolute;
   }
 
   article:hover h2 {
     margin: 0;
+    position: absolute;
     display: inline-flex;
     font-weight: bold;
     color: white;
@@ -75,7 +82,7 @@ const icon: string = `background-image: url('/assets/technologies/${image}.webp'
     display: none;
   }
 
-  article span {
+  article div {
     display: none;
   }
 </style>
diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro
index 8c385ba..737ae61 100644
--- a/src/layouts/Layout.astro
+++ b/src/layouts/Layout.astro
@@ -1,7 +1,7 @@
 ---
 import Navbar from '../components/navbar.astro'
 import NavbarEntry from '../components/navbarEntry.astro'
-import navdata from '../../static/assets/data/_navdata.json'
+import navdata from '../../static/data/_navdata.json'
 
 export interface Props {
   title: string
@@ -45,7 +45,7 @@ if (currentpage !== 'home') {
       content="SmcWcewh7DCANcLeTe3ntU0R-LESbo_bsolICJnmulE"
     />
     <!-- Links -->
-    <link rel="icon" type="image/ico" href="/assets/favicon.ico" />
+    <link rel="icon" type="image/ico" href="/favicon.ico" />
     <link rel="sitemap" href="/sitemap-index.xml" />
     <link href="https://mastodon.neshweb.net/@Firq" rel="me" />
     <link
diff --git a/src/layouts/aboutSection.astro b/src/layouts/aboutSection.astro
index cd89b5e..04465ad 100644
--- a/src/layouts/aboutSection.astro
+++ b/src/layouts/aboutSection.astro
@@ -15,15 +15,19 @@ const { title } = Astro.props
 
 <style>
   h1 {
-    font-size: 26px;
-    line-height: 32px;
+    font-size: 40px;
+    line-height: 48px;
     letter-spacing: -1px;
     color: white;
-    margin: 0.5rem 0.75rem 0.5rem 0.75rem;
+    font-size: 2.25rem;
+    margin-top: 1rem;
+    margin-bottom: 0;
+    margin-left: auto;
+    margin-right: auto;
     padding: 0.25rem 0.75rem;
-    width: max-content;
+    max-width: max-content;
     background-color: var(--c-darkgray);
-    padding: 0.25rem 1rem;
+    padding: 0.25rem 1.5rem;
     border-radius: 0.5rem;
     padding-bottom: 0.5rem;
   }
@@ -61,4 +65,10 @@ const { title } = Astro.props
       justify-content: left;
     }
   }
+
+  @media (min-width: 520px) {
+    h1 {
+      margin: 0.5rem 0.75rem 0.5rem 0.75rem;
+    }
+  }
 </style>
diff --git a/src/layouts/blogSection.astro b/src/layouts/blogSection.astro
index 9855446..f6084bc 100644
--- a/src/layouts/blogSection.astro
+++ b/src/layouts/blogSection.astro
@@ -83,6 +83,9 @@ const { title } = Astro.props
     .line {
       margin-left: 2.1rem;
     }
+    h1 {
+      margin-left: 3rem;
+    }
   }
   @media (min-width: 1500px) {
     .wrapper {
diff --git a/src/layouts/customFooter.astro b/src/layouts/customFooter.astro
index fefa3cd..915eed2 100644
--- a/src/layouts/customFooter.astro
+++ b/src/layouts/customFooter.astro
@@ -1,4 +1,9 @@
 ---
+import okita from '../assets/okita.png'
+import atlas from '../assets/atlas.png'
+import foxcat from '../assets/lurker.png'
+import padoru from '../assets/padoru.png'
+import { Image } from 'astro:assets';
 ---
 
 <footer>
@@ -24,7 +29,7 @@
       rel="noopener noreferrer">Atlas Academy</a
     > for providing the servant and ce images.
     <div class="sticky-image-wrapper">
-      <img src="/assets/atlas.png" alt="" />
+      <Image src={atlas} alt="Icon of Atlas Academy" />
     </div>
   </div>
   <br />
@@ -40,7 +45,7 @@
       rel="noopener noreferrer">FGO Timers here</a
     >
     <div class="sticky-image-wrapper">
-      <img src="/assets/lurker.png" alt="" />
+      <Image src={foxcat} alt="Best Foxcat" />
     </div>
   </div>
   <br />
@@ -54,7 +59,7 @@
       >his site here</a
     >
     <div class="sticky-image-wrapper">
-      <img src="/assets/okita.png" alt="" style="height:60px" />
+      <Image src={okita} alt="" style="height:60px" />
     </div>
   </div>
   <br />
@@ -65,7 +70,7 @@
       rel="noopener noreferrer">AnthonyJ</a
     > for providing me with the custom Shishou favicon.
     <div class="sticky-image-wrapper">
-      <img src="/assets/padoru.png" alt="" />
+      <Image src={padoru} alt="Hashire sori yo ..." />
     </div>
   </div>
 </footer>
diff --git a/src/pages/404.astro b/src/pages/404.astro
index 1d9071f..cad8fa0 100644
--- a/src/pages/404.astro
+++ b/src/pages/404.astro
@@ -1,6 +1,8 @@
 ---
+import { Image } from 'astro:assets'
 import Layout from '../layouts/Layout.astro'
 import BaseSection from '../layouts/baseSection.astro'
+import sadshishou from '../assets/shishousad.webp'
 
 const description = "Error. This shouldn't happen :/"
 ---
@@ -12,7 +14,7 @@ const description = "Error. This shouldn't happen :/"
 >
   <BaseSection title="FirqhundredandFirq - Not Found">
     <div>
-      <img src="/assets/shishousad.webp" alt="Sad Shishou" />
+      <Image src={sadshishou} alt="Sad Shishou" />
       <h2>Well ... you were not supposed to end up here.</h2>
       <a href="/" aria-label="Home" rel="noopener noreferrer">
         <i class="iconoir-fast-arrow-left"></i>Go back home
diff --git a/src/pages/about.astro b/src/pages/about.astro
index 10051ec..bc59882 100644
--- a/src/pages/about.astro
+++ b/src/pages/about.astro
@@ -4,11 +4,11 @@ import AboutSection from '../layouts/aboutSection.astro'
 
 import ContactSection from '../layouts/contactSection.astro'
 import ContactCard from '../components/contactCard.astro'
-import contactdata from '../../static/assets/data/_contactdata.json'
+import contactdata from '../../static/data/_contactdata.json'
 
 import CustomFooter from '../layouts/customFooter.astro'
 import TechnologyCard from '../components/technologyCard.astro'
-import technologydata from '../../static/assets/data/_technologydata.json'
+import technologydata from '../../static/data/_technologydata.json'
 
 const description =
   "A summary of the technologies used as well as my contact information. You'll also find disclaimers and thank you notes for the people that helped me."
@@ -23,15 +23,15 @@ const description =
     This is a small sideproject that I'm creating. First time doing webdev in
     general, and first project using Typescript.
   </AboutSection>
-  <AboutSection title="Technologies used">
+  <ContactSection title="Technologies used">
     {technologydata.map((item) => <TechnologyCard {...item} />)}
-  </AboutSection>
+  </ContactSection>
   <ContactSection title="Contact me">
     {contactdata.map((item) => <ContactCard {...item} />)}
   </ContactSection>
-  <AboutSection title="Disclaimers">
+  <ContactSection title="Disclaimers">
     <CustomFooter />
-  </AboutSection>
+  </ContactSection>
 </Layout>
 
 <style></style>
diff --git a/src/pages/blog/deploying-this-round-2.md b/src/pages/blog/deploying-this-round-2.md
index 4f84624..1b536f8 100644
--- a/src/pages/blog/deploying-this-round-2.md
+++ b/src/pages/blog/deploying-this-round-2.md
@@ -124,11 +124,8 @@ FROM node:20.10.0-bookworm
 LABEL authorname="firq"
 WORKDIR /unlighthouse
 
-# renovate: datasource=repology depName=debian_12/chromium versioning=loose
 ENV CHROMIUM_VERSION="120.0.6099.109-1~deb12u1"
 ENV NODE_ENV='production'
-
-# Update path so executable can be run globally
 ENV PATH="/unlighthouse/node_modules/.bin:${PATH}"
 
 RUN apt-get update && apt-get -y install --no-install-recommends chromium=${CHROMIUM_VERSION} procps && rm -rf /var/lib/apt/lists/*
diff --git a/src/pages/blog/instant-death.md b/src/pages/blog/instant-death.md
index 7a4d732..5345928 100644
--- a/src/pages/blog/instant-death.md
+++ b/src/pages/blog/instant-death.md
@@ -7,7 +7,7 @@ author: 'Firq'
 tags: ['fgo', 'games']
 ---
 
-> **Disclaimer**<br>
+> **Disclaimer**<br/>
 > While writing this, Requiem and I faced a bit of a challenge concerning death rate calculations. Case in point is the passive "Item Construction"
 and its interaction with Instant Kill, as we could not reach a final verdict if it affects Instant Kill Hit rate or not. In case of this article, I will assume
 it doesn't interact with the hitrate, but if you have proof that this is different, I will gladly incorporate this in the article.
@@ -104,7 +104,7 @@ For other skill levels, this looks like this (_Her S1 scales from 50% to 100%_)
 In the end, this resulted in the following comp that worked like a charm.
 
 <div style="width: 100%; display: flex; justify-content: center; padding-top: 0.75rem">
-<iframe width="640" height="360" src="https://www.youtube-nocookie.com/embed/UwbNp_dB_VU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
+<iframe width="640" height="360" src="https://www.youtube-nocookie.com/embed/UwbNp_dB_VU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen loading="lazy"></iframe>
 </div>
 
 ## Conclusion
diff --git a/src/pages/index.astro b/src/pages/index.astro
index 2701e3d..a4b98c4 100644
--- a/src/pages/index.astro
+++ b/src/pages/index.astro
@@ -3,7 +3,7 @@ import Layout from '../layouts/Layout.astro'
 import Hero from '../components/hero.astro'
 import BaseSection from '../layouts/baseSection.astro'
 import FavouriteCard from '../components/favouriteCard.astro'
-import favouritesdata from '../../static/assets/data/_favouritesdata.json'
+import favouritesdata from '../../static/data/_favouritesdata.json'
 
 const description =
   'The very own page of Firq for providing informating about TA servants, listing past TA achievements and hosting a blog for talking about FGO, Programming and other stuff'
diff --git a/src/pages/servants.astro b/src/pages/servants.astro
index 61cacac..ab405a9 100644
--- a/src/pages/servants.astro
+++ b/src/pages/servants.astro
@@ -3,10 +3,10 @@ import Layout from '../layouts/Layout.astro'
 import BaseSection from '../layouts/baseSection.astro'
 
 import ServantCard from '../components/servantCard.astro'
-import servantdata from '../../static/assets/data/_servantdata.json'
+import servantdata from '../../static/data/_servantdata.json'
 
 import CeCard from '../components/ceCard.astro'
-import cedata from '../../static/assets/data/_cedata.json'
+import cedata from '../../static/data/_cedata.json'
 
 const description =
   'A list of all the servants and ces that Firq can offer up on support for TA.'
diff --git a/src/pages/ta-collection.astro b/src/pages/ta-collection.astro
index 69fe768..991f7b9 100644
--- a/src/pages/ta-collection.astro
+++ b/src/pages/ta-collection.astro
@@ -9,8 +9,8 @@ import Layout from '../layouts/Layout.astro'
 
 import TaSection from '../layouts/taSection.astro'
 import TaCard from '../components/taCard.astro'
-import tadata from '../../static/assets/data/_tadata.json'
-import featured_data from '../../static/assets/data/_featureddata.json'
+import tadata from '../../static/data/_tadata.json'
+import featured_data from '../../static/data/_featureddata.json'
 
 const important_data = tadata.filter(function (el) {
   return [
@@ -36,7 +36,7 @@ const description = 'A collection of TAs previously completed be Firq.'
   currentpage="ta-collection"
   descriptionOverride={description}
 >
-  <TaSection title="Notable TAs" abovetext="">
+  <TaSection title="Notable TAs" abovetext="My most notable TAs">
     {important_data.map((item) => <TaCard {...item} />)}
   </TaSection>
   <TaSection title="Completed TAs">
diff --git a/static/assets/ce/2030.webp b/static/assets/ce/2030.webp
deleted file mode 100644
index 42f9f02..0000000
Binary files a/static/assets/ce/2030.webp and /dev/null differ
diff --git a/static/assets/ce/500.webp b/static/assets/ce/500.webp
deleted file mode 100644
index 9f030df..0000000
Binary files a/static/assets/ce/500.webp and /dev/null differ
diff --git a/static/assets/ce/bg.webp b/static/assets/ce/bg.webp
deleted file mode 100644
index 133183c..0000000
Binary files a/static/assets/ce/bg.webp and /dev/null differ
diff --git a/static/assets/ce/bond-ce/bride.webp b/static/assets/ce/bond-ce/bride.webp
deleted file mode 100644
index 7642c43..0000000
Binary files a/static/assets/ce/bond-ce/bride.webp and /dev/null differ
diff --git a/static/assets/ce/bond-ce/castoria.webp b/static/assets/ce/bond-ce/castoria.webp
deleted file mode 100644
index fbe04b1..0000000
Binary files a/static/assets/ce/bond-ce/castoria.webp and /dev/null differ
diff --git a/static/assets/ce/bond-ce/chiron.webp b/static/assets/ce/bond-ce/chiron.webp
deleted file mode 100644
index 47a3a41..0000000
Binary files a/static/assets/ce/bond-ce/chiron.webp and /dev/null differ
diff --git a/static/assets/ce/bond-ce/crane.webp b/static/assets/ce/bond-ce/crane.webp
deleted file mode 100644
index 75db105..0000000
Binary files a/static/assets/ce/bond-ce/crane.webp and /dev/null differ
diff --git a/static/assets/ce/bond-ce/douman.webp b/static/assets/ce/bond-ce/douman.webp
deleted file mode 100644
index bc2c1b0..0000000
Binary files a/static/assets/ce/bond-ce/douman.webp and /dev/null differ
diff --git a/static/assets/ce/bond-ce/gogh.webp b/static/assets/ce/bond-ce/gogh.webp
deleted file mode 100644
index 0167200..0000000
Binary files a/static/assets/ce/bond-ce/gogh.webp and /dev/null differ
diff --git a/static/assets/ce/bond-ce/himiko.webp b/static/assets/ce/bond-ce/himiko.webp
deleted file mode 100644
index e904adc..0000000
Binary files a/static/assets/ce/bond-ce/himiko.webp and /dev/null differ
diff --git a/static/assets/ce/bond-ce/ibaraki.webp b/static/assets/ce/bond-ce/ibaraki.webp
deleted file mode 100644
index 3d5637e..0000000
Binary files a/static/assets/ce/bond-ce/ibaraki.webp and /dev/null differ
diff --git a/static/assets/ce/bond-ce/jane.webp b/static/assets/ce/bond-ce/jane.webp
deleted file mode 100644
index 921ca9b..0000000
Binary files a/static/assets/ce/bond-ce/jane.webp and /dev/null differ
diff --git a/static/assets/ce/bond-ce/koyanlight.webp b/static/assets/ce/bond-ce/koyanlight.webp
deleted file mode 100644
index 1eb3393..0000000
Binary files a/static/assets/ce/bond-ce/koyanlight.webp and /dev/null differ
diff --git a/static/assets/ce/bond-ce/liz.webp b/static/assets/ce/bond-ce/liz.webp
deleted file mode 100644
index e91f5ef..0000000
Binary files a/static/assets/ce/bond-ce/liz.webp and /dev/null differ
diff --git a/static/assets/ce/bond-ce/merlin.webp b/static/assets/ce/bond-ce/merlin.webp
deleted file mode 100644
index 363713a..0000000
Binary files a/static/assets/ce/bond-ce/merlin.webp and /dev/null differ
diff --git a/static/assets/ce/bond-ce/oberon.webp b/static/assets/ce/bond-ce/oberon.webp
deleted file mode 100644
index 24d9f79..0000000
Binary files a/static/assets/ce/bond-ce/oberon.webp and /dev/null differ
diff --git a/static/assets/ce/bond-ce/reines.webp b/static/assets/ce/bond-ce/reines.webp
deleted file mode 100644
index b9f4032..0000000
Binary files a/static/assets/ce/bond-ce/reines.webp and /dev/null differ
diff --git a/static/assets/ce/bond-ce/santagale.webp b/static/assets/ce/bond-ce/santagale.webp
deleted file mode 100644
index c55b578..0000000
Binary files a/static/assets/ce/bond-ce/santagale.webp and /dev/null differ
diff --git a/static/assets/ce/bond-ce/skadi.webp b/static/assets/ce/bond-ce/skadi.webp
deleted file mode 100644
index 4eb28de..0000000
Binary files a/static/assets/ce/bond-ce/skadi.webp and /dev/null differ
diff --git a/static/assets/ce/bond-ce/tamamo.webp b/static/assets/ce/bond-ce/tamamo.webp
deleted file mode 100644
index 07ea177..0000000
Binary files a/static/assets/ce/bond-ce/tamamo.webp and /dev/null differ
diff --git a/static/assets/ce/bond-ce/waver.webp b/static/assets/ce/bond-ce/waver.webp
deleted file mode 100644
index d2f31ae..0000000
Binary files a/static/assets/ce/bond-ce/waver.webp and /dev/null differ
diff --git a/static/assets/ce/bond-ce/wu.webp b/static/assets/ce/bond-ce/wu.webp
deleted file mode 100644
index 114a7e1..0000000
Binary files a/static/assets/ce/bond-ce/wu.webp and /dev/null differ
diff --git a/static/assets/ce/db.webp b/static/assets/ce/db.webp
deleted file mode 100644
index d702ac9..0000000
Binary files a/static/assets/ce/db.webp and /dev/null differ
diff --git a/static/assets/ce/kaleidoscope.webp b/static/assets/ce/kaleidoscope.webp
deleted file mode 100644
index ecf2659..0000000
Binary files a/static/assets/ce/kaleidoscope.webp and /dev/null differ
diff --git a/static/assets/ce/maidensteachings.webp b/static/assets/ce/maidensteachings.webp
deleted file mode 100644
index de565fb..0000000
Binary files a/static/assets/ce/maidensteachings.webp and /dev/null differ
diff --git a/static/assets/ce/merciless_one.webp b/static/assets/ce/merciless_one.webp
deleted file mode 100644
index 6122a5e..0000000
Binary files a/static/assets/ce/merciless_one.webp and /dev/null differ
diff --git a/static/assets/ce/outrage.webp b/static/assets/ce/outrage.webp
deleted file mode 100644
index f3a3bea..0000000
Binary files a/static/assets/ce/outrage.webp and /dev/null differ
diff --git a/static/assets/ce/oxdemon.webp b/static/assets/ce/oxdemon.webp
deleted file mode 100644
index 11c1301..0000000
Binary files a/static/assets/ce/oxdemon.webp and /dev/null differ
diff --git a/static/assets/ce/prisma.webp b/static/assets/ce/prisma.webp
deleted file mode 100644
index 482a32d..0000000
Binary files a/static/assets/ce/prisma.webp and /dev/null differ
diff --git a/static/assets/ce/vessel.webp b/static/assets/ce/vessel.webp
deleted file mode 100644
index 9272769..0000000
Binary files a/static/assets/ce/vessel.webp and /dev/null differ
diff --git a/static/assets/favourites/scathach.webp b/static/assets/favourites/scathach.webp
deleted file mode 100644
index 707b0f8..0000000
Binary files a/static/assets/favourites/scathach.webp and /dev/null differ
diff --git a/static/assets/favourites/skadi.webp b/static/assets/favourites/skadi.webp
deleted file mode 100644
index 1ba9410..0000000
Binary files a/static/assets/favourites/skadi.webp and /dev/null differ
diff --git a/static/assets/servant/bride_03.webp b/static/assets/servant/bride_03.webp
deleted file mode 100644
index d152a3f..0000000
Binary files a/static/assets/servant/bride_03.webp and /dev/null differ
diff --git a/static/assets/servant/castoria_01.webp b/static/assets/servant/castoria_01.webp
deleted file mode 100644
index 17d3452..0000000
Binary files a/static/assets/servant/castoria_01.webp and /dev/null differ
diff --git a/static/assets/servant/castoria_02.webp b/static/assets/servant/castoria_02.webp
deleted file mode 100644
index f7dd16b..0000000
Binary files a/static/assets/servant/castoria_02.webp and /dev/null differ
diff --git a/static/assets/servant/chiron_01.webp b/static/assets/servant/chiron_01.webp
deleted file mode 100644
index a129689..0000000
Binary files a/static/assets/servant/chiron_01.webp and /dev/null differ
diff --git a/static/assets/servant/crane_01.webp b/static/assets/servant/crane_01.webp
deleted file mode 100644
index 2a278f2..0000000
Binary files a/static/assets/servant/crane_01.webp and /dev/null differ
diff --git a/static/assets/servant/douman_01.webp b/static/assets/servant/douman_01.webp
deleted file mode 100644
index 6268d67..0000000
Binary files a/static/assets/servant/douman_01.webp and /dev/null differ
diff --git a/static/assets/servant/gogh_01.webp b/static/assets/servant/gogh_01.webp
deleted file mode 100644
index 2a88189..0000000
Binary files a/static/assets/servant/gogh_01.webp and /dev/null differ
diff --git a/static/assets/servant/himiko_03.webp b/static/assets/servant/himiko_03.webp
deleted file mode 100644
index 94f3699..0000000
Binary files a/static/assets/servant/himiko_03.webp and /dev/null differ
diff --git a/static/assets/servant/ibaraki_02.webp b/static/assets/servant/ibaraki_02.webp
deleted file mode 100644
index f4c6568..0000000
Binary files a/static/assets/servant/ibaraki_02.webp and /dev/null differ
diff --git a/static/assets/servant/jane_03.webp b/static/assets/servant/jane_03.webp
deleted file mode 100644
index 56dcd72..0000000
Binary files a/static/assets/servant/jane_03.webp and /dev/null differ
diff --git a/static/assets/servant/koyanlight_01.webp b/static/assets/servant/koyanlight_01.webp
deleted file mode 100644
index c799a1a..0000000
Binary files a/static/assets/servant/koyanlight_01.webp and /dev/null differ
diff --git a/static/assets/servant/liz_01.webp b/static/assets/servant/liz_01.webp
deleted file mode 100644
index 9689253..0000000
Binary files a/static/assets/servant/liz_01.webp and /dev/null differ
diff --git a/static/assets/servant/merlin_01.webp b/static/assets/servant/merlin_01.webp
deleted file mode 100644
index 93ba4cd..0000000
Binary files a/static/assets/servant/merlin_01.webp and /dev/null differ
diff --git a/static/assets/servant/merlin_03.webp b/static/assets/servant/merlin_03.webp
deleted file mode 100644
index ac25d75..0000000
Binary files a/static/assets/servant/merlin_03.webp and /dev/null differ
diff --git a/static/assets/servant/oberon_01.webp b/static/assets/servant/oberon_01.webp
deleted file mode 100644
index ebe2db2..0000000
Binary files a/static/assets/servant/oberon_01.webp and /dev/null differ
diff --git a/static/assets/servant/reines_01.webp b/static/assets/servant/reines_01.webp
deleted file mode 100644
index fd7ba15..0000000
Binary files a/static/assets/servant/reines_01.webp and /dev/null differ
diff --git a/static/assets/servant/santagale_01.webp b/static/assets/servant/santagale_01.webp
deleted file mode 100644
index 337a44e..0000000
Binary files a/static/assets/servant/santagale_01.webp and /dev/null differ
diff --git a/static/assets/servant/skadi_01.webp b/static/assets/servant/skadi_01.webp
deleted file mode 100644
index 225d8ad..0000000
Binary files a/static/assets/servant/skadi_01.webp and /dev/null differ
diff --git a/static/assets/servant/skadi_02.webp b/static/assets/servant/skadi_02.webp
deleted file mode 100644
index 81f9682..0000000
Binary files a/static/assets/servant/skadi_02.webp and /dev/null differ
diff --git a/static/assets/servant/skadi_03.webp b/static/assets/servant/skadi_03.webp
deleted file mode 100644
index 7ef4c40..0000000
Binary files a/static/assets/servant/skadi_03.webp and /dev/null differ
diff --git a/static/assets/servant/tamamo_03.webp b/static/assets/servant/tamamo_03.webp
deleted file mode 100644
index 07cd425..0000000
Binary files a/static/assets/servant/tamamo_03.webp and /dev/null differ
diff --git a/static/assets/servant/waver_02.webp b/static/assets/servant/waver_02.webp
deleted file mode 100644
index 7477af3..0000000
Binary files a/static/assets/servant/waver_02.webp and /dev/null differ
diff --git a/static/assets/servant/wu_01.webp b/static/assets/servant/wu_01.webp
deleted file mode 100644
index ba89ca9..0000000
Binary files a/static/assets/servant/wu_01.webp and /dev/null differ
diff --git a/static/assets/ta_icons/ta_servants/caren.webp b/static/assets/ta_icons/ta_servants/caren.webp
deleted file mode 100644
index eb7c227..0000000
Binary files a/static/assets/ta_icons/ta_servants/caren.webp and /dev/null differ
diff --git a/static/assets/ta_icons/ta_servants/jalter.webp b/static/assets/ta_icons/ta_servants/jalter.webp
deleted file mode 100644
index c4e6307..0000000
Binary files a/static/assets/ta_icons/ta_servants/jalter.webp and /dev/null differ
diff --git a/static/assets/ta_icons/ta_servants/kama.webp b/static/assets/ta_icons/ta_servants/kama.webp
deleted file mode 100644
index 83e28cf..0000000
Binary files a/static/assets/ta_icons/ta_servants/kama.webp and /dev/null differ
diff --git a/static/assets/ta_icons/ta_servants/musashi.webp b/static/assets/ta_icons/ta_servants/musashi.webp
deleted file mode 100644
index 37aa905..0000000
Binary files a/static/assets/ta_icons/ta_servants/musashi.webp and /dev/null differ
diff --git a/static/assets/ta_icons/ta_servants/saberalter.webp b/static/assets/ta_icons/ta_servants/saberalter.webp
deleted file mode 100644
index 55481e0..0000000
Binary files a/static/assets/ta_icons/ta_servants/saberalter.webp and /dev/null differ
diff --git a/static/assets/ta_icons/ta_servants/shishou.webp b/static/assets/ta_icons/ta_servants/shishou.webp
deleted file mode 100644
index 5b0dea3..0000000
Binary files a/static/assets/ta_icons/ta_servants/shishou.webp and /dev/null differ
diff --git a/static/assets/ta_icons/ta_servants/skadi.webp b/static/assets/ta_icons/ta_servants/skadi.webp
deleted file mode 100644
index 7292349..0000000
Binary files a/static/assets/ta_icons/ta_servants/skadi.webp and /dev/null differ
diff --git a/static/assets/ta_icons/ta_servants/summerjalter.webp b/static/assets/ta_icons/ta_servants/summerjalter.webp
deleted file mode 100644
index e4b8ca2..0000000
Binary files a/static/assets/ta_icons/ta_servants/summerjalter.webp and /dev/null differ
diff --git a/static/assets/ta_icons/ta_servants/summermusashi.webp b/static/assets/ta_icons/ta_servants/summermusashi.webp
deleted file mode 100644
index 963a6c7..0000000
Binary files a/static/assets/ta_icons/ta_servants/summermusashi.webp and /dev/null differ
diff --git a/static/assets/ta_icons/ta_servants/summershishou.webp b/static/assets/ta_icons/ta_servants/summershishou.webp
deleted file mode 100644
index 5d07b5b..0000000
Binary files a/static/assets/ta_icons/ta_servants/summershishou.webp and /dev/null differ
diff --git a/static/assets/ta_icons/ta_servants/tamamocat.webp b/static/assets/ta_icons/ta_servants/tamamocat.webp
deleted file mode 100644
index ad8ea94..0000000
Binary files a/static/assets/ta_icons/ta_servants/tamamocat.webp and /dev/null differ
diff --git a/static/assets/ta_icons/ta_servants/tomoe.webp b/static/assets/ta_icons/ta_servants/tomoe.webp
deleted file mode 100644
index 6fb6bae..0000000
Binary files a/static/assets/ta_icons/ta_servants/tomoe.webp and /dev/null differ
diff --git a/static/assets/ta_icons/ta_servants/tomoesummer.webp b/static/assets/ta_icons/ta_servants/tomoesummer.webp
deleted file mode 100644
index 5dbd588..0000000
Binary files a/static/assets/ta_icons/ta_servants/tomoesummer.webp and /dev/null differ
diff --git a/static/assets/data/_cedata.json b/static/data/_cedata.json
similarity index 61%
rename from static/assets/data/_cedata.json
rename to static/data/_cedata.json
index 53ed7a8..188f42a 100644
--- a/static/assets/data/_cedata.json
+++ b/static/data/_cedata.json
@@ -1,57 +1,57 @@
 [
 	{
 		"name": "The Merciless One",
-		"link": "merciless_one",
+		"imageFile": "merciless_one.png",
 		"mlb": "true"
 	},
 	{
 		"name": "Ox-Demon King",
-		"link": "oxdemon",
+		"imageFile": "ox-demon.png",
 		"mlb": "true"
 	},
 	{
 		"name": "Holy Maiden's Teachings",
-		"link": "maidensteachings",
+		"imageFile": "maidens_teachings.png",
 		"mlb": "true"
 	},
 	{
 		"name": "Kaleidoscope",
-		"link": "kaleidoscope",
+		"imageFile": "kaleidoscope.png",
 		"mlb": "true"
 	},
 	{
 		"name": "The Black Grail",
-		"link": "bg",
+		"imageFile": "black_grail.png",
 		"mlb": "true"
 	},
 	{
 		"name": "A Fragment Of 2030",
-		"link": "2030",
+		"imageFile": "2030.png",
 		"mlb": "true"
 	},
 	{
 		"name": "Outrage",
-		"link": "outrage",
+		"imageFile": "outrage.png",
 		"mlb": "false"
 	},
 	{
 		"name": "Vessel of the Saint",
-		"link": "vessel",
+		"imageFile": "vessel.png",
 		"mlb": "false"
 	},
 	{
 		"name": "Devilish Bodhisattva",
-		"link": "db",
+		"imageFile": "devilish_bodhisattva.png",
 		"mlb": "true"
 	},
 	{
 		"name": "500-Year Obsession",
-		"link": "500",
+		"imageFile": "500.png",
 		"mlb": "true"
 	},
 	{
 		"name": "Prisma Cosmos",
-		"link": "prisma",
+		"imageFile": "prisma_cosmos.png",
 		"mlb": "true"
 	}
 ]
diff --git a/static/assets/data/_contactdata.json b/static/data/_contactdata.json
similarity index 73%
rename from static/assets/data/_contactdata.json
rename to static/data/_contactdata.json
index 2ca9903..ce6e643 100644
--- a/static/assets/data/_contactdata.json
+++ b/static/data/_contactdata.json
@@ -2,31 +2,31 @@
 	{
 		"site": "Youtube: @Firq_",
 		"link": "https://www.youtube.com/@Firq_",
-		"image": "youtube"
+		"imageFile": "youtube.webp"
 	},
 	{
 		"site": "Twitch: Firq",
 		"link": "https://www.twitch.tv/firq",
-		"image": "twitch"
+		"imageFile": "twitch.webp"
 	},
 	{
 		"site": "Discord: firq",
 		"link": "https://discord.com/users/186014064835690496",
-		"image": "discord"
+		"imageFile": "discord.webp"
 	},
 	{
 		"site": "Twitter: Firq_ow",
 		"link": "https://twitter.com/firq_ow",
-		"image": "twitter"
+		"imageFile": "twitter.webp"
 	},
 	{
 		"site": "Reddit: u/Firq_ow",
 		"link": "https://www.reddit.com/user/firq_ow",
-		"image": "reddit"
+		"imageFile": "reddit.webp"
 	},
 	{
 		"site": "Support Setup on Rayshift",
 		"link": "https://rayshift.io/na/firq",
-		"image": "custom-fgo"
+		"imageFile": "custom-fgo.webp"
 	}
 ]
diff --git a/static/assets/data/_favouritesdata.json b/static/data/_favouritesdata.json
similarity index 80%
rename from static/assets/data/_favouritesdata.json
rename to static/data/_favouritesdata.json
index dc7aa60..d3554d8 100644
--- a/static/assets/data/_favouritesdata.json
+++ b/static/data/_favouritesdata.json
@@ -2,13 +2,13 @@
     {
         "name": "Scathach",
         "origin": "Fate/Grand Order",
-        "image": "scathach",
+        "imageFile": "scathach.png",
         "link": "https://twitter.com/firq_ow/status/1541064034618904578"
     },
     {
         "name": "Skadi",
         "origin": "Fate/Grand Order",
-        "image": "skadi",
+        "imageFile": "skadi.png",
         "link": "https://twitter.com/firq_ow/status/1544321985995489280"
     }
 ]
\ No newline at end of file
diff --git a/static/assets/data/_featureddata.json b/static/data/_featureddata.json
similarity index 68%
rename from static/assets/data/_featureddata.json
rename to static/data/_featureddata.json
index 68ba17e..eccb8ea 100644
--- a/static/assets/data/_featureddata.json
+++ b/static/data/_featureddata.json
@@ -2,226 +2,226 @@
 	{
 		"title": "DB 7T",
 		"link": "https://www.youtube.com/watch?v=nYV4jwgpuR0",
-		"image": "db",
+		"targetImageFile": "db.webp",
 		"date": "2022-07-14",
 		"user": "KOG",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "7T"
 	},
 	{
 		"title": "DB 7T",
 		"link": "https://www.youtube.com/watch?v=jKoSw1XM6-c",
-		"image": "db",
+		"targetImageFile": "db.webp",
 		"date": "2022-07-07",
 		"user": "Requiem",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "7T"
 	},
 	{
 		"title": "Valentines 2023 CQ 5T SC",
 		"link": "https://www.youtube.com/watch?v=AkDFyJ98GDQ",
-		"image": "orion",
+		"targetImageFile": "orion.webp",
 		"date": "2023-02-23",
 		"user": "Requiem",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "5T"
 	},
 	{
 		"title": "Ibuki 3T (Lostbelt 5.5)",
 		"link": "https://www.youtube.com/watch?v=zHGvHC0CUu0",
-		"image": "ibuki",
+		"targetImageFile": "ibuki.webp",
 		"date": "2022-11-22",
 		"user": "Requiem",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
 		"title": "Kingprotea 1T",
 		"link": "https://www.youtube.com/watch?v=iAhwqIGWsG4",
-		"image": "kingprotea",
+		"targetImageFile": "kingprotea.webp",
 		"date": "2022-09-13",
 		"user": "Requiem",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "1T"
 	},
 	{
 		"title": "Golden Caenis 3T (LB5.2)",
 		"link": "https://www.youtube.com/watch?v=_yZYgdr6XA4",
-		"image": "caenis",
+		"targetImageFile": "caenis.webp",
 		"date": "2022-04-22",
 		"user": "Requiem",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
 		"title": "GudaGuda 4 CQ 3T [No DMG CE]",
 		"link": "https://www.youtube.com/watch?v=oCT7ngip82U",
-		"image": "shibata",
+		"targetImageFile": "shibata.webp",
 		"date": "2022-04-26",
 		"user": "Requiem",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
 		"title": "Valentines 2023 CQ 4T",
 		"link": "https://www.youtube.com/watch?v=6WyPFYT8h1c",
-		"image": "orion",
+		"targetImageFile": "orion.webp",
 		"date": "2023-02-25",
 		"user": "KOG",
-		"ta_servant": "summershishou",
+		"servantImageFile": "summershishou.png",
 		"turns": "4T"
 	},
 	{
 		"title": "Ooku Rerun CQ 4T",
 		"link": "https://www.youtube.com/watch?v=EU2THj6GnhQ",
-		"image": "kiyohime",
+		"targetImageFile": "kiyohime.webp",
 		"date": "2022-08-12",
 		"user": "KOG",
-		"ta_servant": "summershishou",
+		"servantImageFile": "summershishou.png",
 		"turns": "4T"
 	},
 	{
 		"title": "Amazoness 2021 CQ 3T",
 		"link": "https://www.youtube.com/watch?v=l2cmlS9LKSU",
-		"image": "penth",
+		"targetImageFile": "penth.webp",
 		"date": "2022-01-22",
 		"user": "KOG",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
 		"title": "Christmas 2021 CQ 4T",
 		"link": "https://www.youtube.com/watch?v=PrJvjo3fvVc",
-		"image": "santagale",
+		"targetImageFile": "santagale.webp",
 		"date": "2021-12-20",
 		"user": "KOG",
-		"ta_servant": "summershishou",
+		"servantImageFile": "summershishou.png",
 		"turns": "4T"
 	},
 	{
 		"title": "GudaGuda 4 CQ 3T",
 		"link": "https://www.youtube.com/watch?v=e9H37cnW160",
-		"image": "shibata",
+		"targetImageFile": "shibata.webp",
 		"date": "2021-06-29",
 		"user": "KOG",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
 		"title": "GudaGuda 5 CQ 4T",
 		"link": "https://www.youtube.com/watch?v=HmrWnxp8Qz0",
-		"image": "nobunaga",
+		"targetImageFile": "nobunaga.webp",
 		"date": "2022-09-24",
 		"user": "Ray",
-		"ta_servant": "jalter",
+		"servantImageFile": "jalter.png",
 		"turns": "4T"
 	},
 	{
 		"title": "GudaGuda 5 CQ 4T",
 		"link": "https://www.youtube.com/watch?v=pcvhCQq5gFE",
-		"image": "nobunaga",
+		"targetImageFile": "nobunaga.webp",
 		"date": "2022-09-23",
 		"user": "Ray",
-		"ta_servant": "summerjalter",
+		"servantImageFile": "summerjalter.png",
 		"turns": "4T"
 	},
 	{
 		"title": "Ibuki 3T (Lostbelt 5.5)",
 		"link": "https://www.youtube.com/watch?v=4NgfXE1WY5I",
-		"image": "ibuki",
+		"targetImageFile": "ibuki.webp",
 		"date": "2022-11-26",
 		"user": "Ray",
-		"ta_servant": "jalter",
+		"servantImageFile": "jalter.png",
 		"turns": "3T"
 	},
 	{
 		"title": "Douman 3T (Lostbelt 5.5)",
 		"link": "https://www.youtube.com/watch?v=CIoNRC4tDrY",
-		"image": "douman",
+		"targetImageFile": "douman.webp",
 		"date": "2022-11-27",
 		"user": "Ray",
-		"ta_servant": "musashi",
+		"servantImageFile": "musashi.png",
 		"turns": "3T"
 	},
 	{
 		"title": "Boxing 3T (Xmas 5)",
 		"link": "https://www.youtube.com/watch?v=0ErT8Qbzuw8",
-		"image": "dioscuri",
+		"targetImageFile": "dioscuri.webp",
 		"date": "2022-12-18",
 		"user": "Ray",
-		"ta_servant": "jalter",
+		"servantImageFile": "jalter.png",
 		"turns": "3T"
 	},
 	{
 		"title": "Slapstick Museum CQ 5T",
 		"link": "https://www.youtube.com/watch?v=QtthHB6rk7k",
-		"image": "moriarty",
+		"targetImageFile": "moriarty.webp",
 		"date": "2023-03-10",
 		"user": "Ray",
-		"ta_servant": "jalter",
+		"servantImageFile": "jalter.png",
 		"turns": "5T"
 	},
 	{
 		"title": "Little Big Tengu CQ 4T",
 		"link": "https://www.youtube.com/watch?v=50Adjx4owhg",
-		"image": "taira",
+		"targetImageFile": "taira.webp",
 		"date": "2023-01-29",
 		"user": "Ray",
-		"ta_servant": "jalter",
+		"servantImageFile": "jalter.png",
 		"turns": "4T"
 	},
 	{
 		"title": "DB 7T (No Duplicates)",
 		"link": "https://www.youtube.com/watch?v=U5wsl09_VVQ",
-		"image": "db",
+		"targetImageFile": "db.webp",
 		"date": "2023-03-21",
 		"user": "Ray",
-		"ta_servant": "jalter",
+		"servantImageFile": "jalter.png",
 		"turns": "7T"
 	},
 	{
 		"title": "Top of Tower 3T",
 		"link": "https://www.youtube.com/watch?v=s_KRHpq_634",
-		"image": "galatea",
+		"targetImageFile": "galatea.webp",
 		"date": "2023-03-20",
 		"user": "Requiem",
-		"ta_servant": "skadi",
+		"servantImageFile": "skadi.png",
 		"turns": "3T"
 	},
 	{
 		"title": "Grail Live 4T",
 		"link": "https://drive.google.com/file/d/11spwhurDXFkWl3sHc2ghH5nFMW9-UwrR/view?usp=sharing",
-		"image": "arthur",
+		"targetImageFile": "arthur.webp",
 		"date": "2023-04-26",
 		"user": "Roz",
-		"ta_servant": "caren",
+		"servantImageFile": "caren.png",
 		"turns": "4T"
 	  },
 	  {
 		"title": "DB 7T",
 		"link": "https://drive.google.com/file/d/15TNT1HfYQioH7lRI5kvGChzElw6fz4-f/view?usp=sharing",
-		"image": "db",
+		"targetImageFile": "db.webp",
 		"date": "2023-01-13",
 		"user": "Roz",
-		"ta_servant": "kama",
+		"servantImageFile": "kama.png",
 		"turns": "7T"
 	  },
 	  {
 		"title": "Grail Live 4T",
 		"link": "https://www.youtube.com/watch?v=HIFYCvD6YhM",
-		"image": "arthur",
+		"targetImageFile": "arthur.webp",
 		"date": "2023-04-26",
 		"user": "Ray",
-		"ta_servant": "jalter",
+		"servantImageFile": "jalter.png",
 		"turns": "6T"
 	  },
 	  {
 		"title": "Grail Live 4T",
 		"link": "https://www.youtube.com/watch?v=jT8NEHvZ6Yg",
-		"image": "arthur",
+		"targetImageFile": "arthur.webp",
 		"date": "2023-04-25",
 		"user": "Requiem",
-		"ta_servant": "tamamocat",
+		"servantImageFile": "tamamocat.png",
 		"turns": "4T"
 	  }
 ]
diff --git a/static/assets/data/_navdata.json b/static/data/_navdata.json
similarity index 100%
rename from static/assets/data/_navdata.json
rename to static/data/_navdata.json
diff --git a/static/assets/data/_servantdata.json b/static/data/_servantdata.json
similarity index 54%
rename from static/assets/data/_servantdata.json
rename to static/data/_servantdata.json
index aea1aab..49f47a3 100644
--- a/static/assets/data/_servantdata.json
+++ b/static/data/_servantdata.json
@@ -5,9 +5,9 @@
 		"np": "5",
 		"skills": "10 / 10 / 10 ",
 		"ml": "10",
-		"image_servant": "skadi_03",
-		"image_bond": "skadi",
-		"bond10": "true"
+		"servantImageFile": "skadi_03.png",
+		"bondceImageFile": "skadi.png",
+		"bond10": true
 	},
 	{
 		"name": "Skadi",
@@ -15,9 +15,9 @@
 		"np": "1",
 		"skills": "10 / 10 / 10 ",
 		"ml": "1",
-		"image_servant": "skadi_02",
-		"image_bond": "skadi",
-		"bond10": "true"
+		"servantImageFile": "skadi_02.png",
+		"bondceImageFile": "skadi.png",
+		"bond10": true
 	},
 	{
 		"name": "Skadi",
@@ -25,9 +25,9 @@
 		"np": "1",
 		"skills": "10 / X / X ",
 		"ml": "1",
-		"image_servant": "skadi_01",
-		"image_bond": "skadi",
-		"bond10": "true"
+		"servantImageFile": "skadi_01.png",
+		"bondceImageFile": "skadi.png",
+		"bond10": true
 	},
 	{
 		"name": "Koyanskaya of Light",
@@ -35,9 +35,9 @@
 		"np": "1",
 		"skills": "10 / 10 / 10 ",
 		"ml": "Not Unlocked",
-		"image_servant": "koyanlight_01",
-		"image_bond": "koyanlight",
-		"bond10": "false"
+		"servantImageFile": "koyanlight_01.png",
+		"bondceImageFile": "koyanlight.png",
+		"bond10": false
 	},
 	{
 		"name": "Castoria",
@@ -45,9 +45,9 @@
 		"np": "1",
 		"skills": "10 / 10 / 10 ",
 		"ml": "7",
-		"image_servant": "castoria_02",
-		"image_bond": "castoria",
-		"bond10": "true"
+		"servantImageFile": "castoria_02.png",
+		"bondceImageFile": "castoria.png",
+		"bond10": true
 	},
 	{
 		"name": "Castoria",
@@ -55,9 +55,9 @@
 		"np": "1",
 		"skills": "10 / 10 / 10 ",
 		"ml": "1",
-		"image_servant": "castoria_01",
-		"image_bond": "castoria",
-		"bond10": "true"
+		"servantImageFile": "castoria_01.png",
+		"bondceImageFile": "castoria.png",
+		"bond10": true
 	},
 	{
 		"name": "Oberon",
@@ -65,9 +65,9 @@
 		"np": "1",
 		"skills": "10 / 10 / 10 ",
 		"ml": "Not Unlocked",
-		"image_servant": "oberon_01",
-		"image_bond": "oberon",
-		"bond10": "false"
+		"servantImageFile": "oberon_02.png",
+		"bondceImageFile": "oberon.png",
+		"bond10": false
 	},
 	{
 		"name": "Merlin",
@@ -75,9 +75,9 @@
 		"np": "1",
 		"skills": "10 / 10 / 10 ",
 		"ml": "Not Unlocked",
-		"image_servant": "merlin_03",
-		"image_bond": "merlin",
-		"bond10": "true"
+		"servantImageFile": "merlin_03.png",
+		"bondceImageFile": "merlin.png",
+		"bond10": true
 	},
 	{
 		"name": "Merlin",
@@ -85,9 +85,9 @@
 		"np": "1",
 		"skills": "9 / 1 / 9 ",
 		"ml": "Not Unlocked",
-		"image_servant": "merlin_01",
-		"image_bond": "merlin",
-		"bond10": "true"
+		"servantImageFile": "merlin_01.png",
+		"bondceImageFile": "merlin.png",
+		"bond10": true
 	},
 	{
 		"name": "Waver",
@@ -95,9 +95,9 @@
 		"np": "1",
 		"skills": "10 / 10 / 10 ",
 		"ml": "Not Unlocked",
-		"image_servant": "waver_02",
-		"image_bond": "waver",
-		"bond10": "true"
+		"servantImageFile": "waver_02.png",
+		"bondceImageFile": "waver.png",
+		"bond10": true
 	},
 	{
 		"name": "Reines",
@@ -105,9 +105,9 @@
 		"np": "1",
 		"skills": "10 / 10 / 10 ",
 		"ml": "9",
-		"image_servant": "reines_01",
-		"image_bond": "reines",
-		"bond10": "true"
+		"servantImageFile": "reines_01.png",
+		"bondceImageFile": "reines.png",
+		"bond10": true
 	},
 	{
 		"name": "Tamamo-no-Mae",
@@ -115,9 +115,9 @@
 		"np": "2",
 		"skills": "10 / 10 / 10 ",
 		"ml": "Not Unlocked",
-		"image_servant": "tamamo_03",
-		"image_bond": "tamamo",
-		"bond10": "true"
+		"servantImageFile": "tamamo_03.png",
+		"bondceImageFile": "tamamo.png",
+		"bond10": true
 	},
 	{
 		"name": "Van Gogh",
@@ -125,9 +125,9 @@
 		"np": "1",
 		"skills": "10 / 10 / 10 ",
 		"ml": "10",
-		"image_servant": "gogh_01",
-		"image_bond": "gogh",
-		"bond10": "true"
+		"servantImageFile": "gogh_01.png",
+		"bondceImageFile": "gogh.png",
+		"bond10": true
 	},
 	{
 		"name": "Miss Crane",
@@ -135,9 +135,9 @@
 		"np": "1",
 		"skills": "10 / 10 / 10 ",
 		"ml": "Not Unlocked",
-		"image_servant": "crane_01",
-		"image_bond": "crane",
-		"bond10": "false"
+		"servantImageFile": "crane_01.png",
+		"bondceImageFile": "crane.png",
+		"bond10": false
 	},
 	{
 		"name": "Ashiya Douman",
@@ -145,9 +145,9 @@
 		"np": "1",
 		"skills": "9 / 9 / 10 ",
 		"ml": "Not Unlocked",
-		"image_servant": "douman_01",
-		"image_bond": "douman",
-		"bond10": "false"
+		"servantImageFile": "douman_01.png",
+		"bondceImageFile": "douman.png",
+		"bond10": false
 	},
 	{
 		"name": "Himiko",
@@ -155,9 +155,9 @@
 		"np": "1",
 		"skills": "9 / 9 / 9 ",
 		"ml": "Not Unlocked",
-		"image_servant": "himiko_03",
-		"image_bond": "himiko",
-		"bond10": "false"
+		"servantImageFile": "himiko_03.png",
+		"bondceImageFile": "himiko.png",
+		"bond10": false
 	},
 	{
 		"name": "Nero (Bride)",
@@ -165,9 +165,9 @@
 		"np": "1",
 		"skills": "10 / 10 / 9 ",
 		"ml": "Not Unlocked",
-		"image_servant": "bride_03",
-		"image_bond": "bride",
-		"bond10": "false"
+		"servantImageFile": "bride_03.png",
+		"bondceImageFile": "bride.png",
+		"bond10": false
 	},
 	{
 		"name": "Nightingale (Santa)",
@@ -175,9 +175,9 @@
 		"np": "5",
 		"skills": "9 / 10 / 10 ",
 		"ml": "Not Unlocked",
-		"image_servant": "santagale_01",
-		"image_bond": "santagale",
-		"bond10": "true"
+		"servantImageFile": "santagale_01.png",
+		"bondceImageFile": "santagale.png",
+		"bond10": true
 	},
 	{
 		"name": "Nightingale (Santa)",
@@ -185,9 +185,9 @@
 		"np": "1",
 		"skills": "1 / 10 / 10 ",
 		"ml": "Not Unlocked",
-		"image_servant": "santagale_01",
-		"image_bond": "santagale",
-		"bond10": "true"
+		"servantImageFile": "santagale_01.png",
+		"bondceImageFile": "santagale.png",
+		"bond10": true
 	},
 	{
 		"name": "Elisabeth Báthory",
@@ -195,9 +195,9 @@
 		"np": "1",
 		"skills": "9 / 9 / X ",
 		"ml": "Not Unlocked",
-		"image_servant": "liz_01",
-		"image_bond": "liz",
-		"bond10": "false"
+		"servantImageFile": "liz_01.png",
+		"bondceImageFile": "liz.png",
+		"bond10": false
 	},
 	{
 		"name": "Wu Zetian",
@@ -205,9 +205,9 @@
 		"np": "1",
 		"skills": "9 / 1 / 9 ",
 		"ml": "Not Unlocked",
-		"image_servant": "wu_01",
-		"image_bond": "wu",
-		"bond10": "true"
+		"servantImageFile": "wu_01.png",
+		"bondceImageFile": "wu.png",
+		"bond10": true
 	},
 	{
 		"name": "Ibaraki-Douji",
@@ -215,9 +215,9 @@
 		"np": "1",
 		"skills": "8 / 8 / X ",
 		"ml": "Not Unlocked",
-		"image_servant": "ibaraki_02",
-		"image_bond": "ibaraki",
-		"bond10": "false"
+		"servantImageFile": "ibaraki_02.png",
+		"bondceImageFile": "ibaraki.png",
+		"bond10": false
 	},
 	{
 		"name": "Calamity Jane",
@@ -225,9 +225,9 @@
 		"np": "1",
 		"skills": "1 / 9 / 9 ",
 		"ml": "Not Unlocked",
-		"image_servant": "jane_03",
-		"image_bond": "jane",
-		"bond10": "false"
+		"servantImageFile": "jane_02.png",
+		"bondceImageFile": "jane.png",
+		"bond10": false
 	},
 	{
 		"name": "Chiron",
@@ -235,8 +235,8 @@
 		"np": "1",
 		"skills": "1 / 9 / 9 ",
 		"ml": "Not Unlocked",
-		"image_servant": "chiron_01",
-		"image_bond": "chiron",
-		"bond10": "false"
+		"servantImageFile": "chiron_01.png",
+		"bondceImageFile": "chiron.png",
+		"bond10": false
 	}
 ]
diff --git a/static/assets/data/_tadata.json b/static/data/_tadata.json
similarity index 65%
rename from static/assets/data/_tadata.json
rename to static/data/_tadata.json
index f1ef6f9..9e4899d 100644
--- a/static/assets/data/_tadata.json
+++ b/static/data/_tadata.json
@@ -2,313 +2,313 @@
 	{
 		"title": "DB 7T (No Duplicates)",
 		"link": "https://www.youtube.com/watch?v=d1ftVeitR6c",
-		"image": "db",
+		"targetImageFile": "db.webp",
 		"date": "2022-07-09",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "7T"
 	},
 	{
 		"title": "Kingprotea 1T",
 		"link": "https://www.youtube.com/watch?v=m3SATSOfpt4",
-		"image": "kingprotea",
+		"targetImageFile": "kingprotea.webp",
 		"date": "2022-06-21",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "1T"
 	},
 	{
 		"title": "Solomon 1T (No NP)",
 		"link": "https://www.youtube.com/watch?v=01Qx4Hs-X4M",
-		"image": "solomon",
+		"targetImageFile": "solomon.webp",
 		"date": "2022-06-28",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "1T"
 	},
 	{
 		"title": "Ibuki 3T (LB 5.5)",
 		"link": "https://www.youtube.com/watch?v=AaqRN73dO5k",
-		"image": "ibuki",
+		"targetImageFile": "ibuki.webp",
 		"date": "2022-11-22",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
 		"title": "Boxing 3T (Xmas 5)",
 		"link": "https://www.youtube.com/watch?v=S8OQ7yWldJY",
-		"image": "dioscuri",
+		"targetImageFile": "dioscuri.webp",
 		"date": "2022-12-24",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
 		"title": "MHXX 2T (No DMG CE)",
 		"link": "https://www.youtube.com/watch?v=lz6iBZvoDuw",
-		"image": "mhxx",
+		"targetImageFile": "mhxx.webp",
 		"date": "2023-01-12",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "2T"
 	},
 	{
 		"title": "Taira 3T (LB 5.5)",
 		"link": "https://www.youtube.com/watch?v=YtRvahqFA0Y",
-		"image": "taira",
+		"targetImageFile": "taira.webp",
 		"date": "2022-11-22",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
 		"title": "Douman 3T (LB 5.5)",
 		"link": "https://www.youtube.com/watch?v=6cstr3vTd8Y",
-		"image": "douman",
+		"targetImageFile": "douman.webp",
 		"date": "2022-11-23",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
 		"title": "Christmas 2021 Rerun CQ 5T",
 		"link": "https://www.youtube.com/watch?v=cpqhx9dUgTU",
-		"image": "santagale",
+		"targetImageFile": "santagale.webp",
 		"date": "2022-10-15",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "5T"
 	},
 	{
 		"title": "Summer 4 Rerun CQ 3T",
 		"link": "https://www.youtube.com/watch?v=u72o7PDBtks",
-		"image": "fuuma",
+		"targetImageFile": "fuuma.webp",
 		"date": "2022-06-04",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
-		"title": "Fate/Requiem CQ 3T",
+		"title": "Fate/ Requiem CQ 3T",
 		"link": "https://www.youtube.com/watch?v=k7vGC4kpEFg",
-		"image": "erice",
+		"targetImageFile": "erice.webp",
 		"date": "2022-05-11",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
 		"title": "Kirschtaria 3T (LB 5)",
 		"link": "https://www.youtube.com/watch?v=aYlyfAzuFw0",
-		"image": "kirschtaria",
+		"targetImageFile": "kirschtaria.webp",
 		"date": "2022-04-04",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
 		"title": "Aeaean Spring Breeze CQ 3T",
 		"link": "https://www.youtube.com/watch?v=uo3jI9xuVwI",
-		"image": "odysseus",
+		"targetImageFile": "odysseus.webp",
 		"date": "2022-03-06",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
 		"title": "Valentines 2022 CQ 4T",
 		"link": "https://www.youtube.com/watch?v=MOCMXZ17FkU",
-		"image": "sei",
+		"targetImageFile": "sei.webp",
 		"date": "2022-02-09",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "4T"
 	},
 	{
 		"title": "Amazoness 2021 CQ 3T",
 		"link": "https://www.youtube.com/watch?v=MU_Hw2KKYRU",
-		"image": "penth",
+		"targetImageFile": "penth.webp",
 		"date": "2022-01-23",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
 		"title": "Valentines 2023 CQ 4T",
 		"link": "https://www.youtube.com/watch?v=fwCmEiaocQo",
-		"image": "orion",
+		"targetImageFile": "orion.webp",
 		"date": "2023-02-25",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "4T"
 	},
 	{
 		"title": "Slapstick Museum CQ 5T",
 		"link": "https://www.youtube.com/watch?v=fQImgJirFeo",
-		"image": "moriarty",
+		"targetImageFile": "moriarty.webp",
 		"date": "2023-03-10",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "5T"
 	},
 	{
 		"title": "GudaGuda 5 CQ 4T",
 		"link": "https://www.youtube.com/watch?v=3scILqsgobU",
-		"image": "nobunaga",
+		"targetImageFile": "nobunaga.webp",
 		"date": "2022-09-21",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "4T"
 	},
 	{
 		"title": "GudaGuda 4 CQ 3T (No DMG CE)",
 		"link": "https://www.youtube.com/watch?v=HY95cWsjC08",
-		"image": "shibata",
+		"targetImageFile": "shibata.webp",
 		"date": "2022-04-30",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
 		"title": "GudaGuda 4 CQ 3T",
 		"link": "https://www.youtube.com/watch?v=7iO2WQt64-8",
-		"image": "shibata",
+		"targetImageFile": "shibata.webp",
 		"date": "2022-04-26",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
 		"title": "Top of Tower 3T",
 		"link": "https://www.youtube.com/watch?v=gUtBYNxH4Ck",
-		"image": "galatea",
+		"targetImageFile": "galatea.webp",
 		"date": "2023-03-20",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
 		"title": "Goetia Memorial Quest 2T",
 		"link": "https://www.youtube.com/watch?v=lZHgSVpPv24",
-		"image": "goetia",
+		"targetImageFile": "goetia.webp",
 		"date": "2023-07-04",
-		"ta_servant": "skadi",
+		"servantImageFile": "skadi.png",
 		"turns": "2T"
 	},
 	{
 		"title": "Melusine 3T (LB 6)",
 		"link": "https://www.youtube.com/watch?v=f35hlBXuR3w",
-		"image": "melusine",
+		"targetImageFile": "melusine.webp",
 		"date": "2023-06-26",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
 		"title": "Morgan 3T (LB 6) Shishou",
 		"link": "https://www.youtube.com/watch?v=7wQ6iabqgEc",
-		"image": "morgan",
+		"targetImageFile": "morgan.webp",
 		"date": "2023-06-26",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
 		"title": "Morgan 3T (LB 6) Skadi",
 		"link": "https://www.youtube.com/watch?v=sQ7HHl1Pb3c",
-		"image": "morgan",
+		"targetImageFile": "morgan.webp",
 		"date": "2023-06-25",
-		"ta_servant": "skadi",
+		"servantImageFile": "skadi.png",
 		"turns": "3T"
 	},
 	{
 		"title": "Woodwose 3T (LB 6)",
 		"link": "https://www.youtube.com/watch?v=ZPgIDZjrGA0",
-		"image": "woodwose",
+		"targetImageFile": "woodwose.webp",
 		"date": "2023-06-23",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
 		"title": "Barghest 2T (LB 6)",
 		"link": "https://www.youtube.com/watch?v=kjMAccbq7-A",
-		"image": "barghest",
+		"targetImageFile": "barghest.webp",
 		"date": "2023-06-21",
-		"ta_servant": "tomoe",
+		"servantImageFile": "tomoe.png",
 		"turns": "2T"
 	},
 	{
 		"title": "Calamity of Norwich 3T (LB 6)",
 		"link": "https://www.youtube.com/watch?v=IwkCnVej_PY",
-		"image": "calamityofnorwich",
+		"targetImageFile": "calamityofnorwich.webp",
 		"date": "2023-06-08",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
 		"title": "Red Dragon 1T (LB 6)",
 		"link": "https://www.youtube.com/watch?v=MKhkvG0CHko",
-		"image": "reddragon",
+		"targetImageFile": "reddragon.webp",
 		"date": "2023-07-10",
-		"ta_servant": "tomoesummer",
+		"servantImageFile": "tomoesummer.png",
 		"turns": "1T"
 	},
 	{
 		"title": "Albion 3T (LB 6) Skadi",
 		"link": "https://www.youtube.com/watch?v=tejeiYpzfqo",
-		"image": "albion",
+		"targetImageFile": "albion.webp",
 		"date": "2023-07-11",
-		"ta_servant": "skadi",
+		"servantImageFile": "skadi.png",
 		"turns": "3T"
 	},
 	{
 		"title": "Albion 3T (LB 6) Shishou",
 		"link": "https://www.youtube.com/watch?v=E8fjEYFqrWI",
-		"image": "albion",
+		"targetImageFile": "albion.webp",
 		"date": "2023-07-12",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
 		"title": "Albion 3T (LB 6) Salter",
 		"link": "https://www.youtube.com/watch?v=5U42nu-vPnk",
-		"image": "albion",
+		"targetImageFile": "albion.webp",
 		"date": "2023-07-12",
-		"ta_servant": "saberalter",
+		"servantImageFile": "saberalter.png",
 		"turns": "3T"
 	},
 	{
 		"title": "Cernunnos 4T (No Castoria)",
 		"link": "https://www.youtube.com/watch?v=WrHudtdfivA",
-		"image": "cernnunos",
+		"targetImageFile": "cernnunos.webp",
 		"date": "2023-07-19",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "4T"
 	},
 	{
 		"title": "Abyssal Worm 3T (LB 6)",
 		"link": "https://www.youtube.com/watch?v=i8LfxctXhlA",
-		"image": "abyssalworm",
+		"targetImageFile": "abyssalworm.webp",
 		"date": "2023-07-20",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
 		"title": "Summer 6 CQ 3T",
 		"link": "https://www.youtube.com/watch?v=9db9BZ4ZzUo",
-		"image": "koyo",
+		"targetImageFile": "koyo.webp",
 		"date": "2023-09-24",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
 		"title": "Summer 6 Final Treasure 3T",
 		"link": "https://www.youtube.com/watch?v=u44lOISIpHo",
-		"image": "kamasummer",
+		"targetImageFile": "kamasummer.webp",
 		"date": "2023-09-25",
-		"ta_servant": "skadi",
+		"servantImageFile": "skadi.png",
 		"turns": "3T"
 	},
 	{
 		"title": "Halloween CQ 3T (No DMG CE)",
 		"link": "https://www.youtube.com/watch?v=bgt6z0Sfpl8",
-		"image": "zenobia",
+		"targetImageFile": "zenobia.webp",
 		"date": "2023-10-26",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
 		"title": "GudaGuda 6 CQ 3T",
 		"link": "https://www.youtube.com/watch?v=RWco4pduGUM",
-		"image": "izumo",
+		"targetImageFile": "izumo.webp",
 		"date": "2023-11-27",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	},
 	{
 		"title": "\"Hello, Joulupukki\" 3T (Xmas 6)",
 		"link": "https://www.youtube.com/watch?v=qEI8wZbnWww",
-		"image": "skadi",
+		"targetImageFile": "skadi.webp",
 		"date": "2023-12-16",
-		"ta_servant": "shishou",
+		"servantImageFile": "shishou.png",
 		"turns": "3T"
 	}
 ]
diff --git a/static/assets/data/_technologydata.json b/static/data/_technologydata.json
similarity index 58%
rename from static/assets/data/_technologydata.json
rename to static/data/_technologydata.json
index 2cfea86..1a3f70a 100644
--- a/static/assets/data/_technologydata.json
+++ b/static/data/_technologydata.json
@@ -2,36 +2,41 @@
     {
       "title": "Astro",
       "link": "https://astro.build",
-      "image": "astro"
+      "imageFile": "astro.webp"
     },
     {
       "title": "Forgejo",
       "link": "https://forgejo.org/",
-      "image": "forgejo"
+      "imageFile": "forgejo.webp"
     },
     {
       "title": "Docker",
       "link": "https://www.docker.com/",
-      "image": "docker"
+      "imageFile": "docker.webp"
+    },
+    {
+      "title": "Dockge",
+      "link": "https://github.com/louislam/dockge",
+      "imageFile": "dockge.png"
     },
     {
       "title": "Typescript",
       "link": "https://www.typescriptlang.org/",
-      "image": "typescript"
+      "imageFile": "typescript.webp"
     },
     {
       "title": "NodeJS",
-      "link": "https://ubuntu.com/",
-      "image": "nodejs"
+      "link": "https://nodejs.org/",
+      "imageFile": "nodejs.webp"
     },
     {
       "title": "serve by @warren-bank",
       "link": "https://www.npmjs.com/package/@warren-bank/serve",
-      "image": "serve"
+      "imageFile": "serve.webp"
     },
     {
       "title": "Unlight-house",
       "link": "https://unlighthouse.dev/",
-      "image": "unlighthouse"
+      "imageFile": "unlighthouse.webp"
     }
   ]
\ No newline at end of file
diff --git a/static/assets/favicon.ico b/static/favicon.ico
similarity index 100%
rename from static/assets/favicon.ico
rename to static/favicon.ico