website: the operator's seven notes - a services page, the hero, and 100 dead links
gates / gates (push) Failing after 6m51s

Reported from his own screens. Five defects, two design.

1. THE CATEGORY ANCHORS WERE DEAD - all 100 of them. The sidebar's five app-category
   links pointed at #fajlkezeles-irodai and friends; the ids are #fajlkezeles and
   friends. The sidebar is copied into every page, so one wrong fragment was wrong
   twenty times, and a dead fragment raises no error anywhere: the browser stays put.

   New gate 23 resolves every in-site #fragment against the page it names (360 today).
   It convicted two more on its first run: the home page's four hero tiles pointed at
   /alkalmazasok#immich, which no page had ever carried, and the FAQ's contact button
   pointed at a home-page section that had moved out. Every app card now carries its
   slug as an id - taken from the card's own logo file, which gate 21 already ties to
   the catalog, so the ids cannot drift from it silently.
   Decoy site/dead-fragment puts the operator's own bug back and the gate convicts.

2. SZOLGALTATASOK IS A PAGE: /szolgaltatasok + /en/services, registered in TWINS, URL
   and SHELL. The ten capability items moved VERBATIM out of the home page; the home
   keeps the promise sentence, the three group names as links and a button, and is 345
   Hungarian / 434 English words shorter. The .caps rules stopped being .page-index-
   scoped, because the block now lives on a page with a different body class.

3. THE HOME HEADLINE is back in the hero column beside the picture, two lines with the
   second in --blue-bright at clamp(2.1rem, 4.4vw, 3.2rem). M3 had moved it into
   .page-header - the INNER pages' heading - so it shrank to 2.1rem and the domain
   badge was stranded beside it.

4. THE HERO PICTURE is the real dashboard in a laptop. The frame is the operator's own
   supplied render; the screen is dashboard-start-{hu,en}.webp composited into it, so a
   visitor sees a real box's Launcher rather than a drawing of one - the supplied
   screens are AI-drawn and misspell app names. 57 KB, named dashboard-laptop-<lang>
   so gate 19 holds it to the page's language.

5. .page-lede HAD NO CSS AT ALL on 16 pages: a bare paragraph, full width of the
   content column, hard against the box beneath it. 760px measure, centred over the
   box, air beneath; left-aligned on /szolgaltatasok, which has no centred box.

6. THE SIDEBAR LOGO: the wordmark shipped at 0.67x the mark's width where the real
   lockup (assets/logo.png, measured: mark 492px wide, wordmark 631px) has it at 1.28x.
   Mark 112px, wordmark 25px tall, 28px less vertical padding.

7. SCROLLBARS are the page's own now. The first attempt missed the viewport's: it is
   painted from <html>, and a `body.shell ::-webkit-...` rule only reaches scrollers
   inside the page.

Also: the two Latin font subsets are preloaded. With font-display: swap the page
reflowed after first paint - measured at 1339px on /alkalmazasok#media.

