feat(content): reposition for security engineer, expand services to 37

Hero subtitle and blurb rewritten to lead with security operations
and homelab credentials over generic "builder" framing.

Projects: archive plAIground, service-monitor, ThoughtSpace (2025);
add open-pact and helm as featured; add risk-ops to archive (2026).
Add statusBadge + externalUrl to Project type; wire golf-book-mobile.

Services: 24 → 37 — split grouped arr/media entries, add mail relay,
gluetun, Home Assistant, Glance, Filebrowser, Prowlarr, Bazarr,
nzbget, qBittorrent, Kavita, Openshelf. Drop Calibre-Web.

Skills: add Go to Languages. Timeline: update monitoring stack.
Homelab ADRs: add Authentik over Authelia.
This commit is contained in:
lerko96
2026-04-16 21:06:18 -04:00
parent c36cc94437
commit 49028e7783
7 changed files with 85 additions and 14 deletions

View File

@@ -8,15 +8,15 @@ export default function Hero() {
tyler koenig
</p>
<p className="font-mono text-sm text-[var(--color-text-label)] mt-0.5">
SOC Helpdesk I · Homelab Operator
Security Operations · Self-Hosted Infrastructure
</p>
</div>
<p className="font-mono text-sm text-[var(--color-text)] leading-relaxed max-w-lg opacity-70">
I write software and run infrastructure that goes well past what my
job title implies. Games, AI tooling, mobile apps, and a homelab
running 20+ self-hosted services on segmented VLANs. Continuously
learning by building things that actually work.{' '}
Security operations and self-hosted infrastructure. Homelab runs 37
services across segmented VLANs pfSense, Authentik SSO, full
observability stack. Write software too: mobile apps, Go backends,
open protocols. Daily drivers, all of it.{' '}
<span className="animate-cursor text-[var(--color-accent-green)]" aria-hidden="true"></span>
</p>

View File

@@ -22,6 +22,17 @@ export default function ProjectCard({ project }: Props) {
{project.stats}
</span>
)}
{project.externalUrl && (
<a
href={project.externalUrl}
target="_blank"
rel="noopener noreferrer"
aria-label={`View ${project.title} externally`}
className="font-mono text-sm text-[var(--color-text-label)] hover:text-[var(--color-text)]"
>
</a>
)}
<a
href={project.githubUrl}
target="_blank"
@@ -34,6 +45,12 @@ export default function ProjectCard({ project }: Props) {
</div>
</div>
{project.statusBadge && (
<span className="font-mono text-xs text-[var(--color-accent-amber,#d4a027)] border border-[var(--color-accent-amber,#d4a027)] px-1.5 py-0.5 w-fit opacity-80">
{project.statusBadge}
</span>
)}
<p className="font-mono text-sm text-[var(--color-text)] leading-relaxed flex-1 opacity-70">
{project.description}
</p>

View File

@@ -3,7 +3,7 @@ import Widget from "@/components/Widget";
const skillGroups = [
{
label: "Languages",
skills: ["JavaScript", "TypeScript", "HTML", "CSS"],
skills: ["Go", "JavaScript", "TypeScript", "HTML", "CSS"],
},
{
label: "Frontend",