lerko96 088a06a51c feat: terminal-noir redesign — widget system + design token overhaul
Replace cyan-green modern theme with terminal-noir aesthetic aligned to
style-guide.md. Hard edges, monospace-first, linear transitions, no gradients.

Introduce Widget component as the single repeatable section primitive:
title bar with horizontal rule, optional badge/meta — all pages and
sections now use this pattern (Glance-inspired data-driven layout).

Design system changes (globals.css):
- Palette: #0a0a0a bg, #111111 surface, #00cc44 status green, #cc2200 alert red
- Drop Montserrat; Source Code Pro primary, system sans for prose only
- Transitions: linear 120ms; no eased animations, no border-radius

Component changes:
- Nav: flat, border-bottom only, lowercase links
- Hero: 56px square photo, status dot, @ email glyph
- ProjectCard: flat bordered card, 2-col grid, no gradient tile
- Skills: key-value rows with dot-separated values
- Footer: minimal text links

Pages: all sections wrapped in Widget; homelab uses gap-px grid for
at-a-glance, services, and ADRs sections. Archive uses flat list layout.

Data: remove gradient field from Project type; add optional year field
2026-04-12 19:23:50 -04:00

lerko96 portfolio

Personal portfolio site. Live at lerkolabs.com — self-hosted, deployed and maintained through my own operation.

Source lives on my Gitea at gitea.lerkolabs.com. GitHub is a backup mirror, not the primary.

Stack: Next.js 16 · React 19 · TypeScript · Tailwind v4


Branches

  • dev — source code, all work happens here
  • master — built output only; what GitHub Pages serves for the backup mirror. don't touch this manually.

Commands

npm run dev      # dev server at localhost:3000
npm run build    # static export into out/
npm run deploy   # build + push out/ to master (GitHub mirror)

How it deploys

npm run deploy runs predeploy (build) then pushes the out/ directory to master via gh-pages. That's what feeds the GitHub Pages backup at lerko96.com.

postbuild drops out/.nojekyll so GitHub Pages doesn't ignore _next/ assets.

Custom domain is in public/CNAME — gets copied into out/ on build.


Project layout

src/
  app/
    layout.tsx          # root layout, fonts, ThemeProvider
    page.tsx            # home: hero, skills, project cards
    homelab/page.tsx    # homelab page: VLANs, services, ADRs
    archive/page.tsx    # older projects grid
    globals.css         # full design system (Tailwind v4 CSS-first, all tokens here)
  components/           # Nav, Footer, Hero, ThemeScript, etc.
  context/
    ThemeContext.tsx     # dark mode provider + useTheme hook
  data/
    projects.ts         # all projects, featured + archive split
    services.ts         # homelab services with categories
public/
  CNAME                 # www.lerko96.com

Tailwind v4 is CSS-first — no tailwind.config.ts. All custom tokens live in globals.css under @theme {}.

Description
Tyler Koenig portfolio
https://lerkolabs.com
Readme 45 MiB
Languages
TypeScript 93.8%
CSS 4.9%
JavaScript 1.2%
Dockerfile 0.1%