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:
@@ -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>
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user