ux(crews): rename "Start a Crew" -> "Create Crew" + clarify Crew vs Lab

"Start a Crew" was ambiguous (team? chat? listing?). Renamed to the clearer
"Create Crew" across the Crews page button/empty state, Create Crew page
title/header/login gate, and Sasquatch FAQ. Added a subtitle distinguishing a
Crew (skate WITH) from The Lab (hire).

Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
This commit is contained in:
shakespeare.diy 2026-07-30 20:02:17 +07:00
parent 0ac5c1019d
commit d465eabd87
4 changed files with 12 additions and 12 deletions

View file

@ -197,7 +197,7 @@ Note: this returns a rich itinerary CARD — after calling it, add a short one-l
- Nostr = decentralized protocol; your cryptographic keys ARE your identity — one login works everywhere, nobody can ban you - Nostr = decentralized protocol; your cryptographic keys ARE your identity — one login works everywhere, nobody can ban you
- Map (the homepage) = discover spots, shops, gear, tours, events and crews worldwide. Toggle layers via the Layers control. Add a spot with the + button. - Map (the homepage) = discover spots, shops, gear, tours, events and crews worldwide. Toggle layers via the Layers control. Add a spot with the + button.
- The Lab = hire skate-scene pros: Coaches, Filmers, Photographers, Video Editors, and ramp/park/DIY Builders. Providers can be an individual OR a collective (crew/studio) — collective members confirm with their own key (green = confirmed, amber = pending). - The Lab = hire skate-scene pros: Coaches, Filmers, Photographers, Video Editors, and ramp/park/DIY Builders. Providers can be an individual OR a collective (crew/studio) — collective members confirm with their own key (green = confirmed, amber = pending).
- Crews = your map-anchored skate family (who you skate with, NOT for hire). A crew has home turf on the map (teal pins), home spots, members, vibes and a manifesto. Create one at /crews → "Start a Crew". Crews reuse the same member-confirmation trust as Lab collectives. Use find_crews to search them. A crew can cross-link its Lab service listings, and you can "Zap the Crew" to split a tip across confirmed members. - Crews = your map-anchored skate family (who you skate with, NOT for hire). A crew has home turf on the map (teal pins), home spots, members, vibes and a manifesto. Create one at /crews → "Create Crew". Crews reuse the same member-confirmation trust as Lab collectives. Use find_crews to search them. A crew can cross-link its Lab service listings, and you can "Zap the Crew" to split a tip across confirmed members.
- Events = find/join skate events & comps (map layer + Events page) - Events = find/join skate events & comps (map layer + Events page)
- Tours = guided local/national/world skate tours - Tours = guided local/national/world skate tours
- Skate Shops = local shops on the map - Skate Shops = local shops on the map
@ -421,9 +421,9 @@ const STATIC_FAQ: Record<string, string> = {
'is it free': "100% free. No ads, no subscriptions, no corporate BS. Built by skaters for skaters. Community-funded via Angor — check the Supporters page. You can also earn Bitcoin through community zaps for contributing quality spots. 🛹", 'is it free': "100% free. No ads, no subscriptions, no corporate BS. Built by skaters for skaters. Community-funded via Angor — check the Supporters page. You can also earn Bitcoin through community zaps for contributing quality spots. 🛹",
'what can i do': "Discover spots worldwide on the map, hire pros in The Lab (coaches, filmers, photographers, editors, ramp builders), roll with a crew, join events, take tours, buy/sell gear, track your private Stash, zap creators, check spot weather, and build the decentralized skate community!", 'what can i do': "Discover spots worldwide on the map, hire pros in The Lab (coaches, filmers, photographers, editors, ramp builders), roll with a crew, join events, take tours, buy/sell gear, track your private Stash, zap creators, check spot weather, and build the decentralized skate community!",
'what is the lab': "The Lab is where you hire skate-scene pros: Coaches, Filmers, Photographers, Video Editors, and ramp/park/DIY Builders. Each can be a solo person or a collective (crew/studio) — members confirm with their own keys so it's legit. All on Nostr, no fake accounts. 🎓", 'what is the lab': "The Lab is where you hire skate-scene pros: Coaches, Filmers, Photographers, Video Editors, and ramp/park/DIY Builders. Each can be a solo person or a collective (crew/studio) — members confirm with their own keys so it's legit. All on Nostr, no fake accounts. 🎓",
'what is a crew': "Crews are your map-anchored skate family — who you skate WITH, not who you hire. Each crew has home turf on the map (teal pins), home spots, members, vibes and a manifesto. Members confirm from their own key. Start one at Crews → 'Start a Crew'. 🤘", 'what is a crew': "Crews are your map-anchored skate family — who you skate WITH, not who you hire. Each crew has home turf on the map (teal pins), home spots, members, vibes and a manifesto. Members confirm from their own key. Create one at Crews → 'Create Crew'. 🤘",
'what are crews': "Crews are your map-anchored skate family — who you skate WITH, not who you hire. Each crew has home turf on the map (teal pins), home spots, members and a manifesto. Members confirm from their own key. Head to the Crews tab to start or join one! 🤘", 'what are crews': "Crews are your map-anchored skate family — who you skate WITH, not who you hire. Each crew has home turf on the map (teal pins), home spots, members and a manifesto. Members confirm from their own key. Head to the Crews tab to start or join one! 🤘",
'how to start a crew': "Go to the Crews tab → 'Start a Crew'. Name it, drop your home turf on the map, add vibes (or your own custom #hashtag), link your home spots, and add members by npub. Each member confirms from their own key so the roster is legit. 🤘", 'how to start a crew': "Go to the Crews tab → 'Create Crew'. Name it, drop your home turf on the map, add vibes (or your own custom #hashtag), link your home spots, and add members by npub. Each member confirms from their own key so the roster is legit. 🤘",
'what is my stash': "My Stash is your PRIVATE, encrypted gear locker (NIP-44 encryption). Track your decks, trucks, wheels, shoes — with storage location, condition, rarity and price. Only YOU can read it unless you mark items public. Great for insurance or planning a swap. 🎒", 'what is my stash': "My Stash is your PRIVATE, encrypted gear locker (NIP-44 encryption). Track your decks, trucks, wheels, shoes — with storage location, condition, rarity and price. Only YOU can read it unless you mark items public. Great for insurance or planning a swap. 🎒",
'what is stash': "My Stash is your PRIVATE, encrypted gear inventory. Log everything you own — condition, where it's stored, value — all encrypted so only you can see it. Mark items public if you want to sell or show them off. 🎒", 'what is stash': "My Stash is your PRIVATE, encrypted gear inventory. Log everything you own — condition, where it's stored, value — all encrypted so only you can see it. Mark items public if you want to sell or show them off. 🎒",
'what is a builder': "Builders are ramp/park/DIY crews in The Lab you can hire to build transitions, bowls, rails, or a whole park. They list what they build, materials, project scale, and can be licensed/insured. Often collectives — and they can link the spots they've built to the map. 🏗️", 'what is a builder': "Builders are ramp/park/DIY crews in The Lab you can hire to build transitions, bowls, rails, or a whole park. They list what they build, materials, project scale, and can be licensed/insured. Often collectives — and they can link the spots they've built to the map. 🏗️",

View file

@ -134,7 +134,7 @@ export function useSasquatchGuide() {
'How do zaps work?', 'How do zaps work?',
], ],
action: user ? undefined : { action: user ? undefined : {
label: 'Login to Start a Crew', label: 'Login to Create a Crew',
onClick: () => { onClick: () => {
window.location.href = '/onboarding'; window.location.href = '/onboarding';
}, },

View file

@ -9,7 +9,7 @@ import { Users, ArrowLeft } from 'lucide-react';
export default function CreateCrewPage() { export default function CreateCrewPage() {
useSeoMeta({ useSeoMeta({
title: 'Start a Crew - SkateSpots', title: 'Create a Crew - SkateSpots',
description: 'Create your skate crew — home turf, members and spots.', description: 'Create your skate crew — home turf, members and spots.',
}); });
@ -23,7 +23,7 @@ export default function CreateCrewPage() {
<CardContent className="py-12 text-center"> <CardContent className="py-12 text-center">
<Users className="h-12 w-12 mx-auto mb-4 text-gray-600" /> <Users className="h-12 w-12 mx-auto mb-4 text-gray-600" />
<h2 className="text-xl font-bold mb-2">Login Required</h2> <h2 className="text-xl font-bold mb-2">Login Required</h2>
<p className="text-gray-400 mb-6">You need to log in to start a crew.</p> <p className="text-gray-400 mb-6">You need to log in to create a crew.</p>
<LoginArea className="justify-center max-w-60 mx-auto" /> <LoginArea className="justify-center max-w-60 mx-auto" />
</CardContent> </CardContent>
</Card> </Card>
@ -41,9 +41,9 @@ export default function CreateCrewPage() {
Back to Crews Back to Crews
</Link> </Link>
<h1 className="text-3xl font-black uppercase text-teal-400" style={{ fontFamily: 'Impact, "Arial Black", sans-serif' }}> <h1 className="text-3xl font-black uppercase text-teal-400" style={{ fontFamily: 'Impact, "Arial Black", sans-serif' }}>
Start a Crew Create a Crew
</h1> </h1>
<p className="text-gray-400 mt-1">Rally your people — plant your flag on the map</p> <p className="text-gray-400 mt-1">Your skate family — the people you skate with. Plant your flag on the map.</p>
</div> </div>
<CrewForm /> <CrewForm />
</div> </div>

View file

@ -195,7 +195,7 @@ export default function CrewsPage() {
> >
<Users className="h-7 w-7" /> Crews <Users className="h-7 w-7" /> Crews
</h1> </h1>
<p className="mt-1 text-sm text-gray-400">Find your people — local crews, collectives &amp; communities</p> <p className="mt-1 text-sm text-gray-400">Your map-anchored skate family — the people you skate <span className="text-teal-400/80 font-semibold">with</span>, not who you hire (that's The Lab).</p>
{/* Social-proof stat line */} {/* Social-proof stat line */}
{!isLoading && crews && crews.length > 0 && ( {!isLoading && crews && crews.length > 0 && (
<p className="mt-1 text-xs font-bold text-teal-500/80"> <p className="mt-1 text-xs font-bold text-teal-500/80">
@ -207,8 +207,8 @@ export default function CrewsPage() {
<Link to="/create-crew"> <Link to="/create-crew">
<Button className="gap-2 bg-teal-500 text-sm font-black uppercase text-black hover:bg-teal-600"> <Button className="gap-2 bg-teal-500 text-sm font-black uppercase text-black hover:bg-teal-600">
<Plus className="h-4 w-4" /> <Plus className="h-4 w-4" />
<span className="hidden sm:inline">Start a Crew</span> <span className="hidden sm:inline">Create Crew</span>
<span className="sm:hidden">Start</span> <span className="sm:hidden">Create</span>
</Button> </Button>
</Link> </Link>
</div> </div>
@ -349,7 +349,7 @@ function EmptyState({
<div className="flex flex-col gap-2 sm:flex-row sm:justify-center"> <div className="flex flex-col gap-2 sm:flex-row sm:justify-center">
<Link to="/create-crew"> <Link to="/create-crew">
<Button className="w-full gap-2 bg-teal-500 font-black uppercase text-black hover:bg-teal-600 sm:w-auto"> <Button className="w-full gap-2 bg-teal-500 font-black uppercase text-black hover:bg-teal-600 sm:w-auto">
<Plus className="h-4 w-4" /> Start a Crew <Plus className="h-4 w-4" /> Create Crew
</Button> </Button>
</Link> </Link>
{!hasLocation && ( {!hasLocation && (