Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
135 changes: 135 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>PixelCat — a pixel cat that lives on your desktop</title>
<meta name="description" content="A cute pixel cat desktop pet. It follows your cursor, kneads your keyboard when you type, naps when idle, and purrs when you pet it. Built from scratch with Electron." />

<!-- social preview -->
<meta property="og:title" content="PixelCat — a pixel cat that lives on your desktop" />
<meta property="og:description" content="It follows your cursor, kneads your keyboard when you type, naps when idle, and purrs when you pet it." />
<meta property="og:type" content="website" />
<meta property="og:image" content="assets/showcase.png" />
<meta name="twitter:card" content="summary_large_image" />

<link rel="icon" type="image/png" href="assets/icon-512.png" />
<style>
:root {
--bg: #0d0e14;
--panel: #15161d;
--ink: #f4f4f6;
--muted: #a6a8b8;
--green: #22c55e;
--line: #262838;
}
* { box-sizing: border-box; }
html, body { margin: 0; }
body {
background: radial-gradient(1100px 700px at 50% -10%, #1b1d2b 0%, var(--bg) 60%);
color: var(--ink);
font: 16px/1.6 ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
min-height: 100vh;
padding: env(safe-area-inset-top) 20px calc(48px + env(safe-area-inset-bottom));
}
.wrap { max-width: 760px; margin: 0 auto; }
header { text-align: center; padding: 56px 0 24px; }
header img.logo {
width: 120px; height: 120px; image-rendering: pixelated;
filter: drop-shadow(0 8px 24px rgba(0,0,0,.45));
}
h1 { font-size: clamp(34px, 8vw, 52px); margin: 18px 0 6px; letter-spacing: -0.02em; }
.tag { color: var(--muted); font-size: clamp(16px, 4.4vw, 19px); margin: 0 auto; max-width: 30ch; }

.demo {
margin: 28px 0 8px; border: 1px solid var(--line); border-radius: 18px;
overflow: hidden; background: var(--panel);
box-shadow: 0 20px 60px rgba(0,0,0,.45);
}
.demo video, .demo img { display: block; width: 100%; height: auto; background: var(--panel); }
.demo figcaption {
color: var(--muted); font-size: 13.5px; text-align: center;
padding: 10px 14px; border-top: 1px solid var(--line);
}

.actions { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; margin: 26px 0 8px; }
.btn {
display: inline-flex; align-items: center; gap: 8px;
padding: 13px 20px; border-radius: 12px; text-decoration: none;
font-weight: 600; font-size: 15.5px; border: 1px solid var(--line);
transition: transform .08s ease, background .15s ease, border-color .15s ease;
}
.btn:active { transform: translateY(1px); }
.btn.primary { background: var(--green); color: #06210f; border-color: transparent; }
.btn.primary:hover { background: #2fd169; }
.btn.ghost { background: var(--panel); color: var(--ink); }
.btn.ghost:hover { border-color: #3a3d52; }

.features { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; margin: 36px 0; }
.feat { background: var(--panel); border: 1px solid var(--line); border-radius: 14px; padding: 16px; }
.feat b { display: block; margin-bottom: 2px; }
.feat span { color: var(--muted); font-size: 14px; }

.install { background: var(--panel); border: 1px solid var(--line); border-radius: 14px; padding: 18px 20px; margin: 18px 0; }
.install h2 { margin: 0 0 12px; font-size: 18px; }
pre {
margin: 0; padding: 14px 16px; background: #0b0c12; border: 1px solid var(--line);
border-radius: 10px; overflow-x: auto; color: #d7dae8;
font: 13.5px/1.7 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}
.showcase { margin: 30px 0; }
.showcase img { width: 100%; border: 1px solid var(--line); border-radius: 14px; image-rendering: pixelated; }
footer { text-align: center; color: var(--muted); font-size: 13.5px; padding-top: 24px; border-top: 1px solid var(--line); margin-top: 36px; }
footer a { color: var(--muted); }
a { color: #8fb8ff; }
</style>
</head>
<body>
<div class="wrap">
<header>
<img class="logo" src="assets/icon-512.png" alt="PixelCat logo" />
<h1>PixelCat</h1>
<p class="tag">A cute pixel cat that lives on your desktop.</p>
</header>

<figure class="demo">
<video autoplay loop muted playsinline poster="assets/showcase.png">
<source src="assets/pixelcat-demo.mp4" type="video/mp4" />
<!-- fallback for browsers that block autoplaying video -->
<img src="assets/pixelcat-demo.gif" alt="PixelCat demo: it sits, naps, kneads the keyboard, hunts, and gets pet" />
</video>
<figcaption>It sits &amp; follows your cursor · naps when idle · kneads when you type · pounces to hunt · purrs when you pet it</figcaption>
</figure>

<div class="actions">
<a class="btn primary" href="https://github.com/JOhnsonKC201/pixelcat">★ View on GitHub</a>
<a class="btn ghost" href="https://github.com/JOhnsonKC201/pixelcat/raw/main/assets/pixelcat-demo.mp4">▶ Watch the clip</a>
</div>

<div class="features">
<div class="feat"><b>Follows your cursor</b><span>Sits in the corner and watches the mouse.</span></div>
<div class="feat"><b>Kneads when you type</b><span>Taps its paws along with your keyboard.</span></div>
<div class="feat"><b>Naps when idle</b><span>Curls up and sleeps when you step away.</span></div>
<div class="feat"><b>Purrs when pet</b><span>Drag &amp; pet it — it stretches like mochi.</span></div>
</div>

<div class="install">
<h2>Run it on your machine</h2>
<pre>git clone https://github.com/JOhnsonKC201/pixelcat.git
cd pixelcat
npm install
npm start</pre>
</div>

<figure class="showcase">
<img src="assets/showcase.png" alt="Every PixelCat pose across every coat" />
</figure>

<footer>
Built from scratch with Electron — nearly every sprite, animation, and sound is original and procedural.<br />
<a href="https://github.com/JOhnsonKC201/pixelcat">github.com/JOhnsonKC201/pixelcat</a> · MIT
</footer>
</div>
</body>
</html>