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, + }; + }) || [] + ); +};