- Flask frontend + serialized GPU worker + BTCPay invoice/webhook - 12 example images rendered from the real ComfyUI workflows - fix: ipadapter workflow uses modern IPAdapter node (was broken IPAdapterApply) - helper scripts: generate/optimize examples - README with deploy recipe
51 lines
2.4 KiB
HTML
51 lines
2.4 KiB
HTML
<!doctype html>
|
|
<html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
|
|
<title>Comfy Apps — AI Image Studio</title>
|
|
<link rel="stylesheet" href="/static/style.css"></head>
|
|
<body>
|
|
<div class="wrap">
|
|
<header>
|
|
<div class="logo">Comfy<span>Apps</span></div>
|
|
<div class="nav"><a href="#apps">Apps</a><a href="/jobs">Gallery</a></div>
|
|
</header>
|
|
|
|
<div class="hero">
|
|
<h1>Generate <b>anything</b>.<br>Pay in Bitcoin.</h1>
|
|
<p>12 AI image apps running on a local RTX 4080 — logos, heroes, face swaps, upscales, style transfers. Pay a few sats, get your image in under a minute. No account. No tracking.</p>
|
|
<div class="stats">
|
|
<div class="stat"><b>12</b><span>AI apps</span></div>
|
|
<div class="stat"><b>4080</b><span>local GPU</span></div>
|
|
<div class="stat"><b>₿</b><span>sats-only</span></div>
|
|
<div class="stat"><b>~60s</b><span>per render</span></div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="how" id="how">
|
|
<div class="step"><div class="n">1</div><h3>Pick an app</h3><p>Logo, hero, face swap, upscale — whatever you need.</p></div>
|
|
<div class="step"><div class="n">2</div><h3>Pay sats</h3><p>Bitcoin on-chain, no account. A few thousand sats.</p></div>
|
|
<div class="step"><div class="n">3</div><h3>Get your image</h3><p>The 4080 renders it in ~60s. Download and go.</p></div>
|
|
</div>
|
|
|
|
<div class="grid" id="apps">
|
|
{% set emoji = {'logo':'🎨','hero':'🎬','banner':'🖼️','article':'📰','portrait':'🧑','upscale':'🔍','inpaint':'🖌️','outpaint':'↔️','controlnet':'🦴','ipadapter':'🎭','face_swap':'👤','restore_face':'✨'} %}
|
|
{% for name, meta in apps.items() %}
|
|
<div class="card">
|
|
<div class="thumb">
|
|
<img src="/static/examples/{{ name }}.jpg" alt="{{ name }}" loading="lazy" onerror="this.style.display='none';this.nextElementSibling.style.display='flex'">
|
|
<div class="emoji" style="display:none">{{ emoji.get(name,'✨') }}</div>
|
|
</div>
|
|
<h3>{{ name.replace('_',' ').title() }}</h3>
|
|
<div class="desc">{{ meta.desc }}</div>
|
|
<div class="price">{{ meta.price_sats }} sats</div>
|
|
<div class="models">{% for m in meta.models %}<span class="badge">{{ m }}</span>{% endfor %}</div>
|
|
<a class="go" href="/app/{{ name }}">Create →</a>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
|
|
<footer>
|
|
<p>Comfy Apps · self-hosted · Bitcoin only · no accounts, no tracking</p>
|
|
</footer>
|
|
</div>
|
|
</body></html>
|