Onepager pro veřejnou sbírku na sochu Satoshiho Nakamota v Praze. Cíl sbírky 1 BTC. Přispívat lze on-chain Bitcoinem, přes Lightning (oboje přes BTCPayServer) a fiat bankovním převodem v CZK (QR Platba / SPAYD).
Web: satoshi.jednadvacet.org.
- Next.js 16 (App Router) + TypeScript + Tailwind 4
- Prisma 6 + SQLite
- next-intl (CZ/EN)
- BTCPayServer Greenfield API + modal overlay (
btcpay.js) qrcodepro QR Platbu (SPAYD)
npm install
npx prisma migrate dev # vytvoří SQLite DB
npm run dev # http://localhost:3000Konfigurace je v .env (vzor v .env.example).
- BTC příspěvek → backend vytvoří invoice přes BTCPay Greenfield API,
frontend otevře BTCPay modal overlay. Po
InvoiceSettledwebhook automaticky potvrdí příspěvek a započítá ho do součtu. - CZK příspěvek → backend vygeneruje variabilní symbol + SPAYD řetězec,
frontend vykreslí QR. Příspěvek čeká jako
pending, dokud ho admin ručně nepotvrdí v/admin(po přijetí převodu na účet). Potvrzením se přepočte CZK→BTC aktuálním kurzem a vzkaz se objeví na zdi přispěvatelů.
Souhrn (progress bar) = součet amountBtc všech potvrzených příspěvků;
BTC ekvivalent CZK darů se fixuje v okamžiku potvrzení.
/admin — přihlášení heslem z ADMIN_PASSWORD. Filtruje čekající/potvrzené/
zamítnuté, umožňuje potvrdit/zamítnout platbu a skrýt nevhodný vzkaz ze zdi.
Neveřejné vzkazy organizátorům jsou vidět jen zde.
V BTCPay storu „Satoshi Monument" (btcpayserver.cz):
- API key (Account → Manage account → API Keys) s oprávněním
btcpay.store.cancreateinvoice→BTCPAY_API_KEY. - Webhook (Store Settings → Webhooks) na
https://<doména>/api/btcpay/webhook, událostInvoice Settled. Secret webhooku →BTCPAY_WEBHOOK_SECRET. BTCPAY_STORE_ID= ID storu (z URL nastavení storu).
- Nastav
.env(produkční hodnoty, silnéADMIN_PASSWORDaSESSION_SECRET,NEXT_PUBLIC_SITE_URLna veřejnou doménu). V produkci appka bezSESSION_SECRET/ADMIN_PASSWORDschválně spadne. npm run build && npm start(za reverzní proxy s HTTPS).npx prisma migrate deploypro migraci DB na serveru.- Po doplnění finálního čísla účtu uprav
BANK_ACCOUNT/BANK_CODE.
Bezpečnostní hlavičky (CSP s povolením BTCPay, Permissions-Policy, X-Frame-Options,
nosniff, Referrer-Policy) řeší next.config.ts. HSTS a HTTP/2 patří na reverzní
proxy (nginx). Cron endpointy (/api/cron/fio-sync, /api/cron/daily-report) je
potřeba periodicky volat (systemd timer / cron) s hlavičkou x-cron-key: $CRON_SECRET.
/llms.txt— souhrn projektu pro AI agenty (llmstxt.org) + živý stav sbírky.- JSON-LD (schema.org Organization + WebSite) v hlavičce stránek.
/api/stats— veřejný JSON se stavem sbírky.mcp/— MCP server zpřístupňující stav sbírky AI asistentům (vizmcp/README.md).
Zdrojový kód je pod licencí MIT (viz LICENSE).
Obrázky, fotografie a značka projektu (např. public/, logo Bitcoinu, fotky
instalací sochy, vizuály) nejsou součástí MIT licence a mohou podléhat
právům třetích stran. Pokud projekt forkujete, použijte vlastní obrazové
podklady.