Our own keyless Bun service (not Linky's): watches relays for kind-1059 wraps
carrying the plaintext marker ["skatespots","push"] on the recipient copy,
extracts only {recipient, wrapId}, and sends a Web Push. NEVER decrypts - the
client fetches + decrypts the named wrap itself.
Endpoints: GET /health, GET /vapid-public-key, POST /auth/challenge ->
/subscribe|/unsubscribe with a one-time NIP-98 (kind 27235) challenge proof.
State is a JSON file; VAPID keys from env. Wired like the other standalone
servers (typecheck:push + check:push in npm test, deploy:push, Caddyfile +
systemd unit). Verified locally end-to-end: auth -> subscribe -> marked wrap ->
watcher -> push attempt, and proof replay rejected.
Client half (service worker, subscribe hook + Settings toggle, marker on DM
sends) is the next step.
62 lines
909 B
Text
62 lines
909 B
Text
# Logs
|
|
logs
|
|
*.log
|
|
npm-debug.log*
|
|
yarn-debug.log*
|
|
yarn-error.log*
|
|
pnpm-debug.log*
|
|
lerna-debug.log*
|
|
|
|
|
|
node_modules
|
|
dist
|
|
dist-ssr
|
|
*.local
|
|
.ai/
|
|
yarn.lock
|
|
|
|
# Editor directories and files
|
|
.idea
|
|
.DS_Store
|
|
*.suo
|
|
*.ntvs*
|
|
*.njsproj
|
|
*.sln
|
|
*.sw?
|
|
|
|
# Vercel
|
|
.vercel
|
|
|
|
# Secrets
|
|
.env
|
|
.env.*
|
|
!.env.example
|
|
|
|
# Local secrets & signing material (never commit)
|
|
*.jks
|
|
*.keystore
|
|
keystore.properties
|
|
local.properties
|
|
|
|
# Local build artifacts
|
|
skatespots.zip
|
|
|
|
# Generated native project (recreate with `npm run android:init`)
|
|
/android/
|
|
|
|
# Netlify CLI link state
|
|
.netlify
|
|
|
|
# Bundle analysis output (ANALYZE=1)
|
|
stats.json
|
|
|
|
# Local/generated assets & incidental lockfiles (do not commit)
|
|
/assets/
|
|
/resources/
|
|
/bun.lock
|
|
cvm-server/bun.lock
|
|
push-service/bun.lock
|
|
# CVM server local dev manifest — the tracked manifest is package.cvm.json
|
|
# (DEPLOY.md does `cp package.cvm.json package.json` on the server).
|
|
cvm-server/package.json
|
|
*.bak
|