diff --git a/bun.lock b/bun.lock
index ff9fa6c..d98961d 100644
--- a/bun.lock
+++ b/bun.lock
@@ -6,7 +6,7 @@
"name": "new-personal-site",
"dependencies": {
"@moduletrace/buncid": "^1.0.7",
- "@moduletrace/bunext": "^1.0.42",
+ "@moduletrace/bunext": "^1.0.43",
"@moduletrace/datasquirel": "^5.7.57",
"gray-matter": "^4.0.3",
"html-to-react": "^1.7.0",
@@ -187,7 +187,7 @@
"@moduletrace/buncid": ["@moduletrace/buncid@1.1.3", "https://git.tben.me/api/packages/Moduletrace/npm/%40moduletrace%2Fbuncid/-/1.1.3/buncid-1.1.3.tgz", { "dependencies": { "kill-port": "^2.0.1" }, "peerDependencies": { "typescript": "^5.0.0" }, "bin": { "buncid": "dist/buncid.js", "buncid-builds-next": "dist/rebuilds/next-js/index.js" } }, "sha512-7lOagXOPJLGdIcx2GkNcpEslMs6KRis4NpWffGjMOS7YlsGhUGvmTIiBk8/Q+fPbYsgtfgMCDX8y/sb2hwTShw=="],
- "@moduletrace/bunext": ["@moduletrace/bunext@1.0.42", "https://git.tben.me/api/packages/Moduletrace/npm/%40moduletrace%2Fbunext/-/1.0.42/bunext-1.0.42.tgz", { "dependencies": { "@tailwindcss/postcss": "^4.2.2", "@types/bun": "latest", "@types/node": "^24.10.0", "@types/react": "^19.2.2", "@types/react-dom": "^19.2.2", "bun-plugin-tailwind": "^0.1.2", "chalk": "^5.6.2", "commander": "^14.0.2", "esbuild": "^0.27.4", "lightningcss-wasm": "^1.32.0", "lodash": "^4.17.23", "micromatch": "^4.0.8", "ora": "^9.0.0", "postcss": "^8.5.8", "react": "19.0.0", "react-dom": "19.0.0", "tailwindcss": "^4.2.2", "typescript": "^5.0.0" }, "bin": { "bunext": "dist/commands/index.js" } }, "sha512-DOQkuYbm4/KnBlphAFvzl5zKtUmgha/c/0Cbo/jptYqLwkF6/VOh0EHXs2bmoksQXMYPosljaGSDDlAV3PxVlA=="],
+ "@moduletrace/bunext": ["@moduletrace/bunext@1.0.43", "https://git.tben.me/api/packages/Moduletrace/npm/%40moduletrace%2Fbunext/-/1.0.43/bunext-1.0.43.tgz", { "dependencies": { "@tailwindcss/postcss": "^4.2.2", "@types/bun": "latest", "@types/node": "^24.10.0", "@types/react": "^19.2.2", "@types/react-dom": "^19.2.2", "bun-plugin-tailwind": "^0.1.2", "chalk": "^5.6.2", "commander": "^14.0.2", "esbuild": "^0.27.4", "lightningcss-wasm": "^1.32.0", "lodash": "^4.17.23", "micromatch": "^4.0.8", "ora": "^9.0.0", "postcss": "^8.5.8", "react": "19.0.0", "react-dom": "19.0.0", "tailwindcss": "^4.2.2", "typescript": "^5.0.0" }, "bin": { "bunext": "dist/commands/index.js" } }, "sha512-h0bp2+xDk2SgP32xC2jG5er8zOJ7pl9Tnhkv7OXvanExSrS6nzv3+Et6KAfw33SDQjk1uGhyjUHt+adGrzZFSw=="],
"@moduletrace/datasquirel": ["@moduletrace/datasquirel@5.7.57", "https://git.tben.me/api/packages/Moduletrace/npm/%40moduletrace%2Fdatasquirel/-/5.7.57/datasquirel-5.7.57.tgz", { "dependencies": { "@types/ace": "^0.0.52", "@types/lodash": "^4.17.13", "@types/next": "^9.0.0", "@types/node": "^22.7.5", "@types/nodemailer": "^6.4.17", "@types/react": "^18.2.21", "@types/react-dom": "^19.0.0", "@types/tinymce": "^4.6.9", "dotenv": "^16.3.1", "generate-password": "^1.7.1", "google-auth-library": "^9.15.0", "inquirer": "^12.5.2", "lodash": "^4.17.21", "mariadb": "^3.4.4", "nodemailer": "^6.9.14", "sanitize-html": "^2.13.1", "sql-formatter": "^15.6.10" }, "bin": { "dsql-dump": "dist/engine/dump.js", "dsql-schema-to-typedef": "dist/engine/schema-to-typedef.js", "dsql-watch": "dist/engine/dsql.js" } }, "sha512-tPNfhMIwdptKjmraVqxj/qZ5yrO4QUZ/QxwZE+jIFj37UnUCXZOfF6yVWFClsqn2fNAjU2NDqrwC9w65ZzsmKg=="],
diff --git a/package.json b/package.json
index c411e71..e78cbbc 100644
--- a/package.json
+++ b/package.json
@@ -10,7 +10,7 @@
},
"dependencies": {
"@moduletrace/buncid": "^1.0.7",
- "@moduletrace/bunext": "^1.0.42",
+ "@moduletrace/bunext": "^1.0.43",
"@moduletrace/datasquirel": "^5.7.57",
"gray-matter": "^4.0.3",
"html-to-react": "^1.7.0",
diff --git a/src/layouts/main/(data)/shcema.ts b/src/layouts/main/(data)/schema.ts
similarity index 100%
rename from src/layouts/main/(data)/shcema.ts
rename to src/layouts/main/(data)/schema.ts
diff --git a/src/layouts/main/index.tsx b/src/layouts/main/index.tsx
index 1cac7a0..2212ed9 100644
--- a/src/layouts/main/index.tsx
+++ b/src/layouts/main/index.tsx
@@ -5,14 +5,9 @@ import Footer from "./Footer";
import { twMerge } from "tailwind-merge";
import MobileMenu from "./(sections)/MobileMenu";
-type Props = PropsWithChildren & {
- meta?: {
- title?: string;
- description?: string;
- };
-};
+type Props = PropsWithChildren;
-export default function Layout({ children, meta }: Props) {
+export default function Layout({ children }: Props) {
const [menuOpen, setMenuOpen] = React.useState(false);
return (
diff --git a/src/pages/(partials)/root-head.tsx b/src/pages/(partials)/root-head.tsx
new file mode 100644
index 0000000..91a7ebd
--- /dev/null
+++ b/src/pages/(partials)/root-head.tsx
@@ -0,0 +1,13 @@
+import { SchemaJSON } from "@/src/layouts/main/(data)/schema";
+import { BunextPageHeadFCProps } from "@moduletrace/bunext/types";
+
+export const RootHead = ({}: BunextPageHeadFCProps) => {
+ return (
+
+ );
+};
diff --git a/src/pages/__root.tsx b/src/pages/__root.tsx
index 49321d7..098a53d 100644
--- a/src/pages/__root.tsx
+++ b/src/pages/__root.tsx
@@ -6,7 +6,9 @@ import {
BunextRootComponentProps,
BunextHTMLProps,
BunextRouteConfig,
+ BunextPageModuleMeta,
} from "@moduletrace/bunext/types";
+import { RootHead } from "./(partials)/root-head";
export type AppContextType = {
pageProps: PagePropsType;
@@ -40,3 +42,11 @@ export const config: BunextRouteConfig = {
cacheExpiry: 60 * 60, // 1 hour
cachePage: true,
};
+
+export const meta: BunextPageModuleMeta = {
+ title: `10X Devops/SRE Engineer | Tben.me`,
+ description:
+ "Software Engineer, DevOps Engineer, Full Stack Developer, Software Architect, Philosopher, Solar Energy Enthusiast.",
+};
+
+export const Head = RootHead;
diff --git a/src/pages/about.tsx b/src/pages/about.tsx
index 9be5bc4..a6b72e7 100644
--- a/src/pages/about.tsx
+++ b/src/pages/about.tsx
@@ -1,10 +1,15 @@
import Layout from "@/src/layouts/main";
import Main from "@/src/components/pages/about";
+import { BunextPageModuleMeta } from "@moduletrace/bunext/types";
-export default function ContactPage() {
+export default function AboutMePage() {
return (
-
+
);
}
+
+export const meta: BunextPageModuleMeta = {
+ title: `About Me | Tben.me`,
+};
diff --git a/src/pages/blog/[slug]/index.tsx b/src/pages/blog/[slug]/index.tsx
index 278bc59..6c0f4ab 100644
--- a/src/pages/blog/[slug]/index.tsx
+++ b/src/pages/blog/[slug]/index.tsx
@@ -1,16 +1,19 @@
import Layout from "@/src/layouts/main";
import Main from "@/src/components/pages/blog/slug";
import { PagePropsType } from "@/src/types";
+import { BunextPageModuleMetaFn } from "@moduletrace/bunext/types";
-export default function SingleBlogPost({ blogPost }: PagePropsType) {
+export default function SingleBlogPost() {
return (
-
+
);
}
+
+export const meta: BunextPageModuleMetaFn = async ({ serverRes }) => {
+ return {
+ title: serverRes?.props?.blogPost?.meta_title,
+ description: serverRes?.props?.blogPost?.meta_description,
+ };
+};
diff --git a/src/pages/contact.tsx b/src/pages/contact.tsx
index aba7130..5c47bfe 100644
--- a/src/pages/contact.tsx
+++ b/src/pages/contact.tsx
@@ -1,10 +1,15 @@
import Layout from "@/src/layouts/main";
import Main from "@/src/components/pages/contact";
+import { BunextPageModuleMeta } from "@moduletrace/bunext/types";
export default function ContactPage() {
return (
-
+
);
}
+
+export const meta: BunextPageModuleMeta = {
+ title: "Contact Me | Tben.me",
+};
diff --git a/src/pages/index.tsx b/src/pages/index.tsx
index b3e60b7..2efed12 100644
--- a/src/pages/index.tsx
+++ b/src/pages/index.tsx
@@ -5,15 +5,11 @@ import Divider from "@/src/components/lib/layout/Divider";
import MySkillsSection from "@/src/components/pages/Home/(sections)/MySkillsSection";
import MyWorkSection from "@/src/components/pages/Home/(sections)/MyWorkSection";
import FooterCTASection from "@/src/components/pages/Home/(sections)/footer-cta-section";
+import { BunextPageModuleMeta } from "@moduletrace/bunext/types";
export default function Home() {
return (
-
+
diff --git a/src/pages/skills.tsx b/src/pages/skills.tsx
index 7f53a2d..52c0865 100644
--- a/src/pages/skills.tsx
+++ b/src/pages/skills.tsx
@@ -2,13 +2,18 @@ import Layout from "@/src/layouts/main";
import Main from "@/src/components/pages/skills";
import Divider from "@/src/components/lib/layout/Divider";
import MySkillsSection from "@/src/components/pages/Home/(sections)/MySkillsSection";
+import { BunextPageModuleMeta } from "@moduletrace/bunext/types";
export default function SkillsPage() {
return (
-
+
);
}
+
+export const meta: BunextPageModuleMeta = {
+ title: "My Skills | Tben.me",
+};
diff --git a/src/pages/work.tsx b/src/pages/work.tsx
index 1a2c51a..4e60e38 100644
--- a/src/pages/work.tsx
+++ b/src/pages/work.tsx
@@ -2,13 +2,18 @@ import Layout from "@/src/layouts/main";
import Main from "@/src/components/pages/work";
import Divider from "@/src/components/lib/layout/Divider";
import MyWorkSection from "@/src/components/pages/Home/(sections)/MyWorkSection";
+import { BunextPageModuleMeta } from "@moduletrace/bunext/types";
export default function WorkPage() {
return (
-
+
);
}
+
+export const meta: BunextPageModuleMeta = {
+ title: "My Work | Tben.me",
+};