From 57bba0111abff2b90a64f5d2682dc09179b06ca0 Mon Sep 17 00:00:00 2001 From: martbost Date: Sun, 6 Sep 2026 08:11:32 -0500 Subject: [PATCH] NAS syndication adapter (feature-flagged off): push banner/text to Network Ad Space, reconcile delivery into unified credit pool - nas.js: direct-MySQL writer mirroring CTB's proven payments+sponsorads path (approved:1, pid 1/2, catid 5, remaining counts DOWN) - Create-time push for banner/text; pause/resume mirrors to NAS deactivate/topUp - reconcileNas() 5-min loop: reads served, charges delta credits to the shared budget, stops NAS ad when budget dry - Campaign row shows IAP + '+N net' network views (differentiated stats) - Inert unless NAS_DB_* env is set; zero prod impact until enabled - Also: rename Inbox sub-tab to 'Inbox Ads' Co-Authored-By: Claude Fable 5 --- ads.js | Bin 39501 -> 44533 bytes db.js | 2 + nas.js | 114 +++++++++++++++++++++++++++++++++++++++++++ public/assets/my.js | 4 +- public/contract.html | 8 +-- public/index.html | 10 ++-- public/ledger.html | 8 +-- public/my.html | 12 ++--- public/tx.html | 6 +-- public/view.html | 4 +- public/wall.html | 6 +-- server.js | 7 +++ 12 files changed, 153 insertions(+), 28 deletions(-) create mode 100644 nas.js diff --git a/ads.js b/ads.js index 73f07e4612b79f5a913e18626f884f8c38bd056c..58754911c464aa1dbb28f01833523cac1a995d67 100644 GIT binary patch delta 3624 zcmai1-)~$;6;@JJAgeUE`PH;;e3I1Jd*k)>R;5*Ivv!;~QXHIZRJRJ$6nA{@?0V?k zx!ak!-dL`+AW;$;34#X78@%ws6CfiYwNjtp4fqF;kl>MbUXUo9Gjs3Vby5qzIKDG; z&Ub!&-^rhUcl2L>J^GtJ9$AYssSQY`p$Uq=mkY&%S~QCvYT-Q0&O&Qx4fKvoM9hrH zBm_coWgwR+*P2c@malAF0xq{fXwck*`+qp{dpIGwJ>6n@4&n%nt#P%@lYMjkmru>% zpG(O~G6#xIHdwMD5_tc8ka?Qc35vg5o@@7%E;RN}y!7!qU-pn=*6lITk+2QX{)RYolM9Mq+**RAkl^Zagg5V)nRn2)p*Z+fTnpSvyyJ zqb!&I{Av>#A&!s9mBb492(iH%n1Xj!FW9UH_VO!F+y7pfe)6H?>~hWis`=~}OHcO4 zos;&#-6!og-ujY#eBszr#X%iJ^0qIZ-MD+&vTvTZKfgO}?<^jhIe4Y0<8q|3G`)g| zTqKI>fh`I4$i3z3&erDv#{AydV!1XP;Tx56*el-Ad{9l=24@1fBI{ob0z1BZ+(wr# zd@EdU6zGb3l^MJnxJMDC-@vpt5xFAatieLF_~I)}v*-J>G7;L1dpEywz7FeE4n7Ba zm4)gZX8&*Z7VPZoL#3=O)V%gh*Kh)@E5^M1^Ueu>bzSg0d*fHXm5-m zL&wn0W$e_%qx6LD`qZ;M4cx;p{mCOZ{pbG&bMO#M?-7Ce=a1q9KXR)~Ljwj_U&_lfaPSQSz%YOy9!qmxobMre{D(`kdmL+7of(`yI-`b3ky zvq-EHwPPE5C$10y@)pymPrHR`ox=hSWou+^l1!rBAhFS$k~ETUU9jA^{m%!JxA18p z>MLu|dhHEpy}7yyORZ%fm4lTQ1U0YDwR(;8xfY%;gvlB6?4qMC>jgwJ_Sb{cXKqBv zW{BOCW(;-IlZ1Eui|+vmrfWPDwDrn1c;jzJLdI#Ha2>>6XWermL&A>>1T@GVNkZUf zGKQ?}1M?a2H?{F@4K~3pCKn%i$&>?378Txi6}l<#xUR>&3A-WSZbUL^gv@!#sg9Pk zLB=T$5C{|$Dta-xphAq4{1#VNoj{erkPZ!AC=%i*8rx$VACBx@Zh7)o$fGt<(TEE` zm&+ha#|5D*Bl|buCdy^hPP0snyu&W+;mpqzrvrEF{Q48`%hULXwFQ#NT^HgoOl;;V zlfK)1fK;v#4MsFY+36{Tfe#~3j02P_O0Ta>Q54Kuf`e$pHZ%P2nh-6KMW}vPdr+%f zMGGWV-YOt+dYVF=@Q=w*wFLMhW%U*74oW>gQoB(jWoH3+9ipuHL=pEQ;|&xavgrY`qyZ;3EC^5= zk)}uiZBqqNrhqTN(|{aUxiOZJHdNGn`)7XEcYp4 Zo$XeFYyLkbbAZ&}TyR`d^$k({{{a6pp;Z6? delta 65 zcmV-H0KWhA+XBtB0SpentBudgetStatus' + r.campaigns.map(c => '' + c.name + '' + '' + c.type + (c.type === 'banner' && c.width ? ' ' + c.width + '×' + c.height + '' : '') + '' - + '' + c.imps.toLocaleString() + '' + c.clicks + '' + + '' + c.imps.toLocaleString() + + (c.impsNas ? ' +' + c.impsNas.toLocaleString() + ' net' : '') + + '' + c.clicks + '' + '' + c.spent + '' + c.budget + '' + '' + (c.status === 'out' ? 'budget spent' : c.status) + '' + '' + (c.status === 'active' ? '' diff --git a/public/contract.html b/public/contract.html index 4c788e5..f9f6b4d 100644 --- a/public/contract.html +++ b/public/contract.html @@ -5,7 +5,7 @@ The contract | InstantAdPay - +
@@ -129,8 +129,8 @@
Advertising services with a performance referral program. Not an investment product; no income guarantees. Crypto transactions are irreversible. Never spend what you cannot afford.
- - - + + + diff --git a/public/index.html b/public/index.html index ecc45d4..9b5d9fc 100644 --- a/public/index.html +++ b/public/index.html @@ -5,7 +5,7 @@ InstantAdPay: advertise and earn, locked in code - + @@ -410,9 +410,9 @@ - - - - + + + + diff --git a/public/ledger.html b/public/ledger.html index d01099a..a82d7d1 100644 --- a/public/ledger.html +++ b/public/ledger.html @@ -5,7 +5,7 @@ Live ledger | InstantAdPay - +
@@ -25,8 +25,8 @@
- - - + + + diff --git a/public/my.html b/public/my.html index ab79ecc..695cab7 100644 --- a/public/my.html +++ b/public/my.html @@ -4,7 +4,7 @@ Member area | InstantAdPay - + @@ -307,7 +307,7 @@
- +
@@ -484,9 +484,9 @@
- - - - + + + + diff --git a/public/tx.html b/public/tx.html index 3dbca13..589f6d8 100644 --- a/public/tx.html +++ b/public/tx.html @@ -4,7 +4,7 @@ Transaction | InstantAdPay - + @@ -33,7 +33,7 @@

← Back to the live ledger · Read the contract review

- - + + diff --git a/public/view.html b/public/view.html index ac3e1dc..a3d086f 100644 --- a/public/view.html +++ b/public/view.html @@ -4,7 +4,7 @@ Viewing ad — InstantAdPay - +