Skip to content
Merged
Show file tree
Hide file tree
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
304 changes: 304 additions & 0 deletions .stitch/designs/app-idea-where-to-start-cover.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,304 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=2400, height=1260">
<title>Have an App Idea? Here's Where to Start - Cover</title>
<style>
/* Use the site's bundled fonts so the cover renders without network access. */
@font-face { font-family: 'Space Grotesk'; font-style: normal; font-weight: 300 700; src: url('../../themes/beaver/static/fonts/space-grotesk-latin.woff2') format('woff2'); }
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 100 900; src: url('../../themes/beaver/static/fonts/inter-latin.woff2') format('woff2'); }
@font-face { font-family: 'JetBrains Mono'; font-style: normal; font-weight: 100 800; src: url('../../themes/beaver/static/fonts/jetbrains-mono-latin.woff2') format('woff2'); }
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }

html, body {
width: 2400px;
height: 1260px;
overflow: hidden;
background: linear-gradient(135deg, #0d1117 0%, #10141a 50%, #1a0a2e 100%);
font-family: 'Space Grotesk', 'Inter', sans-serif;
position: relative;
}

/* Grid dots backdrop */
.grid-dots {
position: absolute;
inset: 0;
background-image: radial-gradient(circle, rgba(204,52,45,0.05) 1px, transparent 1px);
background-size: 48px 48px;
pointer-events: none;
}

/* Ambient radial glows */
.glow-ruby {
position: absolute;
width: 900px;
height: 900px;
right: -100px;
top: 100px;
background: radial-gradient(circle, rgba(204,52,45,0.10) 0%, transparent 70%);
pointer-events: none;
}
.glow-purple {
position: absolute;
width: 800px;
height: 800px;
left: -100px;
bottom: -100px;
background: radial-gradient(circle, rgba(168,85,247,0.09) 0%, transparent 70%);
pointer-events: none;
}

/* === SLOT 1: Brand + Category (top-left) === */
.brand-row {
position: absolute;
top: 80px;
left: 100px;
display: flex;
align-items: baseline;
gap: 16px;
z-index: 10;
}
.brand-name {
font-family: 'Space Grotesk', sans-serif;
font-weight: 700;
font-size: 56px;
letter-spacing: -0.020em;
color: #cc342d;
}
.brand-sep {
font-family: 'Inter', sans-serif;
font-weight: 600;
font-size: 26px;
color: rgba(223,226,235,0.30);
text-transform: uppercase;
letter-spacing: 0.22em;
}
.category {
font-family: 'Inter', sans-serif;
font-weight: 600;
font-size: 26px;
text-transform: uppercase;
letter-spacing: 0.22em;
color: #7dd0fe;
}

/* === SLOT 2: Year Pill (top-right) === */
.year-pill {
position: absolute;
top: 80px;
right: 100px;
background: #cc342d;
color: #ffb4ab;
font-family: 'Space Grotesk', sans-serif;
font-weight: 700;
font-size: 34px;
letter-spacing: -0.005em;
padding: 14px 36px;
border-radius: 40px;
z-index: 10;
}

/* === SLOT 3: Headline (mid-left, 3 lines) === */
.hero {
position: absolute;
top: 280px;
left: 100px;
z-index: 10;
max-width: 1400px;
}
.hero-line {
font-family: 'Space Grotesk', sans-serif;
font-weight: 800;
font-size: 180px;
letter-spacing: -0.030em;
line-height: 1.05;
}
.hero-line-1 { color: #dfe2eb; }
.hero-line-2 {
background: linear-gradient(90deg, #cc342d 0%, #a855f7 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.hero-line-3 { color: #dfe2eb; font-size: 150px; }

/* === SLOT 4: Ruby Gem SVG (mid-right) === */
.gem-container {
position: absolute;
right: 80px;
top: 240px;
width: 600px;
height: 640px;
z-index: 5;
}
.gem-container svg { width: 100%; height: 100%; }

/* === SLOT 5: Stat Chips (bottom-left, 3 chips) === */
.chips-row {
position: absolute;
bottom: 80px;
left: 100px;
display: flex;
gap: 24px;
z-index: 10;
}
.chip {
background: rgba(28,32,38,0.75);
border-radius: 14px;
padding: 20px 32px;
display: flex;
flex-direction: column;
gap: 6px;
border-left: 4px solid;
backdrop-filter: blur(8px);
}
.chip-1 { border-left-color: #cc342d; }
.chip-2 { border-left-color: #a855f7; }
.chip-3 { border-left-color: #7dd0fe; }
.chip-label {
font-family: 'Inter', sans-serif;
font-weight: 600;
font-size: 22px;
text-transform: uppercase;
letter-spacing: 0.14em;
color: rgba(223,226,235,0.55);
}
.chip-value {
font-family: 'Space Grotesk', sans-serif;
font-weight: 700;
font-size: 30px;
letter-spacing: -0.005em;
color: #dfe2eb;
}

/* === SLOT 6: Status indicator (bottom-right) === */
.status {
position: absolute;
bottom: 80px;
right: 100px;
display: flex;
align-items: center;
gap: 14px;
z-index: 10;
}
.status-dot {
width: 16px;
height: 16px;
border-radius: 50%;
background: #22c55e;
box-shadow: 0 0 12px rgba(34,197,94,0.5);
}
.status-text {
font-family: 'JetBrains Mono', monospace;
font-weight: 600;
font-size: 22px;
text-transform: uppercase;
letter-spacing: 0.20em;
color: rgba(223,226,235,0.70);
}
</style>
</head>
<body>

<div class="grid-dots"></div>
<div class="glow-ruby"></div>
<div class="glow-purple"></div>

<!-- Slot 1: Brand + Category -->
<div class="brand-row">
<span class="brand-name">JetThoughts</span>
<span class="brand-sep">|</span>
<span class="category">TUTORIAL</span>
</div>

<!-- Slot 2: Year Pill -->
<div class="year-pill">Founder Guide 2026</div>

<!-- Slot 3: Headline -->
<div class="hero">
<div class="hero-line hero-line-1">Have an</div>
<div class="hero-line hero-line-2">App Idea?</div>
<div class="hero-line hero-line-3">Start Here</div>
</div>

<!-- Slot 4: Ruby Gem SVG -->
<div class="gem-container">
<svg viewBox="0 0 400 440" fill="none" xmlns="http://www.w3.org/2000/svg">
<!-- Low-poly ruby gem -->
<defs>
<linearGradient id="gemGrad1" x1="0" y1="0" x2="1" y2="1">
<stop offset="0%" stop-color="#ff8a7a"/>
<stop offset="50%" stop-color="#cc342d"/>
<stop offset="100%" stop-color="#991b1b"/>
</linearGradient>
<linearGradient id="gemGrad2" x1="0" y1="1" x2="1" y2="0">
<stop offset="0%" stop-color="#cc342d"/>
<stop offset="100%" stop-color="#ff8a7a"/>
</linearGradient>
<linearGradient id="highlight" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="rgba(255,255,255,0.3)"/>
<stop offset="100%" stop-color="rgba(255,255,255,0)"/>
</linearGradient>
</defs>

<!-- Crown facet (top) -->
<polygon points="200,60 120,160 280,160" fill="url(#highlight)" opacity="0.4"/>
<polygon points="200,60 80,180 120,160" fill="url(#gemGrad2)" opacity="0.8"/>
<polygon points="200,60 280,160 320,180" fill="url(#gemGrad1)" opacity="0.9"/>

<!-- Upper body facets -->
<polygon points="80,180 120,160 200,260 140,280" fill="url(#gemGrad1)" opacity="0.85"/>
<polygon points="120,160 200,160 280,200 200,260" fill="url(#gemGrad2)" opacity="0.7"/>
<polygon points="200,160 280,160 320,180 280,200" fill="url(#gemGrad1)" opacity="0.9"/>
<polygon points="320,180 280,200 200,260 260,280" fill="#cc342d" opacity="0.95"/>

<!-- Mid body facets -->
<polygon points="140,280 200,260 200,340 120,340" fill="url(#gemGrad2)" opacity="0.75"/>
<polygon points="200,260 260,280 280,340 200,340" fill="#cc342d"/>
<polygon points="260,280 320,180 340,300 280,340" fill="url(#gemGrad1)" opacity="0.88"/>

<!-- Lower body facets -->
<polygon points="120,340 200,340 200,400 140,390" fill="#991b1b" opacity="0.9"/>
<polygon points="200,340 280,340 260,390 200,400" fill="#cc342d" opacity="0.85"/>
<polygon points="280,340 340,300 320,380 260,390" fill="#7a1515" opacity="0.92"/>

<!-- Bottom point -->
<polygon points="140,390 200,400 200,430 160,420" fill="#661010" opacity="0.95"/>
<polygon points="200,400 260,390 240,420 200,430" fill="#7a1515" opacity="0.9"/>

<!-- Edge highlights -->
<line x1="200" y1="60" x2="80" y2="180" stroke="rgba(255,180,171,0.3)" stroke-width="1.5"/>
<line x1="200" y1="60" x2="320" y2="180" stroke="rgba(255,180,171,0.25)" stroke-width="1.5"/>
<line x1="200" y1="60" x2="200" y2="430" stroke="rgba(255,138,122,0.2)" stroke-width="1"/>

<!-- Sparkle -->
<circle cx="175" cy="145" r="3" fill="white" opacity="0.8"/>
<circle cx="185" cy="135" r="1.5" fill="white" opacity="0.6"/>
</svg>
</div>

<!-- Slot 5: Stat Chips -->
<div class="chips-row">
<div class="chip chip-1">
<span class="chip-label">SCOPE</span>
<span class="chip-value">One task</span>
</div>
<div class="chip chip-2">
<span class="chip-label">SKETCH</span>
<span class="chip-value">Three screens</span>
</div>
<div class="chip chip-3">
<span class="chip-label">DATA</span>
<span class="chip-value">Made-up examples</span>
</div>
</div>

<!-- Slot 6: Status -->
<div class="status">
<div class="status-dot"></div>
<span class="status-text">TEST THE TASK</span>
</div>

</body>
</html>
3 changes: 2 additions & 1 deletion STATUS.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

| Workstream | State | Next step | Entry point |
|---|---|---|---|
| Founder app-idea walkthrough (Paul-requested, 2026-09-09) | Unpublished draft: problem interview, one-page concept, rough screens, sample-data demo. No change to the outreach-first priority or course distribution plan | Review the draft PR; publication requires a separate decision | [`Article draft`](content/blog/app-idea-where-to-start/index.md) |
| LinkedIn (peer/authority channel, re-purposed 2026-09-06) | 3 planned posts at 219-332 impressions vs two off-plan text-only posts at 26.7k / 9.7k (96-99% out-of-network, 0 ICP replies). Decision of record: course-link lane STOPPED; rescue lane 1/wk in the viral shape as reach test (verdict 2026-09-30); founder discovery via commenting + calls + referral ask (verdict 2026-09-20); no exhibits on LI posts | Post `bip-vendors` Wed Sep 9 text-only; work the reply drafts in `linkedin-posts/replies/`; make the referral ask | [`content-plan` § Decision of record](linkedin-posts/content-plan.md) · [`metrics-ledger`](linkedin-posts/metrics-ledger.md) |
| 2608 site design system (v2 `/next/` rail) | Paused 2026-08-22 mid-flight; 3 pilots built + voted | Apply the [repositioned pilot copy](docs/projects/2608-site-design-system/20-29-strategy/20.09-repositioned-pilot-copy.md) (2608's own 20.09 — not the content plan); then Paul's 5 decisions | [`2608 README`](docs/projects/2608-site-design-system/README.md) |
| Positioning / homepage offer (2608 niche research + [ADR-0007](docs/adr/0007-homepage-main-offer-and-copy.md)) | **Paused 2026-08-22** — 8 research lanes complete, copy drafted + panel-voted, nothing shipped to the live site; landed on master via [#606](https://github.com/jetthoughts/jetthoughts.github.io/pull/606) | Resume via the HANDOFF — read its corrections first: the staffing constraint was briefed backwards, so every lane's discards need re-reading before acting on a shortlist | [`HANDOFF`](docs/projects/2608-niche-research/HANDOFF.md) |
Expand All @@ -42,4 +43,4 @@

**Nothing new blocked on Paul from the 2026-08-28 PM sweep.** Two items stay open and both are MINE, not his: the full external-link crawl has never completed (the local run was SIGTERM'd, so the first real result comes from the `test:links_external` cron added in [#636](https://github.com/jetthoughts/jetthoughts.github.io/pull/636)), and the uncited-posts ratchet counts link PRESENCE rather than attribution, which is how a page carrying 24 unsourced benchmark tables sat green. Both are recorded in [`fabrication-ratchet`](.okf/content/fabrication-ratchet.md).

Last updated: 2026-08-28
Last updated: 2026-09-09
Binary file added content/blog/app-idea-where-to-start/cover.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
59 changes: 59 additions & 0 deletions content/blog/app-idea-where-to-start/follow-up-wireframe.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading