# SkateSpots - Decentralized Skate Map & Community [![Edit with Shakespeare](https://shakespeare.diy/badge.svg)](https://shakespeare.diy/clone?url=nostr%3A%2F%2Fnpub1yrnuj56rnen08zp2h9h7p74ghgjx6ma39spmpj6w9hzxywutevsst7k5cx%2Fgit.shakespeare.diy%2Fskate-spots) A decentralized skateboarding community platform built on Nostr. Discover skate spots, find coaches, join events, and connect with skaters worldwide. ## 🌐 Live App - **Deployed URL**: https://skate-spots.com - **Previous URL**: https://skate-spots.shakespeare.wtf (redirects to new domain) - **Nostr Git**: nostr://npub1yrnuj56rnen08zp2h9h7p74ghgjx6ma39spmpj6w9hzxywutevsst7k5cx/git.shakespeare.diy/skate-spots ## ✨ Features - πŸ—ΊοΈ **Interactive Skate Map** - Discover skate spots worldwide with geolocation - πŸ›Ή **Spot Database** - Browse, create, and review skate parks and street spots - πŸ“… **Events Calendar** - Find and create skateboarding events and competitions - πŸ‘¨β€πŸ« **Find Coaches** - Connect with skateboarding instructors in your area - πŸ›οΈ **Skate Shops** - Discover local skate shops and support the community - 🎡 **NoGood Radio** - 24/7 vibing music (lofi, synthwave, electronica) - ⚑ **Lightning Zaps** - Send Bitcoin tips to content creators - 🌀️ **Weather Integration** - Check conditions before you skate - πŸ” **Nostr Authentication** - Decentralized login with your Nostr keys - πŸ“± **PWA Support** - Install as a native app on any device ## πŸ› οΈ Technology Stack - **React 18** - Modern UI with hooks and concurrent rendering - **Nostr Protocol** - Decentralized data storage and communication - **TailwindCSS 3** - Utility-first CSS framework - **Vite** - Lightning-fast build tool and dev server - **shadcn/ui** - Beautiful, accessible UI components - **Nostrify** - Nostr framework for web applications - **TanStack Query** - Data fetching and caching - **OpenStreetMap** - Interactive maps - **TypeScript** - Type-safe development ## πŸš€ Getting Started ### Prerequisites - Node.js 18+ - npm or yarn ### Installation ```bash # Clone the repository git clone nostr://npub1yrnuj56rnen08zp2h9h7p74ghgjx6ma39spmpj6w9hzxywutevsst7k5cx/git.shakespeare.diy/skate-spots # Install dependencies npm install # Start development server npm run dev ``` ### Building ```bash # Build for production npm run build # Run tests npm test ``` ## 🌍 Deployment The app is configured for deployment via: - **Shakespeare Deploy** - Nostr-native deployment (configured) - **Netlify** - Static site hosting - **Vercel** - Edge deployment - **nsite** - Nostr-native sites Deploy command: ```bash npm run deploy ``` ## πŸ“± PWA Installation SkateSpots works as a Progressive Web App (PWA) and can be installed on: - **Desktop**: Chrome, Edge, Safari - Look for install icon in address bar - **Android**: Chrome - "Add to Home Screen" from menu - **iOS**: Safari - "Add to Home Screen" from share menu ## πŸ”Œ Nostr Integration ### Custom Event Kinds This app uses custom Nostr event kinds defined in `NIP.md`: - **Kind 30818** - Skate Spots (addressable) - **Kind 30819** - Skate Events (addressable) - **Kind 30820** - Skate Coaches (addressable) - **Kind 30821** - Skate Shops (addressable) - **Kind 30822** - Food Spots (addressable) ### Relay Configuration Default relay: `wss://goskatespots.nostr1.com` Users can manage relays in Settings following NIP-65. ## πŸ“¦ Dependencies Overview ### Core Dependencies - `@nostrify/nostrify` - Nostr protocol implementation - `@nostrify/react` - React integration for Nostr - `react` & `react-dom` - UI framework - `react-router-dom` - Client-side routing - `@tanstack/react-query` - Data fetching and state - `nostr-tools` - Nostr utilities and cryptography ### UI & Styling - `tailwindcss` - Utility-first CSS - `@radix-ui/*` - Accessible UI primitives - `lucide-react` - Icon library - `class-variance-authority` - Component variants - `tailwind-merge` - Class name merging ### Maps & Location - OpenStreetMap - Interactive maps - `ngeohash` - Geohash encoding/decoding ### Bitcoin & Lightning - `@getalby/sdk` - Alby wallet integration - `@cashu/cashu-ts` - Cashu ecash protocol - `coco-cashu-*` - Cashu wallet implementation - `npubcash-sdk` - npub.cash integration - `bitcoinjs-lib` - Bitcoin utilities - `@noble/curves` & `@noble/hashes` - Cryptography ### Media & Streaming - `hls.js` - HLS streaming support - `qrcode` - QR code generation - `html5-qrcode` - QR code scanning ### Utilities - `date-fns` - Date formatting - `zod` - Schema validation - `react-hook-form` - Form handling - `buffer` - Node.js buffer polyfill - `idb` & `dexie` - IndexedDB wrappers ## πŸ—οΈ Project Structure ``` /src β”œβ”€β”€ components/ # React components β”‚ β”œβ”€β”€ ui/ # shadcn/ui components (48+) β”‚ β”œβ”€β”€ auth/ # Authentication components β”‚ └── ... # Feature components β”œβ”€β”€ hooks/ # Custom React hooks β”œβ”€β”€ pages/ # Route pages β”œβ”€β”€ lib/ # Utilities and helpers β”œβ”€β”€ contexts/ # React context providers └── test/ # Testing utilities /public β”œβ”€β”€ images/ # Static images and icons β”œβ”€β”€ manifest.webmanifest └── robots.txt /skills # Implementation guides for features ``` ## πŸ§ͺ Testing ```bash # Run all tests (TypeScript, ESLint, Vitest, Build) npm test # Type checking only npx tsc --noEmit # Linting only npx eslint ``` ## 🀝 Contributing This is a Nostr-based open source project. Contributions are welcome! 1. Fork/clone the repository via Shakespeare or git 2. Create your feature branch 3. Make your changes 4. Run tests (`npm test`) 5. Commit your changes 6. Push and create a pull request ## πŸ“„ License MIT License - See LICENSE file for details ## πŸ™ Credits - **Built with**: [MKStack](https://soapbox.pub/mkstack) - Nostr client framework - **Vibed with**: [Shakespeare](https://shakespeare.diy) - AI-powered development - **Powered by**: [Nostr](https://nostr.com) - Decentralized protocol ## πŸ”— Links - [Live App](https://skate-spots.com) - [Nostr Git Repository](nostr://npub1yrnuj56rnen08zp2h9h7p74ghgjx6ma39spmpj6w9hzxywutevsst7k5cx/git.shakespeare.diy/skate-spots) - [Edit with Shakespeare](https://shakespeare.diy/clone?url=nostr%3A%2F%2Fnpub1yrnuj56rnen08zp2h9h7p74ghgjx6ma39spmpj6w9hzxywutevsst7k5cx%2Fgit.shakespeare.diy%2Fskate-spots) ## πŸ“ž Support For issues or questions: - Open an issue on the repository - Contact via Nostr: npub1yrnuj56rnen08zp2h9h7p74ghgjx6ma39spmpj6w9hzxywutevsst7k5cx --- Made with ❀️ for the skateboarding community