a a vibe-coded abomination experiment of a fragrance review platform built on the atmosphere. drydown.social
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

swapping to alpha.drydown for the preact app. hope this works lol :fingerscrossed:

+32 -32
+6 -6
LEXICON_PUBLISHING.md
··· 14 14 15 15 - **goat CLI tool** installed (`brew install bluesky-social/tap/goat` on macOS) 16 16 - **Active Bluesky account** with your PDS 17 - - **DNS access** for `drydown.social` domain 17 + - **DNS access** for `alpha.drydown.social` domain 18 18 - **Node.js** for TypeScript type generation 19 19 20 20 ## Step-by-Step Publishing Process ··· 148 148 149 149 ### 8. Configure DNS Authority 150 150 151 - To prove you control the `drydown.social` domain, add a DNS TXT record: 151 + To prove you control the `alpha.drydown.social` domain, add a DNS TXT record: 152 152 153 153 **DNS Record Details:** 154 - - **Name/Host**: `_lexicon.drydown.social` (or just `_lexicon` depending on your DNS provider) 154 + - **Name/Host**: `_lexicon.alpha.drydown.social` (or just `_lexicon` depending on your DNS provider) 155 155 - **Type**: `TXT` 156 156 - **Value**: `did=YOUR_DID_HERE` (replace with your actual DID from step 7) 157 157 - **TTL**: 3600 (or default) 158 158 159 159 **Example:** 160 160 ``` 161 - _lexicon.drydown.social. IN TXT "did=did:plc:abc123xyz..." 161 + _lexicon.alpha.drydown.social. IN TXT "did=did:plc:abc123xyz..." 162 162 ``` 163 163 164 164 ### 9. Verify DNS Propagation ··· 166 166 Wait 5-10 minutes after adding the DNS record, then verify: 167 167 168 168 ```bash 169 - dig TXT _lexicon.drydown.social 169 + dig TXT _lexicon.alpha.drydown.social 170 170 ``` 171 171 172 172 **Expected output:** Should show your DID in the TXT record ··· 222 222 - Wait longer for DNS propagation (can take up to 24 hours) 223 223 - Verify the TXT record is correctly formatted 224 224 - Ensure you're using the correct DID 225 - - Check that the record name is exactly `_lexicon.drydown.social` 225 + - Check that the record name is exactly `_lexicon.alpha.drydown.social` 226 226 227 227 ### "invalid record key specifier: self" 228 228
+4 -4
docs/adding-services.md
··· 160 160 161 161 ### Footer Links 162 162 - **Location:** App footer (`Footer`) 163 - - **Behavior:** Links to `@drydown.social` on the **logged-in user's service** 164 - - **Example:** User on Blacksky sees a link to Blacksky's drydown.social profile 163 + - **Behavior:** Links to `@alpha.drydown.social` on the **logged-in user's service** 164 + - **Example:** User on Blacksky sees a link to Blacksky's alpha.drydown.social profile 165 165 166 166 ## Testing Your Service Configuration 167 167 ··· 185 185 - [ ] Click the link and verify it goes to the correct profile 186 186 187 187 4. **Footer Link** 188 - - [ ] Check the footer link to `@drydown.social` 189 - - [ ] Verify it points to your service's drydown.social profile 188 + - [ ] Check the footer link to `@alpha.drydown.social` 189 + - [ ] Verify it points to your service's alpha.drydown.social profile 190 190 191 191 ### Testing with Mock Issuers 192 192
+1 -1
functions/[[path]].ts
··· 52 52 // favicon.svg is the only guaranteed static asset; a proper og-default.png 53 53 // should be added to /public. For now fall back to the favicon so the tag 54 54 // is at least present and non-broken. 55 - let image = 'https://drydown.social/favicon.svg'; 55 + let image = 'https://alpha.drydown.social/favicon.svg'; 56 56 let dataFetchSucceeded = false; 57 57 58 58 try {
+5 -5
index.html
··· 9 9 10 10 <!-- Open Graph Default Tags --> 11 11 <meta property="og:type" content="website" /> 12 - <meta property="og:url" content="https://drydown.social/" /> 12 + <meta property="og:url" content="https://alpha.drydown.social/" /> 13 13 <meta property="og:title" content="Drydown - Fragrance Reviews" /> 14 14 <meta property="og:description" content="Discover and track fragrances on Drydown." /> 15 - <meta property="og:image" content="https://drydown.social/default-og.png" /> 16 - 15 + <meta property="og:image" content="https://alpha.drydown.social/default-og.png" /> 16 + 17 17 <!-- Twitter Default Tags --> 18 18 <meta property="twitter:card" content="summary_large_image" /> 19 - <meta property="twitter:url" content="https://drydown.social/" /> 19 + <meta property="twitter:url" content="https://alpha.drydown.social/" /> 20 20 <meta property="twitter:title" content="Drydown - Fragrance Reviews" /> 21 21 <meta property="twitter:description" content="Discover and track fragrances on Drydown." /> 22 - <meta property="twitter:image" content="https://drydown.social/default-og.png" /> 22 + <meta property="twitter:image" content="https://alpha.drydown.social/default-og.png" /> 23 23 </head> 24 24 <body> 25 25 <div id="app"></div>
+6 -6
public/client-metadata.json
··· 1 1 { 2 - "client_id": "https://drydown.social/client-metadata.json", 2 + "client_id": "https://alpha.drydown.social/client-metadata.json", 3 3 "client_name": "Drydown App", 4 - "client_uri": "https://drydown.social", 5 - "logo_uri": "https://drydown.social/favicon.svg", 6 - "tos_uri": "https://drydown.social/tos", 7 - "policy_uri": "https://drydown.social/policy", 4 + "client_uri": "https://alpha.drydown.social", 5 + "logo_uri": "https://alpha.drydown.social/favicon.svg", 6 + "tos_uri": "https://alpha.drydown.social/tos", 7 + "policy_uri": "https://alpha.drydown.social/policy", 8 8 "redirect_uris": [ 9 - "https://drydown.social/" 9 + "https://alpha.drydown.social/" 10 10 ], 11 11 "scope": "atproto repo:social.drydown.house repo:social.drydown.fragrance repo:social.drydown.review repo:social.drydown.settings rpc:app.bsky.actor.getProfile?aud=* rpc:app.bsky.graph.getFollows?aud=* rpc:app.bsky.feed.getTimeline?aud=* rpc:app.bsky.feed.post?aud=*", 12 12 "grant_types": [
+1 -1
src/app.tsx
··· 159 159 } catch (err) { 160 160 console.error('Auth init failed:', err) 161 161 // If it's a ZodError about localhost, checking the URL might help 162 - const allowedHosts = ['127.0.0.1', 'drydown.social'] 162 + const allowedHosts = ['127.0.0.1', 'alpha.drydown.social'] 163 163 if (!allowedHosts.includes(window.location.hostname)) { 164 164 alert(`Configuration Error: Please access this app via one of the allowed domains: ${allowedHosts.join(', ')}.`) 165 165 }
+1 -1
src/components/EditReview.tsx
··· 408 408 // We use the DID in the link for robustness. 409 409 const link = `${window.location.origin}/profile/${session.sub}/review/${rkey}` 410 410 411 - const header = `${fragranceName} by ${houseName} on @drydown.social` 411 + const header = `${fragranceName} by ${houseName} on @alpha.drydown.social` 412 412 const footer = `#scentsky #fragrancesky #perfumesky` 413 413 414 414 const countGraphemes = (s: string) => {
+2 -2
src/components/Footer.tsx
··· 13 13 14 14 // Use user's service for the Drydown profile link, fallback to Bluesky 15 15 const service = userService || DEFAULT_SERVICE 16 - const drydownProfileUrl = service.profileUrl('drydown.social') 16 + const drydownProfileUrl = service.profileUrl('alpha.drydown.social') 17 17 18 18 return ( 19 19 <footer className="app-footer"> ··· 23 23 target="_blank" 24 24 rel="noopener noreferrer" 25 25 > 26 - @drydown.social 26 + @alpha.drydown.social 27 27 </a> 28 28 {userDataUrl && ( 29 29 <>
+1 -1
src/components/LandingPage.tsx
··· 167 167 <SEO 168 168 title="Drydown - Discover & Review Fragrances on Bluesky" 169 169 description="Join the Drydown community to create time-based fragrance reviews and discover new perfumes reviewed by real people." 170 - url="https://drydown.social" 170 + url="https://alpha.drydown.social" 171 171 /> 172 172 173 173 <Header session={null} />
+2 -2
src/components/SingleReviewPage.tsx
··· 176 176 return s.length 177 177 } 178 178 179 - const header = `${fragrance.name} by ${houseName} on @drydown.social` 179 + const header = `${fragrance.name} by ${houseName} on @alpha.drydown.social` 180 180 const footer = `#scentsky #fragrancesky #perfumesky` 181 181 182 182 // Calculate length of fixed parts ··· 243 243 return s.length 244 244 } 245 245 246 - const header = `${fragrance.name} by ${houseName} on @drydown.social` 246 + const header = `${fragrance.name} by ${houseName} on @alpha.drydown.social` 247 247 const footer = `#scentsky #fragrancesky #perfumesky` 248 248 249 249 // Structure: [header]\n\n[starsLine]\n[text]\n\n[footer]\n\n[link]
+2 -2
src/config.ts
··· 7 7 redirectUri: `http://127.0.0.1:${port}`, 8 8 } 9 9 : { 10 - clientId: 'https://drydown.social/client-metadata.json', 11 - redirectUri: 'https://drydown.social/', 10 + clientId: 'https://alpha.drydown.social/client-metadata.json', 11 + redirectUri: 'https://alpha.drydown.social/', 12 12 }
+1 -1
src/hooks/useInviteButton.ts
··· 30 30 31 31 const invite = (targetHandle: string) => { 32 32 // Generate personal recommendation message 33 - const message = `Hey @${targetHandle}, you should check out @drydown.social! 33 + const message = `Hey @${targetHandle}, you should check out @alpha.drydown.social! 34 34 35 35 It's an app for creating detailed fragrance reviews that capture how scents evolve over time. I think you'd enjoy it!` 36 36