diff --git a/src/app/page.tsx b/src/app/page.tsx index 82d25a3..36246d7 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -10,6 +10,7 @@ import { ExperienceModal } from "../components/ExperienceModal"; import { MiniProjectModal } from "../components/MiniProjectModal"; import { Navbar } from "../components/Navbar"; import { Footer } from "../sections/Footer"; +import { TechStack } from "../sections/TechStack"; import { useState } from "react"; import type { Experience } from "../types"; @@ -53,8 +54,11 @@ export default function Home() { oldUsernames={oldUsernames} /> + + +

diff --git a/src/components/cn.ts b/src/components/cn.ts new file mode 100644 index 0000000..78e4885 --- /dev/null +++ b/src/components/cn.ts @@ -0,0 +1,7 @@ +import { ClassValue } from "clsx"; +import { twMerge } from "tailwind-merge"; +import clsx from "clsx"; + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)); +} diff --git a/src/sections/TechStack.tsx b/src/sections/TechStack.tsx new file mode 100644 index 0000000..dfcb4d6 --- /dev/null +++ b/src/sections/TechStack.tsx @@ -0,0 +1,92 @@ +"use client"; +import { cn } from "../components/cn"; + +const techStack = [ + { + title: "Monitoring & Testing", + items: [ + { name: "GitHub Actions", description: "CI/CD & automation" }, + { name: "Vitest", description: "Unit & integration testing" }, + { name: "Sentry", description: "Error monitoring" }, + { name: "Umami.is", description: "Privacy-friendly analytics" }, + ], + }, + { + title: "Software Stack", + items: [ + { name: "Next.js / React", description: "Frontend & SSR framework" }, + { name: "Tailwind CSS", description: "Utility-first styling" }, + { name: "TypeScript", description: "Typed JavaScript" }, + { + name: "Custom Library & Webserver API", + description: "Backend & shared logic", + }, + ], + }, + { + title: "Virtualisation", + items: [ + { name: "Proxmox", description: "Hypervisor & VM management" }, + { name: "Docker", description: "Containerization" }, + { name: "LXC", description: "Lightweight containers" }, + ], + }, + { + title: "OS", + items: [ + { name: "Ubuntu", description: "Linux distribution" }, + { + name: "Windows Server 2025", + description: "Active Directory & domain controller", + }, + { name: "Debian", description: "Linux distribution" }, + ], + }, + { + title: "Servers", + items: [ + { name: "KVMS from datalix.de", description: "Cloud server provider" }, + { name: "Home server", description: "Self-hosted option" }, + ], + }, +]; + +export function TechStack() { + return ( +
+
+

+ Tech Stack +

+

+ My current infrastructure and software stack, from server to + monitoring. +

+
+ +
+ {techStack.map((layer) => ( +
+

{layer.title}

+
    + {layer.items.map((item) => ( +
  • + {item.name} + + {item.description} + +
  • + ))} +
+
+ ))} +
+
+ ); +}