SkateSpots/README.md
SkateSpots e00a382c36 chore: slim repo assets and refresh README
- Drop tracked Android build intermediates (already gitignored; regenerated by Gradle).
- Remove unused sticker-design.png; recompress logo, cover and guide images.
- Replace the stale README with a concise current project guide.
2026-10-28 13:35:24 +07:00

4.6 KiB
Raw Permalink Blame History

SkateSpots

A local-first skateboarding community app on Nostr: map spots, join crews, find events and coaches, trade gear, and talk privately without a central account.

  • Live: https://skate-spots.org
  • Android: Zapstore / APK (org.skatespots.app)
  • Source: nostr://npub1yrnuj56rnen08zp2h9h7p74ghgjx6ma39spmpj6w9hzxywutevsst7k5cx/git.shakespeare.diy/SkateSpots
  • License: AGPL-3.0-only

Principles

  • Your keys, your identity. No custodial accounts, no uploaded private keys, no Bitcoin custody.
  • Local-first. Public data is cached on-device; private messages are decrypted on-device.
  • Self-hosted where it matters. Community relay, Blossom media, push, AI and CVM services run on our own infrastructure.
  • No tracking, ads or analytics. No third-party scripts, no behavioural profiles, no selling data.
  • Forkable by design. Open protocol, open source, ordinary Nostr events.

Features

  • Map & spots — street, park, transition and plaza pins; photos, conditions, comments and directions.
  • Crews — public crews, membership, roles, events, a crew feed and invites.
  • Private chat — NIP-17 DMs and crew chat; MLS end-to-end encrypted crew chat via Cordn (reactions, replies, read receipts, device linking).
  • The Lab — coaches, filmers, editors, photographers, builders, artists and other skate crafts.
  • Marketplace — NIP-99 listings, offers, barter, reputation and Lightning/cashu payments.
  • Events & tours — calendar events, RSVPs, event updates and spot tours.
  • Stash — encrypted private gear inventory with public want/showcase listings.
  • Translation — on-device message translation for every app language; message text never leaves the device.
  • Newsletter & community — weekly drops, an in-app mailbox and a public Cordn community room.
  • Notifications — in-app bell, Web Push, and local Android notifications; no FCM/Google dependency.

Stack

React 18 · TypeScript · Vite · Tailwind CSS · shadcn/ui · TanStack Query · Nostrify · Leaflet/OpenStreetMap · Capacitor (Android) · Cashu/NWC · ONNX Runtime Web (translation).

Quick start

Requires Node 22 (see .nvmrc) and npm.

npm ci
npm run dev      # http://localhost:8080
npm test         # typecheck + lint + i18n + unit tests + web build

Useful scripts:

Command What it does
npm run build Production web build (dist/)
npm run android:build Signed release APK
npm run android:init / android:sync Generate/sync the Capacitor Android project
npm run translation:matrix Browser translation matrix runner (downloads the model)
npm run newsletter:weekly Generate the weekly newsletter draft
scripts/release.sh patch --yes Test, build APK, publish to Zapstore, commit and tag

Repository map

src/
  components/      shared UI, map, crews, auth, wallet
  pages/           route pages
  hooks/           Nostr queries, live data, wallet
  lib/             protocol helpers, Cordn/MLS, translation, storage
  i18n/            24 lazy-loaded dictionaries
  workers/         on-device translation worker
scripts/           release, deploy, ops, newsletter, watchers
public/            icons, images, ONNX Runtime WASM
netlify/           NIP-05 and AI proxy functions
cvm-server/        ContextVM MCP server (external host)
push-service/      Web Push / native-poll service
packages/          local Capacitor plugins

Releases & infrastructure

  • Web is deployed by scripts/auto-deploy.sh (systemd timer) after the full preflight and production smoke test.
  • Android is built with npm run android:build; versioning comes from package.json; releases go through Zapstore.
  • Community relay wss://relay.skate-spots.org (Newlay + Caddy) also serves Blossom at blossom.skate-spots.org.
  • Push (push.skate-spots.org), AI proxy (ai.skate-spots.org) and CVM run separately; see AGENTS.md.

Documentation

  • AGENTS.md — operational memory: commands, services, gotchas and current state.
  • NIP.md — every custom/adopted Nostr kind and schema.
  • ESCROW.md — Cashu escrow design and device checklist.
  • GROUP_MESSAGING.md — DM/crew chat decisions.
  • TRUST_SCORE.md — trust/reputation model.

Credits

Nostr · Cordn (crew chat) · Cashu · NWC · Amber · BTCMap · Angor · Zapstore · ContextVM · OpenStreetMap. Built by skaters, for skaters.

Support the project through the app’s Supporters page or Angor. No VC, no token, no sponsored placements sold as “community.”