362526d007
Audit against the live site: removed stale text (featured links and visit packs marked "coming", Pipeline "coming soon", the superseded sponsor-hold rule, a non-existent home-page calculator, "earned credits spend on banner and text only", "Coaching pane"); added live featured and visit-pack rules with prices and limits, the video cap and rewards, the sign-in bonus and claim ladders, report-an-ad, the public missed-payout posts, the walk-up gain notice, the four-minute overview video, the promo Videos and Toolkit tabs; new canned answers for featured links, visit packs and "what is this". KNOWLEDGE_DATE constant + qa/chatbot-sync.mjs (run in public/all QA) fails when a release note is newer than the chatbot's knowledge. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
40 lines
1.7 KiB
Markdown
40 lines
1.7 KiB
Markdown
# InstantAdPay — site
|
|
|
|
Membership advertising with immutable on-chain settlement. Zero-dependency
|
|
Node server (RM Circle pattern): static pages + JSON API + SSE ledger.
|
|
|
|
## Architecture
|
|
|
|
- `server.js` — http server: pages, `/api/*`, `/join/<id>` sponsor links, SSE feed
|
|
- `chain.js` — contract reader + persistent event indexer (free public RPCs)
|
|
- `auth.js` — SIWE wallet sign-in (EIP-4361), sessions in the volume
|
|
- `accounts.js` — site-side records only (free members, last-touch sponsor
|
|
attribution, handles). The CHAIN is the source of truth for money/credits.
|
|
- `public/` — landing, live ledger, member area; no client libraries
|
|
|
|
## Chain flip (rehearsal → mainnet)
|
|
|
|
Everything chain-specific lives in `data/config.json` (volume):
|
|
`{contract, chainId, chainName, explorer, rpcs, deployBlock}`.
|
|
Defaults point at the **Amoy rehearsal** deployment. Launch = deploy the
|
|
mainnet contract, wipe `accounts.json`/`sessions.json`/`chain-index.json`,
|
|
PATCH `/api/admin/chain` with the mainnet values, set `rehearsal:false` via
|
|
`/api/admin/site`. Same code, different config.
|
|
|
|
## Run
|
|
|
|
```
|
|
PORT=3100 node server.js # DATA_DIR defaults to ./data
|
|
```
|
|
|
|
Admin API auth: `Authorization: Bearer $ADMIN_PASSWORD`.
|
|
|
|
Spec: `../CONTRACT-SPEC.md` (v1.0.3-frozen). Contracts: `../contracts/`.
|
|
|
|
## Chatbot knowledge is part of every change
|
|
|
|
`chatbot.js` answers members two ways: `CANNED` regex answers and `systemPrompt()` for the AI. Any
|
|
change that a member could ask about (a new pane, a rule, a price, a limit, a fix they noticed) is not
|
|
done until both are updated in the same commit, and `KNOWLEDGE_DATE` in `chatbot.js` is bumped. The QA
|
|
runner (`bash qa/run.sh public`) fails when a release note on the live site is newer than that date.
|