Ad engine v1: banner/text/login campaigns against on-chain credits
Spec 8b types 1-3. Spend accrues per campaign in batches; burns queue for the engine signer (admin runs consume() on-chain, /api/admin/burns). Rates are volume config (adrates.json), rehearsal placeholders until Marty sets the real card. Public slots serve on the ledger page; campaign manager in the members area. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -73,6 +73,27 @@
|
||||
Purchases from your linked wallet automatically credit this account.</p>
|
||||
</div>
|
||||
|
||||
<div class="card" id="campaignCard" hidden>
|
||||
<h3>Your ad campaigns</h3>
|
||||
<p class="muted small" id="rateLine">…</p>
|
||||
<div id="campList"></div>
|
||||
<h3 style="margin-top:18px">New campaign</h3>
|
||||
<div class="grid c3">
|
||||
<p><select id="cType" style="width:100%">
|
||||
<option value="banner">Banner (per impression)</option>
|
||||
<option value="text">Text ad (per impression)</option>
|
||||
<option value="login">Login ad (per day)</option>
|
||||
</select></p>
|
||||
<p><input id="cName" placeholder="Campaign name" style="width:100%"></p>
|
||||
<p><input id="cBudget" type="number" placeholder="Budget (credits)" min="10" style="width:100%"></p>
|
||||
</div>
|
||||
<p><input id="cTarget" placeholder="Target URL (https://…)" style="width:100%"></p>
|
||||
<p id="cImageRow"><input id="cImage" placeholder="Image URL (banner/login ads)" style="width:100%"></p>
|
||||
<p id="cTitleRow" hidden><input id="cTitle" placeholder="Headline (max 60)" style="width:100%"></p>
|
||||
<p id="cBodyRow" hidden><input id="cBody" placeholder="Ad text (max 140)" style="width:100%"></p>
|
||||
<button class="btn" id="createCampBtn">Launch campaign</button>
|
||||
</div>
|
||||
|
||||
<div id="activityArea" hidden>
|
||||
<h2>Your activity, straight from the chain</h2>
|
||||
<div class="grid c2">
|
||||
|
||||
Reference in New Issue
Block a user