This commit is contained in:
Benjamin Toby 2026-03-31 05:10:44 +01:00
parent 89b33d03e5
commit 3844713f90
12 changed files with 65 additions and 28 deletions

View File

@ -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=="],

View File

@ -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",

View File

@ -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 (

View File

@ -0,0 +1,13 @@
import { SchemaJSON } from "@/src/layouts/main/(data)/schema";
import { BunextPageHeadFCProps } from "@moduletrace/bunext/types";
export const RootHead = ({}: BunextPageHeadFCProps) => {
return (
<script
type="application/ld+json"
dangerouslySetInnerHTML={{
__html: JSON.stringify(SchemaJSON),
}}
></script>
);
};

View File

@ -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;

View File

@ -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 (
<Layout meta={{ title: "About Me | Tben.me" }}>
<Layout>
<Main />
</Layout>
);
}
export const meta: BunextPageModuleMeta = {
title: `About Me | Tben.me`,
};

View File

@ -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 (
<Layout
meta={{
title: blogPost?.meta_title,
description: blogPost?.meta_description,
}}
>
<Layout>
<Main />
</Layout>
);
}
export const meta: BunextPageModuleMetaFn = async ({ serverRes }) => {
return {
title: serverRes?.props?.blogPost?.meta_title,
description: serverRes?.props?.blogPost?.meta_description,
};
};

View File

@ -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 (
<Layout meta={{ title: "Contact Me | Tben.me" }}>
<Layout>
<Main />
</Layout>
);
}
export const meta: BunextPageModuleMeta = {
title: "Contact Me | Tben.me",
};

View File

@ -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 (
<Layout
meta={{
description:
"Software Engineer, DevOps Engineer, Full Stack Developer, Software Architect, Philosopher, Solar Energy Enthusiast.",
}}
>
<Layout>
<Main />
<Divider />
<AboutSection />

View File

@ -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 (
<Layout meta={{ title: "My Skills | Tben.me" }}>
<Layout>
<Main />
<Divider />
<MySkillsSection noTitle expand />
</Layout>
);
}
export const meta: BunextPageModuleMeta = {
title: "My Skills | Tben.me",
};

View File

@ -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 (
<Layout meta={{ title: "My Work | Tben.me" }}>
<Layout>
<Main />
<Divider />
<MyWorkSection noTitle expand />
</Layout>
);
}
export const meta: BunextPageModuleMeta = {
title: "My Work | Tben.me",
};