From 5f2984824d8dbc015ee16f0b8b4251f852cc2a17 Mon Sep 17 00:00:00 2001 From: Luka Dekanozishvili Date: Sun, 25 Jan 2026 00:34:06 +0100 Subject: [PATCH] feat: added 5 blogs, refactored legals, fixed (side)menu behaviour, made pages uniform --- deno.lock | 60 ++ package.json | 3 +- src/lib/Footer.svelte | 9 +- src/lib/MainNavbar.svelte | 9 +- src/lib/SideMenu.svelte | 1 + ...rvers-explained-with-practical-examples.md | 107 +++ ...s-email-routing-safer-and-more-reliable.md | 123 +++ ...l-ports-modern-smtp-imap-and-jmap-usage.md | 81 ++ ...ial-for-homelab-setups-with-public-ipv4.md | 41 + ...oing-email-ports-by-default-due-to-spam.md | 37 + src/routes/+layout.svelte | 5 +- src/routes/+page.svelte | 8 +- src/routes/blog/+page.svelte | 55 ++ src/routes/blog/+page.ts | 18 + src/routes/blog/[slug]/+page.svelte | 45 ++ src/routes/blog/[slug]/+page.ts | 18 + src/routes/cookie-policy/+page.svelte | 159 ++-- src/routes/dashboard/[id]/delete/+page.svelte | 4 +- src/routes/faq/+page.svelte | 21 +- src/routes/layout.css | 2 + src/routes/privacy-policy/+page.svelte | 727 +++++++++--------- src/routes/terms-of-service/+page.svelte | 272 +++---- svelte.config.js | 12 +- vite.config.ts | 1 + 24 files changed, 1218 insertions(+), 600 deletions(-) create mode 100644 src/lib/posts/dns-records-for-email-servers-explained-with-practical-examples.md create mode 100644 src/lib/posts/how-mta-sts-makes-email-routing-safer-and-more-reliable.md create mode 100644 src/lib/posts/understanding-email-ports-modern-smtp-imap-and-jmap-usage.md create mode 100644 src/lib/posts/why-ddns-is-essential-for-homelab-setups-with-public-ipv4.md create mode 100644 src/lib/posts/why-vps-providers-block-outgoing-email-ports-by-default-due-to-spam.md create mode 100644 src/routes/blog/+page.svelte create mode 100644 src/routes/blog/+page.ts create mode 100644 src/routes/blog/[slug]/+page.svelte create mode 100644 src/routes/blog/[slug]/+page.ts diff --git a/deno.lock b/deno.lock index aebfb5a..a209083 100644 --- a/deno.lock +++ b/deno.lock @@ -14,6 +14,7 @@ "npm:eslint-plugin-svelte@^3.13.1": "3.13.1_eslint@9.39.2_svelte@5.46.1__acorn@8.15.0_postcss@8.5.6", "npm:eslint@^9.39.2": "9.39.2", "npm:globals@^16.5.0": "16.5.0", + "npm:mdsvex@~0.12.6": "0.12.6_svelte@5.46.1__acorn@8.15.0", "npm:prettier-plugin-svelte@^3.4.1": "3.4.1_prettier@3.7.4_svelte@5.46.1__acorn@8.15.0", "npm:prettier@^3.7.4": "3.7.4", "npm:svelte-check@^4.3.5": "4.3.5_svelte@5.46.1__acorn@8.15.0_typescript@5.9.3", @@ -615,6 +616,12 @@ "@types/json-schema@7.0.15": { "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" }, + "@types/mdast@4.0.4": { + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": [ + "@types/unist" + ] + }, "@types/node@22.19.3": { "integrity": "sha512-1N9SBnWYOJTrNZCdh/yJE+t910Y128BoyY+zBLWhL3r0TYzlTmFdXrPwHL9DyFZmlEXNQQolTZh3KHV31QDhyA==", "dependencies": [ @@ -624,6 +631,9 @@ "@types/resolve@1.20.2": { "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==" }, + "@types/unist@2.0.11": { + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" + }, "@typescript-eslint/eslint-plugin@8.52.0_@typescript-eslint+parser@8.52.0__eslint@9.39.2__typescript@5.9.3_eslint@9.39.2_typescript@5.9.3": { "integrity": "sha512-okqtOgqu2qmZJ5iN4TWlgfF171dZmx2FzdOv2K/ixL2LZWDStL8+JgQerI2sa8eAEfoydG9+0V96m7V+P8yE1Q==", "dependencies": [ @@ -1252,6 +1262,18 @@ "@jridgewell/sourcemap-codec" ] }, + "mdsvex@0.12.6_svelte@5.46.1__acorn@8.15.0": { + "integrity": "sha512-pupx2gzWh3hDtm/iDW4WuCpljmyHbHi34r7ktOqpPGvyiM4MyfNgdJ3qMizXdgCErmvYC9Nn/qyjePy+4ss9Wg==", + "dependencies": [ + "@types/mdast", + "@types/unist", + "prism-svelte", + "prismjs", + "svelte", + "unist-util-visit", + "vfile-message" + ] + }, "mini-svg-data-uri@1.4.4": { "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", "bin": true @@ -1390,6 +1412,12 @@ "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==", "bin": true }, + "prism-svelte@0.4.7": { + "integrity": "sha512-yABh19CYbM24V7aS7TuPYRNMqthxwbvx6FF/Rw920YbyBWO3tnyPIqRMgHuSVsLmuHkkBS1Akyof463FVdkeDQ==" + }, + "prismjs@1.30.0": { + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==" + }, "punycode@2.3.1": { "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" }, @@ -1579,6 +1607,30 @@ "undici-types@6.21.0": { "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==" }, + "unist-util-is@4.1.0": { + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==" + }, + "unist-util-stringify-position@2.0.3": { + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dependencies": [ + "@types/unist" + ] + }, + "unist-util-visit-parents@3.1.1": { + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dependencies": [ + "@types/unist", + "unist-util-is" + ] + }, + "unist-util-visit@2.0.3": { + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dependencies": [ + "@types/unist", + "unist-util-is", + "unist-util-visit-parents" + ] + }, "uri-js@4.4.1": { "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dependencies": [ @@ -1588,6 +1640,13 @@ "util-deprecate@1.0.2": { "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, + "vfile-message@2.0.4": { + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dependencies": [ + "@types/unist", + "unist-util-stringify-position" + ] + }, "vite@7.3.0_@types+node@22.19.3_picomatch@4.0.3": { "integrity": "sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==", "dependencies": [ @@ -1652,6 +1711,7 @@ "npm:eslint-plugin-svelte@^3.13.1", "npm:eslint@^9.39.2", "npm:globals@^16.5.0", + "npm:mdsvex@~0.12.6", "npm:prettier-plugin-svelte@^3.4.1", "npm:prettier@^3.7.4", "npm:svelte-check@^4.3.5", diff --git a/package.json b/package.json index d86868e..8aadb55 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,8 @@ "lint": "eslint ." }, "dependencies": { - "daisyui": "^5.5.14" + "daisyui": "^5.5.14", + "mdsvex": "^0.12.6" }, "devDependencies": { "@eslint/compat": "^1.4.1", diff --git a/src/lib/Footer.svelte b/src/lib/Footer.svelte index a1627ab..3c851c7 100644 --- a/src/lib/Footer.svelte +++ b/src/lib/Footer.svelte @@ -26,10 +26,10 @@