8.7 KiB
SkateSpots - Deployment Comparison & Implementation Plan
Current vs Deployed Site Analysis
Date: December 30, 2025
✅ COMPLETED FEATURES (Current Build)
Core Functionality
- Homepage with hero, featured spots, events, and CTA sections
- THUG2-inspired black background with neon red/lime/orange aesthetic
- Map page with spot browsing (map/list views)
- Spot creation with Access Type categories (Public/Private/Ask Locals)
- Separate shop creation page (no Access Type for shops)
- Event creation and browsing
- Coach profiles (Skater Lab)
- Rewards page linked to badges.page
- Pyramid rankings page
- Onboarding page with comprehensive Nostr guide
- NIP-05 verification requirements for events, coaches, and shops
- Delete and edit functionality for creators
- Spot detail pages with comments and zaps
- Event detail pages
- Settings page
- Wallet integration
- Login/signup with nsec/npub copy buttons
- "New to Nostr?" prominent section on homepage
- Beta disclaimer on homepage
- Mobile-responsive design with bottom navigation
- Neon navigation matching THUG2 aesthetic
- Name and NIP-05 display on event/coach cards
Technical Implementation
- Nostr integration with custom kinds (34799, 35001)
- NIP-52 calendar events for skate events
- Geohash-based location indexing
- Multiple relay support
- Lightning zaps integration
- File uploads via Blossom
- Comments system (NIP-22)
- React Router with all necessary routes
- TypeScript type safety
- Responsive UI with Tailwind CSS
- shadcn/ui components
- Leaflet maps (attribution removed)
❌ MISSING FEATURES (Needs Implementation)
1. PWA (Progressive Web App) Support
Priority: HIGH
Effort: 2-3 hours
Budget: ~$10-15
What's Missing:
- ❌
/public/manifest.webmanifestfile - ❌ PWA icons in
/public/images/directory:- icon-72.png, icon-96.png, icon-128.png, icon-144.png
- icon-152.png, icon-192.png, icon-384.png, icon-512.png
- logo.png (for favicon)
- ❌ Screenshot images for app stores
- ❌ Service worker registration (if not auto-handled by Vite)
Implementation Steps:
- Create
public/manifest.webmanifestwith proper metadata - Generate PWA icons in various sizes (use a tool or create manually)
- Create app screenshots for mobile/desktop
- Add logo.png for favicon
- Update index.html with proper meta tags and icon links
- Test PWA installation on mobile and desktop
Files to Create:
public/
├── manifest.webmanifest
└── images/
├── icon-72.png
├── icon-96.png
├── icon-128.png
├── icon-144.png
├── icon-152.png
├── icon-192.png
├── icon-384.png
├── icon-512.png
├── logo.png
├── screenshot-mobile.png
└── screenshot-desktop.png
2. Marketplace Integration
Priority: MEDIUM
Effort: 1-2 hours
Budget: ~$5-10
What's Missing:
- ❌
/marketplaceroute showing Plebeian Market integration - ❌ Link to browse marketplace from onboarding page currently goes to
/marketplace(doesn't exist)
Implementation Steps:
- Create
MarketplacePage.tsx - Add route to AppRouter
- Display info about Plebeian Market with external links
- Option: Embed or link to Plebeian Market categories
- Style with orange neon theme matching onboarding page
Alternative: Since Plebeian Market is external, could just redirect to https://plebeian.market or show a landing page explaining the integration.
3. Food/Restaurants Feature
Priority: LOW
Effort: Already exists but needs testing
Budget: ~$2-5
Current Status:
- ✅ FoodPage exists at
/food - ✅ useFoodSpots hook implemented
- ❌ Not linked in navigation
- ❌ Needs testing with real geolocation data
Implementation Steps:
- Test food spots functionality
- Consider adding to navigation if working well
- Improve UI to match neon aesthetic if needed
4. Store Owner Claiming Feature
Priority: MEDIUM
Effort: 3-4 hours
Budget: ~$15-20
What's Missing:
- ❌ "Claim this shop" functionality for shop owners
- ❌ Verification that claimer has NIP-05
- ❌ UI to show "claimed by" status on shop pages
- ❌ Logic to prevent duplicate claims or handle conflicts
Implementation Steps:
- Add
claimed_bytag to shop events - Create ClaimShopDialog component
- Add "Claim Shop" button on shop detail pages
- Verify NIP-05 before allowing claim
- Display owner info on claimed shops
- Handle claim disputes/conflicts
Technical Design:
- Use
claimed_bytag with npub of claimer - Require NIP-05 verification to claim
- Show verification badge on claimed shops
- Allow original poster or claimer to edit shop details
5. Access Type Display on Spots
Priority: LOW
Effort: 1 hour
Budget: ~$5
What's Missing:
- ❌ Display access type (Public/Private/Ask Locals) on spot detail pages
- ❌ Show access type badges on spot cards
- ❌ Filter spots by access type on map page
Implementation Steps:
- Parse
accesstag from spot events - Add access type badge to SpotCard component
- Display access type prominently on SpotDetailPage
- Add access type filter to map page
- Use emoji icons matching create form (🌍/🔒/👥)
6. Enhanced Metadata & SEO
Priority: LOW
Effort: 1 hour
Budget: ~$5
What's Missing:
- ❌ Open Graph meta tags for social sharing
- ❌ Twitter Card meta tags
- ❌ Structured data (JSON-LD) for search engines
Implementation Steps:
- Add OG tags to index.html template
- Add dynamic OG tags using unhead on detail pages
- Add Twitter Card tags
- Consider adding JSON-LD for spots/events
7. About Page
Priority: LOW
Effort: 30 minutes
Budget: ~$2-3
What's Missing:
- ❌
/aboutpage (linked in footer but doesn't exist)
Implementation Steps:
- Create AboutPage.tsx
- Add route to AppRouter
- Include info about SkateSpots, Nostr, and the team
- Style with neon aesthetic
🎨 STYLING IMPROVEMENTS NEEDED
Minor Visual Tweaks
Priority: LOW
Effort: 1-2 hours
Budget: ~$5-10
- ❌ Ensure all input fields have consistent neon border styling
- ❌ Standardize all card borders to use neon colors
- ❌ Add more hover animations and micro-interactions
- ❌ Ensure all buttons use consistent neon styling
- ❌ Add loading skeletons to more components
📊 TOTAL IMPLEMENTATION BREAKDOWN
Priority Levels:
- HIGH: PWA Support (critical for mobile experience)
- MEDIUM: Store Claiming, Marketplace Integration
- LOW: Everything else
Estimated Effort:
- High Priority: 2-3 hours (~$10-15)
- Medium Priority: 4-6 hours (~$20-30)
- Low Priority: 3-4 hours (~$15-20)
Total Estimate: 9-13 hours (~$45-65)
Recommended Implementation Order:
- ✅ Shop Creation Fix - COMPLETED
- 🔄 PWA Manifest & Icons - Next priority
- 🔄 Marketplace Page - Quick win
- 🔄 Access Type Display - Enhances UX
- 🔄 Store Claiming - Important for shops
- 🔄 About Page - Easy to implement
- 🔄 Styling Polish - Final touches
🚀 DEPLOYMENT READINESS
Current Status: ~85% Feature Complete
What Works Now:
- ✅ All core spot/event/coach functionality
- ✅ Full authentication flow
- ✅ Beautiful THUG2 neon aesthetic
- ✅ Mobile responsive
- ✅ Separate shop creation
- ✅ Access type categories for spots
- ✅ NIP-05 requirements where needed
- ✅ Name display on cards
- ✅ Beta disclaimer
What's Needed for Full Parity:
- PWA support (icons and manifest)
- Marketplace landing page
- Minor polish items
Recommendation: The app is deployable now with current features. PWA and marketplace can be added post-deployment without breaking anything.
📝 NOTES
About Pyramid Rankings
The pyramid rankings work by querying live Nostr events. Your contributions will show up once:
- You're logged in with the same npub that created content
- Events have synced across relays (can take a few minutes)
- The page is deployed and queries the network
Currently in development mode, the pyramid may not show data until deployed because it needs to query real relay data.
About Spot Deletion
- ✅ Delete functionality EXISTS (in SpotDetailPage)
- ✅ Only creator can delete their own spots
- ✅ Uses Nostr deletion events (kind 5)
- Note: Some relays may keep deleted events (this is by design for censorship resistance)
About Edit Functionality
- ✅ Edit functionality EXISTS for both spots and events
- ✅ Uses Nostr replaceable events (updates automatically)
- ✅ Only creator can edit their own content