shkor.com/start: MCP лабы в описании, блок заработка (выручка − доля студии, доступно к выводу) на странице клиента
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
3d4c0b957d
commit
e96525e01a
3 changed files with 14 additions and 2 deletions
|
|
@ -313,6 +313,7 @@ def ap_status(token):
|
||||||
out["agent"] = r.get("agent")
|
out["agent"] = r.get("agent")
|
||||||
out["portal_url"] = r.get("portal_url", "")
|
out["portal_url"] = r.get("portal_url", "")
|
||||||
out["panel"] = panel
|
out["panel"] = panel
|
||||||
|
out["earnings"] = r.get("earnings")
|
||||||
c.close()
|
c.close()
|
||||||
return 200, out
|
return 200, out
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@
|
||||||
<aside class="apply-side">
|
<aside class="apply-side">
|
||||||
<p class="kicker">Autopilot · $99/month</p>
|
<p class="kicker">Autopilot · $99/month</p>
|
||||||
<h1>Your own server.<br><span class="hl">Your own builders.</span></h1>
|
<h1>Your own server.<br><span class="hl">Your own builders.</span></h1>
|
||||||
<p class="lead">A dedicated cloud workspace with a web panel: Claude Code and OpenCode ready to build your product, plus a Simbiot agent — the same stack our labs run on.</p>
|
<p class="lead">A dedicated cloud workspace with a web panel: Claude Code and OpenCode ready to build your product, connected to the lab MCP — your own git, subdomains and card payments, with sales tracked in your dashboard. Plus a Simbiot agent — the same stack our labs run on.</p>
|
||||||
<ol class="flow" aria-label="How it works">
|
<ol class="flow" aria-label="How it works">
|
||||||
<li><span>1</span><div><b>Verify your identity</b><small>ID + selfie with Didit. About 2 minutes. You get a whole server — we need to know who you are.</small></div></li>
|
<li><span>1</span><div><b>Verify your identity</b><small>ID + selfie with Didit. About 2 minutes. You get a whole server — we need to know who you are.</small></div></li>
|
||||||
<li><span>2</span><div><b>Pay $99/month</b><small>Secure card payment by Stripe. Cancel any time.</small></div></li>
|
<li><span>2</span><div><b>Pay $99/month</b><small>Secure card payment by Stripe. Cancel any time.</small></div></li>
|
||||||
|
|
|
||||||
|
|
@ -60,11 +60,22 @@
|
||||||
var act = '';
|
var act = '';
|
||||||
if (s === 'deploying') dep = 'Creating your server and installing the tools. This usually takes 15–40 minutes — this page updates by itself, and you can close it.';
|
if (s === 'deploying') dep = 'Creating your server and installing the tools. This usually takes 15–40 minutes — this page updates by itself, and you can close it.';
|
||||||
if (s === 'ready' && d.panel) {
|
if (s === 'ready' && d.panel) {
|
||||||
dep = 'Your workspace is live. Sign in to the panel, then pick Claude Code (sign in with your own Claude account) or OpenCode (works right away).';
|
dep = 'Your workspace is live. Sign in to the panel, then pick Claude Code (sign in with your own Claude account) or OpenCode (works right away). Both are already connected to the lab MCP — git, payments, your project, your subdomains.';
|
||||||
act = '<div class="creds">Panel: <b><a href="' + esc(d.panel.url) + '" target="_blank" rel="noopener">' + esc(d.panel.url) + '</a></b><br>Login: <b>' + esc(d.panel.user) + '</b><br>Password: <b>' + esc(d.panel.password) + '</b></div>'
|
act = '<div class="creds">Panel: <b><a href="' + esc(d.panel.url) + '" target="_blank" rel="noopener">' + esc(d.panel.url) + '</a></b><br>Login: <b>' + esc(d.panel.user) + '</b><br>Password: <b>' + esc(d.panel.password) + '</b></div>'
|
||||||
+ '<a class="btn" href="' + esc(d.panel.url) + '" target="_blank" rel="noopener"><span>Open my workspace</span>' + ARROW + '</a>';
|
+ '<a class="btn" href="' + esc(d.panel.url) + '" target="_blank" rel="noopener"><span>Open my workspace</span>' + ARROW + '</a>';
|
||||||
}
|
}
|
||||||
h += item(depState, 'Your workspace' + (s === 'ready' ? pill('ok', 'Live') : s === 'deploying' ? pill('wip', 'Deploying') : ''), dep, act);
|
h += item(depState, 'Your workspace' + (s === 'ready' ? pill('ok', 'Live') : s === 'deploying' ? pill('wip', 'Deploying') : ''), dep, act);
|
||||||
|
if (s === 'ready' && d.earnings) {
|
||||||
|
var e = d.earnings, money = function (v) { return '$' + Number(v || 0).toFixed(2); }, rows = '';
|
||||||
|
(e.projects || []).forEach(function (p) {
|
||||||
|
rows += '<br>' + esc(p.name) + ': <b>' + money(p.net) + '</b> <span style="opacity:.6">(' + money(p.gross) + ' sales − ' + money(p.studio_share) + ' studio ' + esc(p.studio_pct || '') + ')</span>';
|
||||||
|
});
|
||||||
|
h += item(e.gross > 0 ? 'ok' : 'todo', 'Your earnings' + pill(e.gross > 0 ? 'ok' : 'wip', money(e.available) + ' available'),
|
||||||
|
e.projects && e.projects.length ? 'Sales through the cooperative’s payments. The studio’s share is withheld automatically at each payment.'
|
||||||
|
: 'Create your project and products through the lab MCP (project_create, product_create) — every sale shows up here, with the studio’s share already withheld.',
|
||||||
|
'<div class="creds">Sales: <b>' + money(e.gross) + '</b> · Studio share: <b>' + money(e.studio_share) + '</b><br>Yours: <b>' + money(e.net) + '</b> · Paid out: <b>' + money(e.paid_out) + '</b>' + rows + '</div>'
|
||||||
|
+ '<p style="margin-top:10px">Withdrawals are coming soon — the balance is already tracked.</p>');
|
||||||
|
}
|
||||||
tl.innerHTML = h;
|
tl.innerHTML = h;
|
||||||
title.textContent = s === 'ready' ? 'Welcome aboard, ' + first + '.' : s === 'deploying' ? 'Deploying your workspace…' : s === 'declined' ? 'Verification not approved' : s === 'pay' ? 'Verified. One step left.' : 'Hi ' + first + ', let’s verify you.';
|
title.textContent = s === 'ready' ? 'Welcome aboard, ' + first + '.' : s === 'deploying' ? 'Deploying your workspace…' : s === 'declined' ? 'Verification not approved' : s === 'pay' ? 'Verified. One step left.' : 'Hi ' + first + ', let’s verify you.';
|
||||||
sub.textContent = s === 'kyc' ? 'Payment opens as soon as your identity is verified. If you’ve just finished, the result usually arrives within a minute.' : '';
|
sub.textContent = s === 'kyc' ? 'Payment opens as soon as your identity is verified. If you’ve just finished, the result usually arrives within a minute.' : '';
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue