Files
pw/src/pages/uses.astro
T
Asger Geel Weirsøe 6640109ab9
Build & Deploy / deploy (push) Successful in 1m52s
content: tankestregerne ud af hele sitet
Reglen gjaldt kun de nyeste tekster; resten af sitet var fuld af dem. 72 steder
rettet på tværs af sider, komponenter, layout, profildata og et blogindlæg.

Valget pr. sted: ".." hvor der er en ægte pause eller en tør bemærkning
(fejlbeskederne i /ubl, /nemhandel og /chat, påskeægget i sidekilden,
"Øjebliksbillede.. verificér altid"), kolon hvor noget defineres (cookie-listen,
kolofonens rækker, profilbemærkninger der forklarer en forkortelse) og komma
hvor sætningen bare skal hænge sammen. Ét sted blev det til to sætninger, fordi
indskuddet var for langt til et komma.

Sidetitlen i Head.astro og de fire "docs.peppol.eu"-kildelinks brugte
tankestregen som skilletegn; de bruger nu "·", som sitet i forvejen bruger
mellem sidetitel og navn.

Tilbage står én tankestreg i /ubl, og den bliver: den markerer et tomt felt i
definitionslisten og er ikke en pause i en sætning.

Claude-Session: https://claude.ai/code/session_0198n4owY35jQpwht1wCGzfh
2026-09-22 20:30:00 +02:00

59 lines
2.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
import Base from '../layouts/Base.astro';
const sections = [
{
title: 'Homelab',
items: [
{ name: 'Proxmox VE', note: 'Hypervisor på egen hardware. ~50 LXC-containere og et par KVM-VM’er, én tjeneste pr. container.' },
{ name: 'NPMplus', note: 'Reverse proxy og TLS-terminering på kanten. Alt trafik ind går her igennem.' },
{ name: 'Authentik', note: 'Self-hosted SSO (OIDC/LDAP). Én identitet til alle tjenester, bygget fra source.' },
{ name: 'Gitea + Gitea Actions', note: 'Egen git-hosting og CI/CD. Denne side deployes automatisk ved push.' },
{ name: 'MariaDB / Redis / PostgreSQL', note: 'Databaser som dedikerede containere, host-pinned brugere og det hele.' },
{ name: 'Matomo', note: 'Self-hosted analytics, first-party og uden tredjeparter.' },
{ name: 'WireGuard', note: 'Tunneler og netns-baserede egress-profiler til alt der skal ud af huset på en pæn måde.' },
],
},
{
title: 'Udvikling',
items: [
{ name: 'Linux + code-server', note: 'Udvikling foregår i en dedikeret LXC med VS Code i browseren.' },
{ name: 'Java · Go · Python · TypeScript', note: 'Arbejdshestene. Java til Peppol/eDelivery-verdenen, Python/TS til alt det andet.' },
{ name: 'Claude Code', note: 'LLM-drevne workflows, fra blogindlæg til Proxmox-administration.' },
{ name: 'Docker', note: 'Hvor det giver mening. Ellers foretrækker jeg native installationer i LXC.' },
],
},
{
title: 'Denne side',
items: [
{ name: 'Astro 5 + Bun + Tailwind 4', note: 'Statisk output, ingen JS-frameworks i browseren. Se kolofonen for detaljer.' },
],
},
];
---
<Base title="Uses" description="Hardware, software og selvhostede tjenester bag mit homelab og denne side.">
<h1 class="text-4xl font-bold tracking-tight">Uses</h1>
<p class="mt-4 max-w-2xl text-muted">
Inspireret af <a class="text-accent hover:underline" href="https://uses.tech" target="_blank" rel="noopener">uses.tech</a>:
det jeg faktisk bruger. Kort version: alt der kan selvhostes, bliver selvhostet.
</p>
{sections.map((s) => (
<section class="mt-10">
<h2 class="text-sm font-semibold uppercase tracking-widest text-accent">{s.title}</h2>
<div class="mt-4 space-y-3">
{s.items.map((it) => (
<div class="rounded-2xl border border-border bg-surface/60 p-4">
<span class="font-semibold">{it.name}</span>
<p class="mt-1 text-sm text-muted">{it.note}</p>
</div>
))}
</div>
</section>
))}
<p class="mt-10 text-sm text-muted">
Nysgerrig på hvordan siden selv er skruet sammen? Se <a class="text-accent hover:underline" href="/colophon">kolofonen</a>.
</p>
</Base>