@senior: Redesign: personal showcase with project stories #8
+20
-20
@@ -22,7 +22,7 @@
|
|||||||
<div class="section-head">
|
<div class="section-head">
|
||||||
<h2 class="section-title">CipherDolls — AI companion platform</h2>
|
<h2 class="section-title">CipherDolls — AI companion platform</h2>
|
||||||
<p class="section-lede">What if an AI companion wasn't just an app, but something physical in your room? CipherDolls is my biggest project: an AI companion platform where characters can talk, listen — and live inside real devices.</p>
|
<p class="section-lede">What if an AI companion wasn't just an app, but something physical in your room? CipherDolls is my biggest project: an AI companion platform where characters can talk, listen — and live inside real devices.</p>
|
||||||
<a class="section-link" href="https://github.com/cipherdolls" rel="noopener" target="_blank">github.com/cipherdolls ↗</a>
|
<a class="section-link" href="https://github.com/cipherdolls" rel="noopener noreferrer" target="_blank">github.com/cipherdolls ↗</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="cards">
|
<div class="cards">
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
<ul class="tags">
|
<ul class="tags">
|
||||||
<li>Bun</li><li>Elysia</li><li>Prisma</li><li>PostgreSQL</li><li>Redis</li><li>MQTT</li>
|
<li>Bun</li><li>Elysia</li><li>Prisma</li><li>PostgreSQL</li><li>Redis</li><li>MQTT</li>
|
||||||
</ul>
|
</ul>
|
||||||
<a class="card-link" href="https://github.com/cipherdolls/core" rel="noopener" target="_blank">View on GitHub ↗</a>
|
<a class="card-link" href="https://github.com/cipherdolls/core" rel="noopener noreferrer" target="_blank">View on GitHub ↗</a>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<article class="card">
|
<article class="card">
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
<ul class="tags">
|
<ul class="tags">
|
||||||
<li>Bun</li><li>Elysia</li><li>Prisma</li><li>PostgreSQL</li>
|
<li>Bun</li><li>Elysia</li><li>Prisma</li><li>PostgreSQL</li>
|
||||||
</ul>
|
</ul>
|
||||||
<a class="card-link" href="https://github.com/cipherdolls/server" rel="noopener" target="_blank">View on GitHub ↗</a>
|
<a class="card-link" href="https://github.com/cipherdolls/server" rel="noopener noreferrer" target="_blank">View on GitHub ↗</a>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<article class="card">
|
<article class="card">
|
||||||
@@ -50,7 +50,7 @@
|
|||||||
<ul class="tags">
|
<ul class="tags">
|
||||||
<li>React Router</li><li>TypeScript</li><li>Tailwind</li>
|
<li>React Router</li><li>TypeScript</li><li>Tailwind</li>
|
||||||
</ul>
|
</ul>
|
||||||
<a class="card-link" href="https://github.com/cipherdolls/webapp" rel="noopener" target="_blank">View on GitHub ↗</a>
|
<a class="card-link" href="https://github.com/cipherdolls/webapp" rel="noopener noreferrer" target="_blank">View on GitHub ↗</a>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<article class="card">
|
<article class="card">
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
<ul class="tags">
|
<ul class="tags">
|
||||||
<li>TypeScript</li><li>Redis</li><li>WebSocket</li>
|
<li>TypeScript</li><li>Redis</li><li>WebSocket</li>
|
||||||
</ul>
|
</ul>
|
||||||
<a class="card-link" href="https://github.com/cipherdolls/stream-player" rel="noopener" target="_blank">View on GitHub ↗</a>
|
<a class="card-link" href="https://github.com/cipherdolls/stream-player" rel="noopener noreferrer" target="_blank">View on GitHub ↗</a>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<article class="card">
|
<article class="card">
|
||||||
@@ -68,7 +68,7 @@
|
|||||||
<ul class="tags">
|
<ul class="tags">
|
||||||
<li>TypeScript</li><li>WebSocket</li><li>ffmpeg</li>
|
<li>TypeScript</li><li>WebSocket</li><li>ffmpeg</li>
|
||||||
</ul>
|
</ul>
|
||||||
<a class="card-link" href="https://github.com/cipherdolls/stream-recorder" rel="noopener" target="_blank">View on GitHub ↗</a>
|
<a class="card-link" href="https://github.com/cipherdolls/stream-recorder" rel="noopener noreferrer" target="_blank">View on GitHub ↗</a>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<article class="card">
|
<article class="card">
|
||||||
@@ -77,7 +77,7 @@
|
|||||||
<ul class="tags">
|
<ul class="tags">
|
||||||
<li>C</li><li>ESP-IDF</li><li>ESP32-S3</li><li>LVGL</li>
|
<li>C</li><li>ESP-IDF</li><li>ESP32-S3</li><li>LVGL</li>
|
||||||
</ul>
|
</ul>
|
||||||
<a class="card-link" href="https://github.com/cipherdolls/firmware-watcher" rel="noopener" target="_blank">View on GitHub ↗</a>
|
<a class="card-link" href="https://github.com/cipherdolls/firmware-watcher" rel="noopener noreferrer" target="_blank">View on GitHub ↗</a>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<article class="card">
|
<article class="card">
|
||||||
@@ -86,7 +86,7 @@
|
|||||||
<ul class="tags">
|
<ul class="tags">
|
||||||
<li>C</li><li>ESP-IDF</li><li>ESP32-S3</li>
|
<li>C</li><li>ESP-IDF</li><li>ESP32-S3</li>
|
||||||
</ul>
|
</ul>
|
||||||
<a class="card-link" href="https://github.com/cipherdolls/firmware-m5sticks3" rel="noopener" target="_blank">View on GitHub ↗</a>
|
<a class="card-link" href="https://github.com/cipherdolls/firmware-m5sticks3" rel="noopener noreferrer" target="_blank">View on GitHub ↗</a>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@@ -106,7 +106,7 @@
|
|||||||
<ul class="tags">
|
<ul class="tags">
|
||||||
<li>Solidity</li><li>React</li><li>Swarm PSS</li><li>WebRTC</li>
|
<li>Solidity</li><li>React</li><li>Swarm PSS</li><li>WebRTC</li>
|
||||||
</ul>
|
</ul>
|
||||||
<a class="card-link" href="https://github.com/ffaerber/SwarmChat" rel="noopener" target="_blank">View on GitHub ↗</a>
|
<a class="card-link" href="https://github.com/ffaerber/SwarmChat" rel="noopener noreferrer" target="_blank">View on GitHub ↗</a>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<article class="card">
|
<article class="card">
|
||||||
@@ -115,7 +115,7 @@
|
|||||||
<ul class="tags">
|
<ul class="tags">
|
||||||
<li>Solidity</li><li>Foundry</li><li>React</li><li>Swarm</li>
|
<li>Solidity</li><li>Foundry</li><li>React</li><li>Swarm</li>
|
||||||
</ul>
|
</ul>
|
||||||
<a class="card-link" href="https://github.com/ffaerber/pinkchainsaw" rel="noopener" target="_blank">View on GitHub ↗</a>
|
<a class="card-link" href="https://github.com/ffaerber/pinkchainsaw" rel="noopener noreferrer" target="_blank">View on GitHub ↗</a>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<article class="card">
|
<article class="card">
|
||||||
@@ -124,7 +124,7 @@
|
|||||||
<ul class="tags">
|
<ul class="tags">
|
||||||
<li>Solidity</li><li>Gnosis Chain</li><li>Swarm</li>
|
<li>Solidity</li><li>Gnosis Chain</li><li>Swarm</li>
|
||||||
</ul>
|
</ul>
|
||||||
<a class="card-link" href="https://github.com/ffaerber/freeemarket" rel="noopener" target="_blank">View on GitHub ↗</a>
|
<a class="card-link" href="https://github.com/ffaerber/freeemarket" rel="noopener noreferrer" target="_blank">View on GitHub ↗</a>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<article class="card">
|
<article class="card">
|
||||||
@@ -133,7 +133,7 @@
|
|||||||
<ul class="tags">
|
<ul class="tags">
|
||||||
<li>React</li><li>TypeScript</li><li>Vite</li>
|
<li>React</li><li>TypeScript</li><li>Vite</li>
|
||||||
</ul>
|
</ul>
|
||||||
<a class="card-link" href="https://github.com/ffaerber/walletmatrix" rel="noopener" target="_blank">View on GitHub ↗</a>
|
<a class="card-link" href="https://github.com/ffaerber/walletmatrix" rel="noopener noreferrer" target="_blank">View on GitHub ↗</a>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<article class="card">
|
<article class="card">
|
||||||
@@ -142,7 +142,7 @@
|
|||||||
<ul class="tags">
|
<ul class="tags">
|
||||||
<li>React</li><li>wagmi</li><li>npm package</li>
|
<li>React</li><li>wagmi</li><li>npm package</li>
|
||||||
</ul>
|
</ul>
|
||||||
<a class="card-link" href="https://github.com/ffaerber/swarm-connect" rel="noopener" target="_blank">View on GitHub ↗</a>
|
<a class="card-link" href="https://github.com/ffaerber/swarm-connect" rel="noopener noreferrer" target="_blank">View on GitHub ↗</a>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<article class="card">
|
<article class="card">
|
||||||
@@ -151,7 +151,7 @@
|
|||||||
<ul class="tags">
|
<ul class="tags">
|
||||||
<li>Next.js</li><li>TypeScript</li>
|
<li>Next.js</li><li>TypeScript</li>
|
||||||
</ul>
|
</ul>
|
||||||
<a class="card-link" href="https://github.com/ffaerber/opentab" rel="noopener" target="_blank">View on GitHub ↗</a>
|
<a class="card-link" href="https://github.com/ffaerber/opentab" rel="noopener noreferrer" target="_blank">View on GitHub ↗</a>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@@ -171,7 +171,7 @@
|
|||||||
<ul class="tags">
|
<ul class="tags">
|
||||||
<li>Python</li><li>FastAPI</li><li>CUDA</li>
|
<li>Python</li><li>FastAPI</li><li>CUDA</li>
|
||||||
</ul>
|
</ul>
|
||||||
<a class="card-link" href="https://github.com/ffaerber/whisper-cuda" rel="noopener" target="_blank">View on GitHub ↗</a>
|
<a class="card-link" href="https://github.com/ffaerber/whisper-cuda" rel="noopener noreferrer" target="_blank">View on GitHub ↗</a>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<article class="card">
|
<article class="card">
|
||||||
@@ -180,7 +180,7 @@
|
|||||||
<ul class="tags">
|
<ul class="tags">
|
||||||
<li>Python</li><li>FastAPI</li><li>CUDA</li>
|
<li>Python</li><li>FastAPI</li><li>CUDA</li>
|
||||||
</ul>
|
</ul>
|
||||||
<a class="card-link" href="https://github.com/ffaerber/kokoro-cuda" rel="noopener" target="_blank">View on GitHub ↗</a>
|
<a class="card-link" href="https://github.com/ffaerber/kokoro-cuda" rel="noopener noreferrer" target="_blank">View on GitHub ↗</a>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<article class="card">
|
<article class="card">
|
||||||
@@ -189,7 +189,7 @@
|
|||||||
<ul class="tags">
|
<ul class="tags">
|
||||||
<li>Python</li><li>vLLM</li><li>CUDA</li>
|
<li>Python</li><li>vLLM</li><li>CUDA</li>
|
||||||
</ul>
|
</ul>
|
||||||
<a class="card-link" href="https://github.com/ffaerber/voxtral-cuda" rel="noopener" target="_blank">View on GitHub ↗</a>
|
<a class="card-link" href="https://github.com/ffaerber/voxtral-cuda" rel="noopener noreferrer" target="_blank">View on GitHub ↗</a>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@@ -208,7 +208,7 @@
|
|||||||
<ul class="tags">
|
<ul class="tags">
|
||||||
<li>TypeScript</li><li>Fastify</li><li>SQLite</li>
|
<li>TypeScript</li><li>Fastify</li><li>SQLite</li>
|
||||||
</ul>
|
</ul>
|
||||||
<a class="card-link" href="https://github.com/ffaerber/stakingtracker" rel="noopener" target="_blank">View on GitHub ↗</a>
|
<a class="card-link" href="https://github.com/ffaerber/stakingtracker" rel="noopener noreferrer" target="_blank">View on GitHub ↗</a>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@@ -219,8 +219,8 @@
|
|||||||
<footer class="site-footer">
|
<footer class="site-footer">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<nav class="footer-links">
|
<nav class="footer-links">
|
||||||
<a href="https://github.com/ffaerber" rel="noopener" target="_blank">github.com/ffaerber ↗</a>
|
<a href="https://github.com/ffaerber" rel="noopener noreferrer" target="_blank">github.com/ffaerber ↗</a>
|
||||||
<a href="https://github.com/cipherdolls" rel="noopener" target="_blank">github.com/cipherdolls ↗</a>
|
<a href="https://github.com/cipherdolls" rel="noopener noreferrer" target="_blank">github.com/cipherdolls ↗</a>
|
||||||
</nav>
|
</nav>
|
||||||
<p class="footer-meta">Served from a container built in <a href="https://git.ffaerber.duckdns.org/ffaerber/homepage" rel="noopener">ffaerber/homepage</a>.</p>
|
<p class="footer-meta">Served from a container built in <a href="https://git.ffaerber.duckdns.org/ffaerber/homepage" rel="noopener">ffaerber/homepage</a>.</p>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+7
-4
@@ -6,6 +6,7 @@
|
|||||||
--accent: #58a6ff;
|
--accent: #58a6ff;
|
||||||
--border: #30363d;
|
--border: #30363d;
|
||||||
--tag-bg: #1f2630;
|
--tag-bg: #1f2630;
|
||||||
|
--tag-fg: #8a929e;
|
||||||
--radius: 12px;
|
--radius: 12px;
|
||||||
--maxw: 64rem;
|
--maxw: 64rem;
|
||||||
}
|
}
|
||||||
@@ -19,6 +20,7 @@
|
|||||||
--accent: #0969da;
|
--accent: #0969da;
|
||||||
--border: #d0d7de;
|
--border: #d0d7de;
|
||||||
--tag-bg: #eaeef2;
|
--tag-bg: #eaeef2;
|
||||||
|
--tag-fg: #57606a;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -72,10 +74,11 @@ body {
|
|||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
}
|
}
|
||||||
.section-lede {
|
.section-lede {
|
||||||
|
display: block;
|
||||||
|
max-width: 60ch;
|
||||||
margin: 0 0 0.6rem;
|
margin: 0 0 0.6rem;
|
||||||
color: var(--muted);
|
color: var(--muted);
|
||||||
font-size: 1.05rem;
|
font-size: 1.05rem;
|
||||||
max-width: 46rem;
|
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
line-height: 1.65;
|
line-height: 1.65;
|
||||||
}
|
}
|
||||||
@@ -113,7 +116,7 @@ body {
|
|||||||
letter-spacing: -0.01em;
|
letter-spacing: -0.01em;
|
||||||
}
|
}
|
||||||
.card-story {
|
.card-story {
|
||||||
margin: 0 0 1.1rem;
|
margin: 0.5rem 0 1.1rem;
|
||||||
color: var(--fg);
|
color: var(--fg);
|
||||||
font-size: 1.02rem;
|
font-size: 1.02rem;
|
||||||
line-height: 1.65;
|
line-height: 1.65;
|
||||||
@@ -132,13 +135,13 @@ body {
|
|||||||
.tags li {
|
.tags li {
|
||||||
font-size: 0.7rem;
|
font-size: 0.7rem;
|
||||||
line-height: 1.4;
|
line-height: 1.4;
|
||||||
color: var(--muted);
|
color: var(--tag-fg);
|
||||||
background: var(--tag-bg);
|
background: var(--tag-bg);
|
||||||
border: 1px solid var(--border);
|
border: 1px solid var(--border);
|
||||||
border-radius: 999px;
|
border-radius: 999px;
|
||||||
padding: 0.1rem 0.5rem;
|
padding: 0.1rem 0.5rem;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
opacity: 0.85;
|
opacity: 0.95;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Card link — subtle, sits below the story */
|
/* Card link — subtle, sits below the story */
|
||||||
|
|||||||
Reference in New Issue
Block a user