Checked at 390px and 1440px on all 21 pages: no sideways scrolling, footer inside the
content column everywhere, drawer opens with all 13 items. site.css?v=24.
This commit is contained in:
2026-10-12 08:58:42 +02:00
parent a7480172ab
commit 0ef0b106f6
31 changed files with 1150 additions and 474 deletions
+69 -67
View File
@@ -43,9 +43,11 @@
]
}
</script>
<link rel="preload" as="font" type="font/woff2" crossorigin href="/assets/fonts/pjs-latin.woff2">
<link rel="preload" as="font" type="font/woff2" crossorigin href="/assets/fonts/pjs-latin-ext.woff2">
<!-- shared assets: bump ?v= together on any site.css/icons.svg change -->
<link rel="stylesheet" href="/assets/site.css?v=23">
<link rel="stylesheet" href="/assets/shell.css?v=23">
<link rel="stylesheet" href="/assets/site.css?v=24">
<link rel="stylesheet" href="/assets/shell.css?v=24">
<link rel="icon" type="image/png" href="/assets/logo_favicon_2.svg">
<script defer src="/assets/gallery.js?v=2"></script>
<script defer src="https://stats.felhom.eu/script.js" data-website-id="d419db57-5e1c-48df-bdb3-c29f25fb1661"></script>
@@ -67,16 +69,16 @@
</div>
<ul class="nav-links">
<li><a href="/en/"><svg class="ico" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-home"/></svg>Home</a></li>
<li><a href="/en/#services"><svg class="ico" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-rocket"/></svg>Services</a></li>
<li><a href="/en/services"><svg class="ico" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-rocket"/></svg>Services</a></li>
<li class="nav-group is-open">
<button type="button" class="nav-group-toggle active" aria-expanded="true" aria-controls="nav-group-apps"><svg class="ico" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-package"/></svg>Applications<svg class="ico nav-chevron" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-chevron-down"/></svg></button>
<ul id="nav-group-apps" class="nav-links nav-links-sub nav-links-nested">
<li><a href="/en/apps">All applications</a></li>
<li><a href="/en/apps#files-office">Files &amp; Office</a></li>
<li><a href="/en/apps#media-entertainment">Media &amp; Entertainment</a></li>
<li><a href="/en/apps#home-lifestyle">Home &amp; Lifestyle</a></li>
<li><a href="/en/apps#productivity-knowledge">Productivity &amp; Knowledge</a></li>
<li><a href="/en/apps#system-development">System &amp; Development</a></li>
<li><a href="/en/apps#files">Files &amp; Office</a></li>
<li><a href="/en/apps#media">Media &amp; Entertainment</a></li>
<li><a href="/en/apps#home">Home &amp; Lifestyle</a></li>
<li><a href="/en/apps#productivity">Productivity &amp; Knowledge</a></li>
<li><a href="/en/apps#system">System &amp; Development</a></li>
</ul>
</li>
<li><a href="/en/technology"><svg class="ico" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-layers"/></svg>Technology</a></li>
@@ -124,7 +126,7 @@
</div>
<div class="app-grid">
<!-- Nextcloud -->
<div class="app-card">
<div class="app-card" id="nextcloud">
<div class="app-card-header">
<img src="/assets/nextcloud-logo.svg" alt="Nextcloud" class="app-logo">
<div class="app-title-area"><h3>Nextcloud</h3><span class="app-tagline">Your own Google Drive</span></div>
@@ -142,7 +144,7 @@
</div>
</div>
<!-- FileBrowser -->
<div class="app-card">
<div class="app-card" id="filebrowser">
<div class="app-card-header">
<img src="/assets/filebrowser-logo.svg" alt="FileBrowser" class="app-logo">
<div class="app-title-area"><h3>FileBrowser</h3><span class="app-tagline">Simple web file manager</span></div>
@@ -159,7 +161,7 @@
</div>
</div>
<!-- Gokapi -->
<div class="app-card">
<div class="app-card" id="gokapi">
<div class="app-card-header">
<img src="/assets/gokapi-logo.png" alt="Gokapi" class="app-logo">
<div class="app-title-area"><h3>Gokapi</h3><span class="app-tagline">Temporary file sharing</span></div>
@@ -175,7 +177,7 @@
</div>
</div>
<!-- Zipline -->
<div class="app-card">
<div class="app-card" id="zipline">
<div class="app-card-header">
<img src="/assets/zipline-logo.png" alt="Zipline" class="app-logo">
<div class="app-title-area"><h3>Zipline</h3><span class="app-tagline">ShareX/Flameshot server</span></div>
@@ -194,7 +196,7 @@
</div>
</div>
<!-- OnlyOffice -->
<div class="app-card">
<div class="app-card" id="onlyoffice">
<div class="app-card-header">
<img src="/assets/onlyoffice-logo.svg" alt="OnlyOffice" class="app-logo">
<div class="app-title-area"><h3>OnlyOffice</h3><span class="app-tagline">An office suite in the browser</span></div>
@@ -218,7 +220,7 @@
</div>
</div>
<!-- BentoPDF -->
<div class="app-card">
<div class="app-card" id="bentopdf">
<div class="app-card-header">
<img src="/assets/bentopdf-logo.svg" alt="BentoPDF" class="app-logo">
<div class="app-title-area"><h3>BentoPDF</h3><span class="app-tagline">PDF toolkit (privacy first)</span></div>
@@ -235,7 +237,7 @@
</div>
</div>
<!-- Papra -->
<div class="app-card">
<div class="app-card" id="papra">
<div class="app-card-header">
<img src="/assets/papra-logo.svg" alt="Papra" class="app-logo">
<div class="app-title-area"><h3>Papra</h3><span class="app-tagline">A minimal document archive</span></div>
@@ -266,7 +268,7 @@
</div>
<div class="app-grid">
<!-- Immich -->
<div class="app-card">
<div class="app-card" id="immich">
<div class="app-card-header">
<img src="/assets/immich-logo.svg" alt="Immich" class="app-logo">
<div class="app-title-area"><h3>Immich</h3><span class="app-tagline">A Google Photos alternative</span></div>
@@ -285,7 +287,7 @@
</div>
</div>
<!-- Jellyfin -->
<div class="app-card">
<div class="app-card" id="jellyfin">
<div class="app-card-header">
<img src="/assets/jellyfin-logo.svg" alt="Jellyfin" class="app-logo">
<div class="app-title-area"><h3>Jellyfin</h3><span class="app-tagline">Media server (Netflix)</span></div>
@@ -302,7 +304,7 @@
</div>
</div>
<!-- Plex -->
<div class="app-card">
<div class="app-card" id="plex">
<div class="app-card-header">
<img src="/assets/plex-logo.svg" alt="Plex" class="app-logo">
<div class="app-title-area"><h3>Plex</h3><span class="app-tagline">Media server (premium)</span></div>
@@ -320,7 +322,7 @@
</div>
</div>
<!-- Emby -->
<div class="app-card">
<div class="app-card" id="emby">
<div class="app-card-header">
<img src="/assets/emby-logo.svg" alt="Emby" class="app-logo">
<div class="app-title-area"><h3>Emby</h3><span class="app-tagline">Media server</span></div>
@@ -337,7 +339,7 @@
</div>
</div>
<!-- Navidrome -->
<div class="app-card">
<div class="app-card" id="navidrome">
<div class="app-card-header">
<img src="/assets/navidrome-logo.svg" alt="Navidrome" class="app-logo">
<div class="app-title-area"><h3>Navidrome</h3><span class="app-tagline">Music server (Spotify)</span></div>
@@ -354,7 +356,7 @@
</div>
</div>
<!-- Audiobookshelf -->
<div class="app-card">
<div class="app-card" id="audiobookshelf">
<div class="app-card-header">
<img src="/assets/audiobookshelf-logo.svg" alt="Audiobookshelf" class="app-logo">
<div class="app-title-area"><h3>Audiobookshelf</h3><span class="app-tagline">Audiobooks & podcasts</span></div>
@@ -373,7 +375,7 @@
</div>
</div>
<!-- MeTube -->
<div class="app-card">
<div class="app-card" id="metube">
<div class="app-card-header">
<img src="/assets/metube-logo.svg" alt="MeTube" class="app-logo">
<div class="app-title-area"><h3>MeTube</h3><span class="app-tagline">Download videos from a link</span></div>
@@ -391,7 +393,7 @@
</div>
</div>
<!-- Calibre-web -->
<div class="app-card">
<div class="app-card" id="calibre-web">
<div class="app-card-header">
<img src="/assets/calibre-web-logo.svg" alt="Calibre-Web Automated" class="app-logo">
<div class="app-title-area"><h3>Calibre-Web Automated</h3><span class="app-tagline">E-book library</span></div>
@@ -408,7 +410,7 @@
</div>
</div>
<!-- Komga -->
<div class="app-card">
<div class="app-card" id="komga">
<div class="app-card-header">
<img src="/assets/komga-logo.svg" alt="Komga" class="app-logo">
<div class="app-title-area"><h3>Komga</h3><span class="app-tagline">Comics & manga server</span></div>
@@ -424,7 +426,7 @@
</div>
</div>
<!-- Grimmory -->
<div class="app-card">
<div class="app-card" id="grimmory">
<div class="app-card-header">
<img src="/assets/grimmory-logo.svg" alt="Grimmory" class="app-logo">
<div class="app-title-area"><h3>Grimmory</h3><span class="app-tagline">E-book library in the browser</span></div>
@@ -442,7 +444,7 @@
</div>
</div>
<!-- Sonarr -->
<div class="app-card">
<div class="app-card" id="sonarr">
<div class="app-card-header">
<img src="/assets/sonarr-logo.svg" alt="Sonarr" class="app-logo">
<div class="app-title-area"><h3>Sonarr</h3><span class="app-tagline">Series manager</span></div>
@@ -460,7 +462,7 @@
</div>
</div>
<!-- Radarr -->
<div class="app-card">
<div class="app-card" id="radarr">
<div class="app-card-header">
<img src="/assets/radarr-logo.png" alt="Radarr" class="app-logo">
<div class="app-title-area"><h3>Radarr</h3><span class="app-tagline">Film manager</span></div>
@@ -477,7 +479,7 @@
</div>
</div>
<!-- Seerr -->
<div class="app-card">
<div class="app-card" id="seerr">
<div class="app-card-header">
<img src="/assets/seerr-logo.png" alt="Seerr" class="app-logo">
<div class="app-title-area"><h3>Seerr</h3><span class="app-tagline">Media request manager</span></div>
@@ -494,7 +496,7 @@
</div>
</div>
<!-- RoMM -->
<div class="app-card">
<div class="app-card" id="romm">
<div class="app-card-header">
<img src="/assets/romm-logo.svg" alt="RoMM" class="app-logo">
<div class="app-title-area"><h3>RoMM</h3><span class="app-tagline">ROM collection manager</span></div>
@@ -511,7 +513,7 @@
</div>
</div>
<!-- Crafty Controller -->
<div class="app-card">
<div class="app-card" id="crafty-controller">
<div class="app-card-header">
<img src="/assets/crafty-controller-logo.png" alt="Crafty Controller" class="app-logo">
<div class="app-title-area"><h3>Crafty Controller</h3><span class="app-tagline">Minecraft server manager</span></div>
@@ -542,7 +544,7 @@
</div>
<div class="app-grid">
<!-- Home Assistant -->
<div class="app-card">
<div class="app-card" id="home-assistant">
<div class="app-card-header">
<img src="/assets/home-assistant-logo.svg" alt="Home Assistant" class="app-logo">
<div class="app-title-area"><h3>Home Assistant</h3><span class="app-tagline">Smart home hub</span></div>
@@ -563,7 +565,7 @@
</div>
</div>
<!-- n8n -->
<div class="app-card">
<div class="app-card" id="n8n">
<div class="app-card-header">
<img src="/assets/n8n-logo.svg" alt="n8n" class="app-logo">
<div class="app-title-area"><h3>n8n</h3><span class="app-tagline">Workflow automation</span></div>
@@ -583,7 +585,7 @@
</div>
</div>
<!-- Tandoor Recipes -->
<div class="app-card">
<div class="app-card" id="tandoor">
<div class="app-card-header">
<img src="/assets/tandoor-logo.png" alt="Tandoor Recipes" class="app-logo">
<div class="app-title-area"><h3>Tandoor Recipes</h3><span class="app-tagline">Recipe manager</span></div>
@@ -601,7 +603,7 @@
</div>
</div>
<!-- Mealie -->
<div class="app-card">
<div class="app-card" id="mealie">
<div class="app-card-header">
<img src="/assets/mealie-logo.svg" alt="Mealie" class="app-logo">
<div class="app-title-area"><h3>Mealie</h3><span class="app-tagline">Recipes and meal plans</span></div>
@@ -619,7 +621,7 @@
</div>
</div>
<!-- Recipe Importer -->
<div class="app-card">
<div class="app-card" id="recipe-importer">
<div class="app-card-header">
<img src="/assets/recipe-importer-logo.svg" alt="Recipe Importer" class="app-logo">
<div class="app-title-area"><h3>Recipe Importer</h3><span class="app-tagline">From Hungarian recipe sites</span></div>
@@ -636,7 +638,7 @@
</div>
</div>
<!-- Wishlist -->
<div class="app-card">
<div class="app-card" id="wishlist">
<div class="app-card-header">
<img src="/assets/wishlist-logo.svg" alt="Wishlist" class="app-logo">
<div class="app-title-area"><h3>Wishlist</h3><span class="app-tagline">Family wish list</span></div>
@@ -654,7 +656,7 @@
</div>
</div>
<!-- Homebox -->
<div class="app-card">
<div class="app-card" id="homebox">
<div class="app-card-header">
<img src="/assets/homebox-logo.svg" alt="Homebox" class="app-logo">
<div class="app-title-area"><h3>Homebox</h3><span class="app-tagline">Home inventory</span></div>
@@ -672,7 +674,7 @@
</div>
</div>
<!-- Gramps Web -->
<div class="app-card">
<div class="app-card" id="gramps-web">
<div class="app-card-header">
<img src="/assets/gramps-web-logo.png" alt="Gramps Web" class="app-logo">
<div class="app-title-area"><h3>Gramps Web</h3><span class="app-tagline">Family tree builder</span></div>
@@ -691,7 +693,7 @@
</div>
</div>
<!-- SparkyFitness -->
<div class="app-card">
<div class="app-card" id="sparkyfitness">
<div class="app-card-header">
<img src="/assets/sparkyfitness-logo.png" alt="SparkyFitness" class="app-logo">
<div class="app-title-area"><h3>SparkyFitness</h3><span class="app-tagline">Food diary</span></div>
@@ -709,7 +711,7 @@
</div>
</div>
<!-- Actual Budget -->
<div class="app-card">
<div class="app-card" id="actualbudget">
<div class="app-card-header">
<img src="/assets/actualbudget-logo.svg" alt="Actual Budget" class="app-logo">
<div class="app-title-area"><h3>Actual Budget</h3><span class="app-tagline">Budget planner</span></div>
@@ -727,7 +729,7 @@
</div>
</div>
<!-- AdventureLog -->
<div class="app-card">
<div class="app-card" id="adventurelog">
<div class="app-card-header">
<img src="/assets/adventurelog-logo.png" alt="AdventureLog" class="app-logo">
<div class="app-title-area"><h3>AdventureLog</h3><span class="app-tagline">Travel log</span></div>
@@ -747,7 +749,7 @@
</div>
</div>
<!-- Wanderer -->
<div class="app-card">
<div class="app-card" id="wanderer">
<div class="app-card-header">
<img src="/assets/wanderer-logo.svg" alt="Wanderer" class="app-logo">
<div class="app-title-area"><h3>Wanderer</h3><span class="app-tagline">Hike planner</span></div>
@@ -766,7 +768,7 @@
</div>
</div>
<!-- Dawarich -->
<div class="app-card">
<div class="app-card" id="dawarich">
<div class="app-card-header">
<img src="/assets/dawarich-logo.svg" alt="Dawarich" class="app-logo">
<div class="app-title-area"><h3>Dawarich</h3><span class="app-tagline">Instead of Google Timeline</span></div>
@@ -784,7 +786,7 @@
</div>
</div>
<!-- Cal.com -->
<div class="app-card">
<div class="app-card" id="calcom">
<div class="app-card-header">
<img src="/assets/calcom-logo.svg" alt="Cal.com" class="app-logo">
<div class="app-title-area"><h3>Cal.com</h3><span class="app-tagline">Appointment booking</span></div>
@@ -805,7 +807,7 @@
</div>
</div>
<!-- LubeLogger -->
<div class="app-card">
<div class="app-card" id="lubelogger">
<div class="app-card-header">
<img src="/assets/lubelogger-logo.png" alt="LubeLogger" class="app-logo">
<div class="app-title-area"><h3>LubeLogger</h3><span class="app-tagline">Vehicle records</span></div>
@@ -823,7 +825,7 @@
</div>
</div>
<!-- Grocy -->
<div class="app-card">
<div class="app-card" id="grocy">
<div class="app-card-header">
<img src="/assets/grocy-logo.svg" alt="Grocy" class="app-logo">
<div class="app-title-area"><h3>Grocy</h3><span class="app-tagline">Household management</span></div>
@@ -854,7 +856,7 @@
</div>
<div class="app-grid">
<!-- Vikunja -->
<div class="app-card">
<div class="app-card" id="vikunja">
<div class="app-card-header">
<img src="/assets/vikunja-logo.svg" alt="Vikunja" class="app-logo">
<div class="app-title-area"><h3>Vikunja</h3><span class="app-tagline">Task manager (Todoist)</span></div>
@@ -873,7 +875,7 @@
</div>
</div>
<!-- Radicale -->
<div class="app-card">
<div class="app-card" id="radicale">
<div class="app-card-header">
<img src="/assets/radicale-logo.svg" alt="Radicale" class="app-logo">
<div class="app-title-area"><h3>Radicale</h3><span class="app-tagline">Calendar and contacts</span></div>
@@ -891,7 +893,7 @@
</div>
</div>
<!-- Kimai -->
<div class="app-card">
<div class="app-card" id="kimai">
<div class="app-card-header">
<img src="/assets/kimai-logo.png" alt="Kimai" class="app-logo">
<div class="app-title-area"><h3>Kimai</h3><span class="app-tagline">Time tracking</span></div>
@@ -911,7 +913,7 @@
</div>
</div>
<!-- Rallly -->
<div class="app-card">
<div class="app-card" id="rallly">
<div class="app-card-header">
<img src="/assets/rallly-logo.svg" alt="Rallly" class="app-logo">
<div class="app-title-area"><h3>Rallly</h3><span class="app-tagline">Meeting poll (Doodle)</span></div>
@@ -928,7 +930,7 @@
</div>
</div>
<!-- Claper -->
<div class="app-card">
<div class="app-card" id="claper">
<div class="app-card-header">
<img src="/assets/claper-logo.svg" alt="Claper" class="app-logo">
<div class="app-title-area"><h3>Claper</h3><span class="app-tagline">Interactive presentations</span></div>
@@ -948,7 +950,7 @@
</div>
</div>
<!-- Ghost -->
<div class="app-card">
<div class="app-card" id="ghost">
<div class="app-card-header">
<img src="/assets/ghost-logo.svg" alt="Ghost" class="app-logo">
<div class="app-title-area"><h3>Ghost</h3><span class="app-tagline">Blog & newsletter platform</span></div>
@@ -967,7 +969,7 @@
</div>
</div>
<!-- Paperless-ngx -->
<div class="app-card">
<div class="app-card" id="paperless-ngx">
<div class="app-card-header">
<img src="/assets/paperless-ngx-logo.svg" alt="Paperless-ngx" class="app-logo">
<div class="app-title-area"><h3>Paperless-ngx</h3><span class="app-tagline">A digital filing cabinet</span></div>
@@ -985,7 +987,7 @@
</div>
</div>
<!-- BookStack -->
<div class="app-card">
<div class="app-card" id="bookstack">
<div class="app-card-header">
<img src="/assets/bookstack-logo.svg" alt="BookStack" class="app-logo">
<div class="app-title-area"><h3>BookStack</h3><span class="app-tagline">Book-style documentation</span></div>
@@ -1003,7 +1005,7 @@
</div>
</div>
<!-- Outline -->
<div class="app-card">
<div class="app-card" id="outline">
<div class="app-card-header">
<img src="/assets/outline-logo.svg" alt="Outline" class="app-logo">
<div class="app-title-area"><h3>Outline</h3><span class="app-tagline">Team knowledge base</span></div>
@@ -1020,7 +1022,7 @@
</div>
</div>
<!-- Docmost -->
<div class="app-card">
<div class="app-card" id="docmost">
<div class="app-card-header">
<img src="/assets/docmost-logo.png" alt="Docmost" class="app-logo">
<div class="app-title-area"><h3>Docmost</h3><span class="app-tagline">A Notion-like wiki</span></div>
@@ -1038,7 +1040,7 @@
</div>
</div>
<!-- Karakeep -->
<div class="app-card">
<div class="app-card" id="karakeep">
<div class="app-card-header">
<img src="/assets/karakeep-logo.svg" alt="Karakeep" class="app-logo">
<div class="app-title-area"><h3>Karakeep</h3><span class="app-tagline">Your own searchable archive</span></div>
@@ -1056,7 +1058,7 @@
</div>
</div>
<!-- PrivateBin -->
<div class="app-card">
<div class="app-card" id="privatebin">
<div class="app-card-header">
<img src="/assets/privatebin-logo.png" alt="PrivateBin" class="app-logo">
<div class="app-title-area"><h3>PrivateBin</h3><span class="app-tagline">Encrypted note sharing</span></div>
@@ -1086,7 +1088,7 @@
</div>
<div class="app-grid">
<!-- Vaultwarden -->
<div class="app-card">
<div class="app-card" id="vaultwarden">
<div class="app-card-header">
<img src="/assets/vaultwarden-logo.svg" alt="Vaultwarden" class="app-logo">
<div class="app-title-area"><h3>Vaultwarden</h3><span class="app-tagline">Password manager (Bitwarden)</span></div>
@@ -1102,7 +1104,7 @@
</div>
</div>
<!-- Homepage -->
<div class="app-card">
<div class="app-card" id="homepage">
<div class="app-card-header">
<img src="/assets/homepage-logo.svg" alt="Homepage" class="app-logo">
<div class="app-title-area"><h3>Homepage</h3><span class="app-tagline">Personal start page</span></div>
@@ -1121,7 +1123,7 @@
</div>
</div>
<!-- Glance -->
<div class="app-card">
<div class="app-card" id="glance">
<div class="app-card-header">
<img src="/assets/glance-logo.svg" alt="Glance" class="app-logo">
<div class="app-title-area"><h3>Glance</h3><span class="app-tagline">Information dashboard</span></div>
@@ -1140,7 +1142,7 @@
</div>
</div>
<!-- Uptime Kuma -->
<div class="app-card">
<div class="app-card" id="uptime-kuma">
<div class="app-card-header">
<img src="/assets/uptime-kuma-logo.svg" alt="Uptime Kuma" class="app-logo">
<div class="app-title-area"><h3>Uptime Kuma</h3><span class="app-tagline">Service monitoring</span></div>
@@ -1158,7 +1160,7 @@
</div>
</div>
<!-- Grafana -->
<div class="app-card">
<div class="app-card" id="grafana">
<div class="app-card-header">
<img src="/assets/grafana-logo.svg" alt="Grafana" class="app-logo">
<div class="app-title-area"><h3>Grafana</h3><span class="app-tagline">Data visualisation</span></div>
@@ -1177,7 +1179,7 @@
</div>
</div>
<!-- Termix -->
<div class="app-card">
<div class="app-card" id="termix">
<div class="app-card-header">
<img src="/assets/termix-logo.svg" alt="Termix" class="app-logo">
<div class="app-title-area"><h3>Termix</h3><span class="app-tagline">Server manager (SSH)</span></div>
@@ -1196,7 +1198,7 @@
</div>
</div>
<!-- Gitea -->
<div class="app-card">
<div class="app-card" id="gitea">
<div class="app-card-header">
<img src="/assets/gitea-logo.svg" alt="Gitea" class="app-logo">
<div class="app-title-area"><h3>Gitea</h3><span class="app-tagline">Git server (GitHub)</span></div>
@@ -1214,7 +1216,7 @@
</div>
</div>
<!-- Code-Server -->
<div class="app-card">
<div class="app-card" id="code-server">
<div class="app-card-header">
<img src="/assets/code-server-logo.svg" alt="Code-Server" class="app-logo">
<div class="app-title-area"><h3>Code-Server</h3><span class="app-tagline">VS Code in the browser</span></div>
@@ -1231,7 +1233,7 @@
</div>
</div>
<!-- OpenGist -->
<div class="app-card">
<div class="app-card" id="opengist">
<div class="app-card-header">
<img src="/assets/opengist-logo.png" alt="OpenGist" class="app-logo">
<div class="app-title-area"><h3>OpenGist</h3><span class="app-tagline">Code snippets (Gist)</span></div>