Files
hidden11/deploy/n8n-push-subscriptions.json
claude-code 0de85cbc51
Build and push image / build (push) Failing after 15m20s
Localize the archive, add reminders, named challenges and a funnel
Archive and answer pages now exist in all six languages and are prerendered
instead of rendered per request, and each answer page carries a sentence of
real context per player (club, league, nationality, former clubs, honours)
plus Article and BreadcrumbList JSON-LD. The sitemap grows from 121 to 691
URLs, every one with hreflang alternates.

Adds an optional display name to shared results, so a challenge link reads
"<name> challenges you" in the page, the OG image and the head-to-head
verdict; the name is sanitised both when written and when parsed back.

Adds an opt-in daily reminder (Web Push without payload, so no content
encryption) and a PWA install prompt shown once the day is finished, plus
first-party event ingestion at /api/events that mirrors GA4 so the funnel
survives ad blockers.

Wires the missing N8N_PLAYS_WEBHOOK_URL into the deployment along with the
new events, push and search-verification secrets, and ships the n8n
workflows, the Postgres schema with funnel/retention views, and an IndexNow
submitter.

Refs #2 #3 #5 #6 #7 #8 #9 #10

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QvQ1ErZNRUcWgCEkJ9uyrn
2026-08-26 12:41:28 +00:00

56 lines
1.6 KiB
JSON

{
"name": "hidden11 — push subscriptions",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "hidden11-push",
"responseMode": "onReceived",
"options": {}
},
"id": "sub-webhook",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [
0,
0
],
"webhookId": "hidden11-push"
},
{
"parameters": {
"operation": "executeQuery",
"query": "WITH removed AS (\n DELETE FROM hidden11_push_subscriptions\n WHERE endpoint = $1 AND $5 = 'unsubscribe'\n)\nINSERT INTO hidden11_push_subscriptions (endpoint, p256dh, auth, locale)\nSELECT $1, $2, $3, $4 WHERE $5 = 'subscribe'\nON CONFLICT (endpoint) DO UPDATE SET p256dh = EXCLUDED.p256dh, auth = EXCLUDED.auth, locale = EXCLUDED.locale;",
"options": {
"queryReplacement": "={{ $json.body.endpoint }},={{ $json.body.keys.p256dh }},={{ $json.body.keys.auth }},={{ $json.body.locale }},={{ $json.body.action }}"
}
},
"id": "sub-pg",
"name": "Store subscription",
"type": "n8n-nodes-base.postgres",
"typeVersion": 2.4,
"position": [
220,
0
],
"notes": "Credential: shared Postgres (LXC 121). Table hidden11_push_subscriptions."
}
],
"connections": {
"Webhook": {
"main": [
[
{
"node": "Store subscription",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1"
}
}