SkateSpots/.gitignore
SkateSpots 807037ee9b feat(push): self-hosted closed-app push service (Phase 1 backend)
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.
2026-10-01 15:34:43 +07:00

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