a tool for shared writing and social publishing
0

Configure Feed

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

wire up the create account button

celine (Apr 13, 2026, 6:28 PM EDT) ba84643b af928c34

+9 -3
+2
app/api/oauth/[route]/route.ts
··· 32 32 case "login": { 33 33 const searchParams = req.nextUrl.searchParams; 34 34 const handle = searchParams.get("handle") as string; 35 + const signup = searchParams.get("signup") === "true"; 35 36 // Put originating page here! 36 37 let redirect = searchParams.get("redirect_url"); 37 38 if (redirect) redirect = decodeURIComponent(redirect); ··· 46 47 "atproto transition:email include:pub.leaflet.authFullPermissions include:site.standard.authFull include:app.bsky.authCreatePosts include:app.bsky.authViewAll?aud=did:web:api.bsky.app%23bsky_appview blob:*/*", 47 48 signal: ac.signal, 48 49 state: JSON.stringify(state), 50 + ...(signup ? { prompt: "create" } : {}), 49 51 }); 50 52 51 53 return NextResponse.redirect(url);
+7 -3
components/LoginButton.tsx
··· 181 181 <div className="text-secondary pb-3"> 182 182 Create an Atmosphere account on Bluesky to get started! 183 183 </div> 184 - <ButtonPrimary className="mx-auto mb-1"> 185 - <BlueskyTiny /> Sign up via Bluesky 186 - </ButtonPrimary> 184 + <form action="/api/oauth/login" method="GET"> 185 + <input type="hidden" name="redirect_url" value="/" /> 186 + <input type="hidden" name="signup" value="true" /> 187 + <ButtonPrimary className="mx-auto mb-1"> 188 + <BlueskyTiny /> Sign up via Bluesky 189 + </ButtonPrimary> 190 + </form> 187 191 <AtmosphericHandleInfo /> 188 192 </div> 189 193 )}