SkateSpots/README.md
shakespeare.diy 27e14994b5 Import files from skate-spots project
Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
2026-06-15 20:04:15 +07:00

220 lines
6.5 KiB
Markdown

# 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