diff --git a/.gitignore b/.gitignore
index 7fc2591..6ab0ecd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -50,4 +50,8 @@ dsql-schema-to-typedef.json
.git
/assets
-/secrets
\ No newline at end of file
+/secrets
+
+/public/sitemap.xml
+/public/robots.txt
+/public/sitemap-chunks/
\ No newline at end of file
diff --git a/bun.lock b/bun.lock
index 0c9f8b5..95e6f62 100644
--- a/bun.lock
+++ b/bun.lock
@@ -6,7 +6,7 @@
"name": "new-personal-site-bunext",
"dependencies": {
"@moduletrace/bun-mariadb": "^1.1.1",
- "@moduletrace/bunext": "^1.2.0",
+ "@moduletrace/bunext": "^1.2.4",
"gray-matter": "^4.0.3",
"html-to-react": "^1.7.0",
"lodash": "^4.17.21",
@@ -145,7 +145,7 @@
"@moduletrace/bun-mariadb": ["@moduletrace/bun-mariadb@1.1.1", "https://git.tben.me/api/packages/Moduletrace/npm/%40moduletrace%2Fbun-mariadb/-/1.1.1/bun-mariadb-1.1.1.tgz", { "dependencies": { "@inquirer/prompts": "^8.3.0", "chalk": "^5.6.2", "commander": "^14.0.3", "lodash": "^4.17.23", "sanitize-html": "^2.17.6" }, "peerDependencies": { "typescript": ">=5" }, "optionalPeers": ["typescript"], "bin": { "bun-mariadb": "dist/commands/index.js" } }, "sha512-nDKaKr59lC6td9rxwopvO3DQbpH34U+dPlGVFvozmsKu89hP7a/e0IpwnTfd7Otw9cnqPjG3F9a7tHWS7fCgdg=="],
- "@moduletrace/bunext": ["@moduletrace/bunext@1.2.0", "https://git.tben.me/api/packages/Moduletrace/npm/%40moduletrace%2Fbunext/-/1.2.0/bunext-1.2.0.tgz", { "dependencies": { "@tailwindcss/postcss": "^4.3.3", "@types/bun": "1.3.14", "@types/node": "^24.10.0", "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", "bun-plugin-tailwind": "^0.1.2", "chalk": "^5.6.2", "chokidar": "^5.0.0", "commander": "^14.0.2", "esbuild": "^0.28.2", "lightningcss-wasm": "^1.32.0", "lodash": "^4.18.1", "ora": "^9.0.0", "postcss": "^8.5.30", "react": "^19.3.0", "react-dom": "^19.3.0", "tailwindcss": "^4.3.3", "typescript": "^5.0.0", "uuid": "^14.0.2" }, "bin": { "bunext": "dist/commands/index.js" } }, "sha512-GypVMYehm+ykoHB3ch6ygzLLJKa0Fo1ugLtLB0JZoJlZOgqYTvMuxmSLi/j2dL3t5NdAdcgzerkFp/7iU0jKJA=="],
+ "@moduletrace/bunext": ["@moduletrace/bunext@1.2.4", "https://git.tben.me/api/packages/Moduletrace/npm/%40moduletrace%2Fbunext/-/1.2.4/bunext-1.2.4.tgz", { "dependencies": { "@tailwindcss/postcss": "^4.3.3", "@types/bun": "1.3.14", "@types/node": "^24.10.0", "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", "bun-plugin-tailwind": "^0.1.2", "chalk": "^5.6.2", "chokidar": "^5.0.0", "commander": "^14.0.2", "esbuild": "^0.28.2", "lightningcss-wasm": "^1.32.0", "lodash": "^4.18.1", "ora": "^9.0.0", "postcss": "^8.5.30", "react": "^19.3.0", "react-dom": "^19.3.0", "tailwindcss": "^4.3.3", "typescript": "^5.0.0", "uuid": "^14.0.2" }, "bin": { "bunext": "dist/commands/index.js" } }, "sha512-DweIg++4JRDcBIsLOTyK8SCQye3myp+cU8nOse2f3Arg+gQOLAgN9cKUKcs22esENKQB4ywRNw5j2hSg718y9A=="],
"@oven/bun-darwin-aarch64": ["@oven/bun-darwin-aarch64@1.3.14", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Omj20SuiHBOUjUBIyqtkNjSUIjOtEOJwmbix/ZyFH4BaQ6OZTaaRWIR4TjHVz0yadHgli6lLTiAh1uarnvD49A=="],
diff --git a/deploy/deploy-oracle.sh b/deploy/deploy-oracle.sh
index ba7ca30..2e7b968 100755
--- a/deploy/deploy-oracle.sh
+++ b/deploy/deploy-oracle.sh
@@ -1,8 +1,29 @@
+# #!/bin/bash
+
+# set -e
+
+# SOURCE_PATH="/home/archben/Projects/Git/personal/new-personal-site-bunext"
+
+# SERVER_IP="150.136.47.131"
+# SERVER_PATH="/docker/tben-me"
+
+# cd $SOURCE_PATH
+
+# rsync -avz --exclude-from=.gitignore --delete $SOURCE_PATH/ root@$SERVER_IP:$SERVER_PATH/
+
+# ssh -i /home/archben/.ssh/tben root@$SERVER_IP << 'EOF'
+# cd /docker/tben-me
+# docker build -t tben-me .
+# docker kill tben-me || echo "Service already killed"
+# docker rm tben-me || echo "Container already removed"
+# docker run --name tben-me -d --network nginx-proxy-manager --network mariadb --restart unless-stopped tben-me:latest
+# EOF
+
#!/bin/bash
set -e
-SOURCE_PATH="/home/archben/Projects/Git/personal/new-personal-site-bunext"
+SOURCE_PATH="$HOME/Projects/Git/personal/new-personal-site-bunext"
SERVER_IP="150.136.47.131"
SERVER_PATH="/docker/tben-me"
@@ -10,11 +31,23 @@ SERVER_PATH="/docker/tben-me"
cd $SOURCE_PATH
rsync -avz --exclude-from=.gitignore --delete $SOURCE_PATH/ root@$SERVER_IP:$SERVER_PATH/
+rsync -avz $SOURCE_PATH/secrets/prod.env root@$SERVER_IP:$SERVER_PATH/.env
-ssh -i /home/archben/.ssh/tben root@$SERVER_IP << 'EOF'
-cd /docker/tben-me
-docker build -t tben-me .
-docker kill tben-me || echo "Service already killed"
-docker rm tben-me || echo "Container already removed"
-docker run --name tben-me -d --network nginx-proxy-manager --network mariadb --restart unless-stopped tben-me:latest
+ssh -i $HOME/.ssh/tben root@$SERVER_IP << 'EOF'
+set -e
+
+DEPLOY_NAME="tben-me"
+
+cd /docker/$DEPLOY_NAME
+docker build -t $DEPLOY_NAME .
+docker kill $DEPLOY_NAME 2>/dev/null || echo "Service already killed"
+docker rm $DEPLOY_NAME 2>/dev/null || echo "Container already removed"
+
+docker run --name $DEPLOY_NAME -d \
+ --network nginx-proxy-manager --network mariadb \
+ -v /data/$DEPLOY_NAME/.data:/data \
+ --restart unless-stopped \
+ --cpus 0.5 --memory 1g \
+ --env-file /docker/$DEPLOY_NAME/.env \
+ $DEPLOY_NAME:latest
EOF
\ No newline at end of file
diff --git a/deploy/deploy-summitlending-contabo.sh b/deploy/deploy-summitlending-contabo.sh
index 5b08aa4..32e361c 100755
--- a/deploy/deploy-summitlending-contabo.sh
+++ b/deploy/deploy-summitlending-contabo.sh
@@ -2,7 +2,7 @@
set -e
-SOURCE_PATH="/home/archben/Projects/Git/personal/new-personal-site-bunext"
+SOURCE_PATH="$HOME/Projects/Git/personal/new-personal-site-bunext"
SERVER_IP="195.26.246.243"
SERVER_PATH="/docker/tben-me"
@@ -12,7 +12,7 @@ cd $SOURCE_PATH
rsync -avz --exclude-from=.gitignore --delete $SOURCE_PATH/ root@$SERVER_IP:$SERVER_PATH/
rsync -avz $SOURCE_PATH/secrets/prod.env root@$SERVER_IP:$SERVER_PATH/.env
-ssh -i /home/archben/.ssh/tben root@$SERVER_IP << 'EOF'
+ssh -i $HOME/.ssh/tben root@$SERVER_IP << 'EOF'
set -e
DEPLOY_NAME="tben-me"
diff --git a/package.json b/package.json
index 07538ca..9e96747 100644
--- a/package.json
+++ b/package.json
@@ -12,7 +12,7 @@
},
"dependencies": {
"@moduletrace/bun-mariadb": "^1.1.1",
- "@moduletrace/bunext": "^1.2.0",
+ "@moduletrace/bunext": "^1.2.4",
"gray-matter": "^4.0.3",
"html-to-react": "^1.7.0",
"lodash": "^4.17.21",
diff --git a/public/robots.txt b/public/robots.txt
index 9abb192..0b00b52 100644
--- a/public/robots.txt
+++ b/public/robots.txt
@@ -1,11 +1,12 @@
-# https://www.tben.me robots.txt
+# Generated by bunext
User-agent: *
Allow: /
+Disallow: /admin
+Disallow: /auth
+Disallow: /api
+Disallow: /media
+Disallow: /ws
+Disallow: /webhooks
-# Sitemaps
Sitemap: https://www.tben.me/sitemap.xml
-
-# Optional: disallow common non-content paths (uncomment if needed)
-Disallow: /api/
-Disallow: /_next/
diff --git a/public/sitemap.xml b/public/sitemap.xml
index 36ee4dd..1519369 100644
--- a/public/sitemap.xml
+++ b/public/sitemap.xml
@@ -1,58 +1,47 @@
-
-
- https://www.tben.me/
- weekly
- 1.0
-
-
-
-
- https://www.tben.me/about
- monthly
- 0.7
-
-
- https://www.tben.me/skills
- monthly
- 0.7
-
-
- https://www.tben.me/work
- monthly
- 0.8
-
-
- https://www.tben.me/blog
- weekly
- 0.8
-
-
- https://www.tben.me/contact
- monthly
- 0.6
-
-
-
-
- https://www.tben.me/blog/nginx-reverse-proxy-caching-rate-limiting-static-files
- monthly
- 0.6
-
-
- https://www.tben.me/blog/solving-the-database-hassle
- monthly
- 0.5
-
-
- https://www.tben.me/blog/find-your-perfect-framework
- monthly
- 0.5
-
-
- https://www.tben.me/blog/choosing-your-tech-stack
- monthly
- 0.5
-
+
+ https://www.tben.me/
+ 2026-10-15T03:50:16.406Z
+
+
+ https://www.tben.me/blog/choosing-your-tech-stack
+ 2025-07-25T18:18:31.270Z
+
+
+ https://www.tben.me/blog/find-your-perfect-framework
+ 2025-07-25T18:18:23.918Z
+
+
+ https://www.tben.me/blog/solving-the-database-hassle
+ 2025-07-25T18:18:13.396Z
+
+
+ https://www.tben.me/blog/nginx-reverse-proxy-caching-rate-limiting-static-files
+ 2026-02-16T12:14:02.760Z
+
+
+ https://www.tben.me/blog/bunext-replacing-next-js-from-scratch
+ 2026-03-29T07:49:03.579Z
+
+
+ https://www.tben.me/blog
+ 2026-10-15T03:50:16.406Z
+
+
+ https://www.tben.me/skills
+ 2026-10-15T03:50:16.406Z
+
+
+ https://www.tben.me/about
+ 2026-10-15T03:50:16.406Z
+
+
+ https://www.tben.me/work
+ 2026-10-15T03:50:16.406Z
+
+
+ https://www.tben.me/contact
+ 2026-10-15T03:50:16.406Z
+
diff --git a/src/pages/blog/[slug]/index.server.ts b/src/pages/blog/[slug]/index.server.ts
index 6bb21c9..877a42a 100644
--- a/src/pages/blog/[slug]/index.server.ts
+++ b/src/pages/blog/[slug]/index.server.ts
@@ -4,7 +4,10 @@ import {
} from "@/db/types/db";
import { PagePropsType } from "@/src/types";
import BunMariaDB from "@moduletrace/bun-mariadb";
-import { BunextPageServerFn } from "@moduletrace/bunext/types";
+import {
+ BunextPageServerFn,
+ BunextPageSitemapFn,
+} from "@moduletrace/bunext/types";
export const server: BunextPageServerFn = async (ctx) => {
const blog_post = await BunMariaDB.select<
@@ -38,3 +41,30 @@ export const server: BunextPageServerFn = async (ctx) => {
},
};
};
+
+export const sitemap: BunextPageSitemapFn = async ({ route }) => {
+ const blog_post = await BunMariaDB.select<
+ BUN_MARIADB_DATASQUIREL_USER_2_TBENME_BLOG_POSTS,
+ (typeof BunMariaDBTables)[number]
+ >({
+ table: "blog_posts",
+ query: {
+ query: {
+ published: {
+ value: 1,
+ },
+ },
+ },
+ });
+
+ return (
+ blog_post.payload?.map((bp) => {
+ return {
+ path: `/blog/${bp.slug}`,
+ lastmod: bp.date_updated_code
+ ? new Date(Number(bp.date_updated_code))
+ : undefined,
+ };
+ }) || []
+ );
+};