diff --git a/src/pages/index.astro b/src/pages/index.astro index 115b476..cff6396 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -13,6 +13,7 @@ import BaseLayout from "../layouts/BaseLayout.astro";

Hidden Den Cafe

+ View Projects ↓
══════════════════════════════
@@ -42,13 +43,54 @@ import BaseLayout from "../layouts/BaseLayout.astro";
══════════════════════════════
-
+

Projects

-
-

OpenRabbit

-

AI code review system for Gitea with automated PR review, issue triage, interactive chat, and codebase analysis.

+
+
+

DevDen

+

Concept/proof-of-concept den exploring ideas and workflows—non-production, unsupported.

+
+
+

Cozy-Den

+

A warm, self-hosted corner of the internet creating comfortable digital spaces.

+
+
+

TailAssistant

+

Voice companion inspired by Joey—ready to listen and respond from your desk.

+
+
+

GuardDen

+

Discord moderation denbot blending AI filtering with classic tools to keep spaces warm and safe.

+
+
+

openrabbit

+

Enterprise-grade AI code review for Gitea/GitHub with PR review, triage, chat, and analysis.

+
+
+

loyal_companion

+

A companion for deep, steady care—processing grief, navigating attachment, and holding space.

+
+
+

Bean-Den

+

A personal, cozy space to track your coffee experiences—discover what you love and why.

+
+
+

Burrow

+

Self-hosted AI chat with a terminal aesthetic and git-backed knowledge base you can search and update.

+
+
+

mrunicellular

+

Modern site for streamer MrUnicellular (Joey) with live stream, backend API, and database support.

+
+
+

Reddit_Downloader

+

Python-powered downloader to archive Reddit content and keep local copies.

+
+
+

telegram-sticker-downloader

+

Python Telegram sticker downloader to fetch packs for offline keeps.

+
-

More projects coming soon...

══════════════════════════════
@@ -183,32 +225,79 @@ import BaseLayout from "../layouts/BaseLayout.astro"; color: var(--color-text-dim); } - .project { - margin-bottom: var(--space-sm); + .pill-link { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 6px; + margin: var(--space-xs) auto; + padding: 8px 14px; + border-radius: 999px; + background: var(--color-bg-light); + color: var(--color-accent); + font-weight: 600; + font-size: 0.9rem; + text-decoration: none; + border: 1px solid var(--color-surface); + transition: transform 0.15s ease, border-color 0.15s ease, color 0.15s ease; } - .project h3 { + .pill-link:hover { + color: var(--color-accent-bright); + border-color: var(--color-accent); + transform: translateY(-1px); + } + + .pill-link:focus-visible { + outline: 2px solid var(--color-accent); + outline-offset: 3px; + } + + .projects-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); + gap: var(--space-md); + } + + .project-card { + background: var(--color-bg-light); + border: 1px solid var(--color-surface); + border-radius: 10px; + padding: var(--space-md); + box-shadow: 0 6px 18px rgba(0, 0, 0, 0.15); + transition: transform 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease; + } + + .project-card:hover { + transform: translateY(-2px); + border-color: var(--color-accent); + box-shadow: 0 10px 28px rgba(0, 0, 0, 0.2); + } + + .project-card h3 { font-size: 1rem; margin-bottom: var(--space-xs); } - .project h3 a { - color: var(--color-blue); + .project-card h3 a { + color: var(--color-accent); + text-decoration: none; } - .project h3 a:hover { + .project-card h3 a:hover { color: var(--color-accent-bright); + text-decoration: underline; } - .project p { + .project-card h3 a:focus-visible { + outline: 2px solid var(--color-accent); + outline-offset: 3px; + } + + .project-card p { color: var(--color-text-dim); font-size: 0.9rem; - } - - .note { - color: var(--color-surface); - font-style: italic; - font-size: 0.85rem; + line-height: 1.6; } .links {