The Appview for the kipclip.com atproto bookmarking service

Friendlier language and registration flow for new users

Replace AT Protocol jargon with accessible language across all
user-facing pages. Add /register page with account provider chooser
(Bluesky, Blacksky, Eurosky). Restructure FAQ into "Using kipclip"
and "How the technology works" sections.

+442 -202
+10 -13
frontend/components/About.tsx
··· 31 31 About kipclip 32 32 </h2> 33 33 <p className="text-gray-700 text-lg"> 34 - kipclip is a simple, open bookmarks app for the AT Protocol. Save 35 - links you care about, organize them with tags, and browse them from 36 - any device. 34 + kipclip is a free, open bookmark manager. Save links you care about, 35 + organize them with tags, and access them from any device. 37 36 </p> 38 37 </section> 39 38 ··· 41 40 <h3 className="text-xl font-bold text-gray-800">How it works</h3> 42 41 <ul className="list-disc pl-5 text-gray-700 space-y-2"> 43 42 <li> 44 - Your bookmarks are saved as AT Protocol records in your own PDS 45 - (Personal Data Server) under your account. 43 + Your bookmarks are stored in your own account, not on kipclip's 44 + servers — you own your data. 46 45 </li> 47 46 <li> 48 - kipclip uses a community lexicon (schema) so other AT Protocol 49 - apps can read these records too. 47 + kipclip uses an open standard so other apps can read your 48 + bookmarks too. 50 49 </li> 51 50 <li> 52 - The app UI is a lightweight web client; the data lives with you in 53 - your PDS. 51 + The app is a lightweight web client. Your data lives with you. 54 52 </li> 55 53 </ul> 56 54 </section> ··· 60 58 Important note on privacy 61 59 </h3> 62 60 <p className="text-gray-700"> 63 - AT Protocol records are public by default. That means bookmarks you 64 - save with kipclip are public and discoverable. Please don’t save 65 - anything sensitive or private. 61 + Bookmarks you save are public and can be discovered by others. Don't 62 + save anything sensitive or private. 66 63 </p> 67 64 </section> 68 65 ··· 76 73 > 77 74 Frequently Asked Questions 78 75 </a>{" "} 79 - page to learn more about AT Protocol, login, data storage, and more. 76 + page to learn more about how kipclip works. 80 77 </p> 81 78 </section> 82 79
+5
frontend/components/App.tsx
··· 7 7 import { About } from "./About.tsx"; 8 8 import { Save } from "./Save.tsx"; 9 9 import { FAQ } from "./FAQ.tsx"; 10 + import { Register } from "./Register.tsx"; 10 11 import { SharedBookmarks } from "./SharedBookmarks.tsx"; 11 12 import { Settings } from "./Settings.tsx"; 12 13 import { ReadingList } from "./ReadingList.tsx"; ··· 94 95 95 96 if (currentPath === "/faq") { 96 97 return <FAQ />; 98 + } 99 + 100 + if (currentPath === "/register") { 101 + return <Register />; 97 102 } 98 103 99 104 if (currentPath === "/save") {
+266 -180
frontend/components/FAQ.tsx
··· 31 31 Frequently Asked Questions 32 32 </h2> 33 33 <p className="text-gray-700 text-lg"> 34 - Everything you need to know about using kipclip with Bluesky and AT 35 - Protocol. 34 + Everything you need to know about using kipclip. 36 35 </p> 37 36 </section> 38 37 39 - <section className="bg-white rounded-lg shadow-md p-6 space-y-6"> 40 - <div> 41 - <h3 className="text-xl font-bold text-gray-800 mb-2"> 42 - What is AT Protocol? 43 - </h3> 44 - <p className="text-gray-700"> 45 - AT Protocol is an open, decentralized social networking protocol. 46 - It's the technology that powers Bluesky and allows your data to be 47 - portable across different apps and services. Think of it like 48 - email - you own your address and can use it with different email 49 - clients. 50 - </p> 51 - </div> 38 + {/* Section 1: Using kipclip */} 39 + <section> 40 + <h3 41 + className="text-2xl font-bold mb-4" 42 + style={{ color: "var(--coral)" }} 43 + > 44 + Using kipclip 45 + </h3> 46 + <div className="bg-white rounded-lg shadow-md p-6 space-y-6"> 47 + <div> 48 + <h4 className="text-xl font-bold text-gray-800 mb-2"> 49 + How do I create an account? 50 + </h4> 51 + <p className="text-gray-700"> 52 + Creating an account is free. You can sign up through{" "} 53 + <a 54 + href="https://bsky.app" 55 + target="_blank" 56 + rel="noopener noreferrer" 57 + className="underline hover:text-gray-800" 58 + > 59 + Bluesky 60 + </a> 61 + ,{" "} 62 + <a 63 + href="https://blacksky.community" 64 + target="_blank" 65 + rel="noopener noreferrer" 66 + className="underline hover:text-gray-800" 67 + > 68 + Blacksky 69 + </a> 70 + , or{" "} 71 + <a 72 + href="https://www.eurosky.tech/register" 73 + target="_blank" 74 + rel="noopener noreferrer" 75 + className="underline hover:text-gray-800" 76 + > 77 + Eurosky 78 + </a> 79 + . Your account works across kipclip and a growing number of apps 80 + in the same ecosystem. Visit the{" "} 81 + <a href="/register" className="underline hover:text-gray-800"> 82 + registration page 83 + </a>{" "} 84 + to get started. 85 + </p> 86 + </div> 52 87 53 - <div> 54 - <h3 className="text-xl font-bold text-gray-800 mb-2"> 55 - Can I use my Bluesky account to sign in? 56 - </h3> 57 - <p className="text-gray-700"> 58 - Yes! Your Bluesky account is an AT Protocol account. Just enter 59 - your Bluesky handle (like alice.bsky.social) to sign in. kipclip 60 - works seamlessly with Bluesky because they both use AT Protocol. 61 - </p> 62 - </div> 88 + <div> 89 + <h4 className="text-xl font-bold text-gray-800 mb-2"> 90 + How do I sign in? 91 + </h4> 92 + <p className="text-gray-700"> 93 + Enter your username (like alice.bsky.social) on the sign-in 94 + page. You'll be securely redirected to authorize kipclip, then 95 + sent back. Your password is never shared with kipclip. 96 + </p> 97 + </div> 63 98 64 - <div> 65 - <h3 className="text-xl font-bold text-gray-800 mb-2"> 66 - How does the login process work? 67 - </h3> 68 - <p className="text-gray-700"> 69 - When you sign in, kipclip uses OAuth to securely connect to your 70 - Personal Data Server (PDS). This is the same secure login method 71 - used by apps like Twitter or Google. You'll be redirected to your 72 - PDS to authorize kipclip, then redirected back. Your password is 73 - never shared with kipclip. 74 - </p> 75 - </div> 99 + <div> 100 + <h4 className="text-xl font-bold text-gray-800 mb-2"> 101 + Where are my bookmarks stored? 102 + </h4> 103 + <p className="text-gray-700"> 104 + In your own account, not on kipclip's servers. You own your 105 + data, and other compatible apps can access your bookmarks too. 106 + </p> 107 + </div> 76 108 77 - <div> 78 - <h3 className="text-xl font-bold text-gray-800 mb-2"> 79 - Where are my bookmarks stored? 80 - </h3> 81 - <p className="text-gray-700"> 82 - Your bookmarks are stored in your own Personal Data Server (PDS), 83 - not on kipclip's servers. If you use Bluesky, that's your Bluesky 84 - PDS. This means you own your data and can access it with other AT 85 - Protocol apps that support the bookmark format. 86 - </p> 87 - </div> 109 + <div> 110 + <h4 className="text-xl font-bold text-gray-800 mb-2"> 111 + Are my bookmarks private? 112 + </h4> 113 + <p className="text-gray-700"> 114 + No, bookmarks are public by default and can be discovered by 115 + others. Don't save anything sensitive or private. Think of 116 + kipclip bookmarks like public social media posts. 117 + </p> 118 + </div> 88 119 89 - <div> 90 - <h3 className="text-xl font-bold text-gray-800 mb-2"> 91 - Can I share my bookmarks? 92 - </h3> 93 - <p className="text-gray-700"> 94 - Yes! You can tag your bookmarks with custom labels, and kipclip 95 - automatically creates shareable collections based on those tags. 96 - Each collection gets its own unique URL with custom preview cards 97 - when shared on social media, making it easy to share curated lists 98 - with others. 99 - </p> 100 - </div> 120 + <div> 121 + <h4 className="text-xl font-bold text-gray-800 mb-2"> 122 + Can I share my bookmarks? 123 + </h4> 124 + <p className="text-gray-700"> 125 + Yes! You can tag your bookmarks with custom labels, and kipclip 126 + automatically creates shareable collections based on those tags. 127 + Each collection gets its own unique URL with custom preview 128 + cards when shared on social media, making it easy to share 129 + curated lists with others. 130 + </p> 131 + </div> 101 132 102 - <div> 103 - <h3 className="text-xl font-bold text-gray-800 mb-2"> 104 - Can I use a custom domain as my handle? 105 - </h3> 106 - <p className="text-gray-700"> 107 - Yes! If you've set up a custom domain handle with AT Protocol 108 - (like yourname.com), you can use it to sign in to kipclip. Just 109 - enter your custom domain handle instead of a .bsky.social handle. 110 - </p> 111 - </div> 133 + <div> 134 + <h4 className="text-xl font-bold text-gray-800 mb-2"> 135 + What happens if kipclip shuts down? 136 + </h4> 137 + <p className="text-gray-700"> 138 + Your bookmarks stay safe in your account. They're not locked 139 + into kipclip — you could use another compatible app, or even 140 + host your own copy since kipclip is open source. 141 + </p> 142 + </div> 112 143 113 - <div> 114 - <h3 className="text-xl font-bold text-gray-800 mb-2"> 115 - Is my data portable? 116 - </h3> 117 - <p className="text-gray-700"> 118 - Absolutely! Because your bookmarks are stored using the community 119 - bookmark lexicon on your PDS, you can access them with any other 120 - AT Protocol app that supports this format. You're not locked into 121 - kipclip - your data is truly yours. 122 - </p> 123 - </div> 144 + <div> 145 + <h4 className="text-xl font-bold text-gray-800 mb-2"> 146 + Can I install kipclip on my phone? 147 + </h4> 148 + <p className="text-gray-700"> 149 + Yes! You can add kipclip to your home screen on both Android and 150 + iOS, and it will work like a native app. On Android, use "Add to 151 + Home screen" or "Install app" in Chrome — kipclip will then 152 + appear in your share menu, letting you save bookmarks directly 153 + from any app. On iOS, use "Add to Home Screen" from Safari's 154 + share menu, then use the iOS Shortcut to save bookmarks. See the 155 + {" "} 156 + <a href="/tools" className="underline hover:text-gray-800"> 157 + Tools page 158 + </a>{" "} 159 + for detailed installation instructions. 160 + </p> 161 + </div> 124 162 125 - <div> 126 - <h3 className="text-xl font-bold text-gray-800 mb-2"> 127 - What happens if I move to a different PDS? 128 - </h3> 129 - <p className="text-gray-700"> 130 - Your bookmarks move with you! When you migrate your account to a 131 - different PDS (using tools like{" "} 132 - <a 133 - href="https://pdsmoover.com" 134 - target="_blank" 135 - rel="noopener" 136 - className="underline hover:text-gray-800" 137 - > 138 - pdsmoover.com 139 - </a> 140 - ), all your data including bookmarks transfers automatically. 141 - They're tied to your account, not to kipclip or any specific 142 - server. 143 - </p> 163 + <div> 164 + <h4 className="text-xl font-bold text-gray-800 mb-2"> 165 + Does kipclip support RSS feeds? 166 + </h4> 167 + <p className="text-gray-700"> 168 + Absolutely! Every shared collection has its own RSS feed that 169 + you can subscribe to in your favorite RSS reader. Simply add 170 + "/rss" to the end of any collection URL to access the feed. RSS 171 + readers will also auto-discover the feed when you visit a 172 + collection page. 173 + </p> 174 + </div> 144 175 </div> 176 + </section> 145 177 146 - <div> 147 - <h3 className="text-xl font-bold text-gray-800 mb-2"> 148 - What happens to my bookmarks if kipclip shuts down? 149 - </h3> 150 - <p className="text-gray-700"> 151 - Your bookmarks remain safe on your PDS - they're just JSON files 152 - stored with your account data. You could use another app that 153 - supports the community bookmark lexicon, or even build your own 154 - tool. Since kipclip is open source, you or anyone else could also 155 - host a copy of it. 156 - </p> 157 - </div> 178 + {/* Section 2: How the technology works */} 179 + <section> 180 + <h3 181 + className="text-2xl font-bold mb-2" 182 + style={{ color: "var(--coral)" }} 183 + > 184 + How the technology works 185 + </h3> 186 + <p className="text-gray-600 mb-4"> 187 + kipclip is built on the Atmosphere — an open ecosystem of apps that 188 + share a common account system. Here's how it works under the hood. 189 + </p> 190 + <div className="bg-white rounded-lg shadow-md p-6 space-y-6"> 191 + <div> 192 + <h4 className="text-xl font-bold text-gray-800 mb-2"> 193 + What is AT Protocol? 194 + </h4> 195 + <p className="text-gray-700"> 196 + AT Protocol is an open, decentralized social networking 197 + protocol. It's the technology that powers Bluesky and allows 198 + your data to be portable across different apps and services. 199 + Think of it like email — you own your address and can use it 200 + with different clients. 201 + </p> 202 + </div> 158 203 159 - <div> 160 - <h3 className="text-xl font-bold text-gray-800 mb-2"> 161 - Are my bookmarks private? 162 - </h3> 163 - <p className="text-gray-700"> 164 - No, AT Protocol records are public by default. This means 165 - bookmarks you save with kipclip can be discovered by others. 166 - Please don't save anything sensitive or private. Think of kipclip 167 - bookmarks like public social media posts. 168 - </p> 169 - </div> 204 + <div> 205 + <h4 className="text-xl font-bold text-gray-800 mb-2"> 206 + What is a Personal Data Server (PDS)? 207 + </h4> 208 + <p className="text-gray-700"> 209 + A PDS is where your account data lives — your profile, posts, 210 + bookmarks, and everything else. When you create a Bluesky 211 + account, you get a PDS automatically. Your bookmarks are stored 212 + there as structured records, which is why they stay with you 213 + even if kipclip goes away. 214 + </p> 215 + </div> 216 + 217 + <div> 218 + <h4 className="text-xl font-bold text-gray-800 mb-2"> 219 + What is the community bookmark lexicon? 220 + </h4> 221 + <p className="text-gray-700"> 222 + A lexicon is like a data schema in AT Protocol. The{" "} 223 + <a 224 + href="https://github.com/lexicon-community/lexicon/blob/main/community/lexicon/bookmarks/bookmark.json" 225 + target="_blank" 226 + rel="noopener noreferrer" 227 + className="underline hover:text-gray-800" 228 + > 229 + community bookmark lexicon 230 + </a>{" "} 231 + defines the standard format for bookmarks. By using this 232 + standard, kipclip ensures your bookmarks can be read by other 233 + compatible apps. 234 + </p> 235 + </div> 236 + 237 + <div> 238 + <h4 className="text-xl font-bold text-gray-800 mb-2"> 239 + What is the Atmosphere? 240 + </h4> 241 + <p className="text-gray-700"> 242 + The Atmosphere is the ecosystem of apps and services built on AT 243 + Protocol. Bluesky, kipclip, and many other apps are all part of 244 + it. Because they share the same account system and data 245 + standards, you can use one account across all of them and take 246 + your data with you. 247 + </p> 248 + </div> 249 + 250 + <div> 251 + <h4 className="text-xl font-bold text-gray-800 mb-2"> 252 + Can I use a custom domain as my handle? 253 + </h4> 254 + <p className="text-gray-700"> 255 + Yes! If you've set up a custom domain handle with AT Protocol 256 + (like yourname.com), you can use it to sign in to kipclip. Just 257 + enter your custom domain handle instead of a .bsky.social 258 + handle. 259 + </p> 260 + </div> 170 261 171 - <div> 172 - <h3 className="text-xl font-bold text-gray-800 mb-2"> 173 - What is the community bookmark lexicon? 174 - </h3> 175 - <p className="text-gray-700"> 176 - A lexicon is like a data schema in AT Protocol. The{" "} 177 - <a 178 - href="https://github.com/lexicon-community/lexicon/blob/main/community/lexicon/bookmarks/bookmark.json" 179 - target="_blank" 180 - rel="noopener noreferrer" 181 - className="underline hover:text-gray-800" 182 - > 183 - community bookmark lexicon 184 - </a>{" "} 185 - defines the standard format for bookmarks. By using this standard, 186 - kipclip ensures your bookmarks can be read by other compatible 187 - apps. 188 - </p> 189 - </div> 262 + <div> 263 + <h4 className="text-xl font-bold text-gray-800 mb-2"> 264 + Is my data portable? 265 + </h4> 266 + <p className="text-gray-700"> 267 + Absolutely! Because your bookmarks are stored using the 268 + community bookmark lexicon on your PDS, you can access them with 269 + any other AT Protocol app that supports this format. You're not 270 + locked into kipclip — your data is truly yours. 271 + </p> 272 + </div> 190 273 191 - <div> 192 - <h3 className="text-xl font-bold text-gray-800 mb-2"> 193 - Does kipclip support RSS feeds? 194 - </h3> 195 - <p className="text-gray-700"> 196 - Absolutely! Every shared collection has its own RSS feed that you 197 - can subscribe to in your favorite RSS reader. Simply add "/rss" to 198 - the end of any collection URL to access the feed. RSS readers will 199 - also auto-discover the feed when you visit a collection page. 200 - </p> 201 - </div> 274 + <div> 275 + <h4 className="text-xl font-bold text-gray-800 mb-2"> 276 + What happens if I move to a different server? 277 + </h4> 278 + <p className="text-gray-700"> 279 + Your bookmarks move with you! When you migrate your account to a 280 + different PDS (using tools like{" "} 281 + <a 282 + href="https://pdsmoover.com" 283 + target="_blank" 284 + rel="noopener" 285 + className="underline hover:text-gray-800" 286 + > 287 + pdsmoover.com 288 + </a> 289 + ), all your data including bookmarks transfers automatically. 290 + They're tied to your account, not to kipclip or any specific 291 + server. 292 + </p> 293 + </div> 202 294 203 - <div> 204 - <h3 className="text-xl font-bold text-gray-800 mb-2"> 205 - Is kipclip affiliated with Bluesky? 206 - </h3> 207 - <p className="text-gray-700"> 208 - No, kipclip is an independent project built on top of AT Protocol. 209 - It's designed to work with any AT Protocol account, including 210 - Bluesky accounts, but it's not officially affiliated with Bluesky 211 - Social PBC. 212 - </p> 213 - </div> 295 + <div> 296 + <h4 className="text-xl font-bold text-gray-800 mb-2"> 297 + Is kipclip affiliated with Bluesky? 298 + </h4> 299 + <p className="text-gray-700"> 300 + No, kipclip is an independent project built on AT Protocol. It 301 + works with any AT Protocol account, including Bluesky accounts, 302 + but it's not officially affiliated with Bluesky Social PBC. 303 + </p> 304 + </div> 214 305 215 - <div> 216 - <h3 className="text-xl font-bold text-gray-800 mb-2"> 217 - Can I install kipclip as an app on my phone? 218 - </h3> 219 - <p className="text-gray-700"> 220 - Yes! You can add kipclip to your home screen on both Android and 221 - iOS, and it will work like a native app. On Android, use "Add to 222 - Home screen" or "Install app" in Chrome - kipclip will then appear 223 - in your share menu, letting you save bookmarks directly from any 224 - app. On iOS, use "Add to Home Screen" from Safari's share menu, 225 - then use the iOS Shortcut to save bookmarks. See the{" "} 226 - <a href="/tools" className="underline hover:text-gray-800"> 227 - Tools page 228 - </a>{" "} 229 - for detailed installation instructions. 230 - </p> 306 + <div> 307 + <h4 className="text-xl font-bold text-gray-800 mb-2"> 308 + What are account providers? 309 + </h4> 310 + <p className="text-gray-700"> 311 + Account providers host your account and data. Bluesky, Blacksky, 312 + and Eurosky are popular providers — and more are being 313 + developed. You can create an account with any provider and use 314 + it across all Atmosphere apps including kipclip. 315 + </p> 316 + </div> 231 317 </div> 232 318 </section> 233 319
+13 -4
frontend/components/Login.tsx
··· 149 149 htmlFor="handle" 150 150 className="block text-sm font-medium text-gray-700 mb-2" 151 151 > 152 - Your Bluesky or AT Protocol handle 152 + Your username 153 153 </label> 154 154 <actor-typeahead> 155 155 <input ··· 190 190 191 191 <div className="mt-6 text-center text-sm text-gray-500 space-y-3"> 192 192 <p> 193 - kipclip works with your Bluesky account or any AT Protocol handle. 194 - Your bookmarks are saved to your own personal data server, so you 195 - own and control your data.{" "} 193 + Sign in with your Atmosphere username (like alice.bsky.social). 194 + Your bookmarks are yours — stored in your own account, not on our 195 + servers.{" "} 196 196 <a 197 197 href="/faq" 198 198 className="underline hover:text-gray-700" 199 199 > 200 200 Learn more 201 + </a> 202 + </p> 203 + <p> 204 + Don't have an account?{" "} 205 + <a 206 + href="/register" 207 + className="underline hover:text-gray-700" 208 + > 209 + Create one for free 201 210 </a> 202 211 </p> 203 212 </div>
+143
frontend/components/Register.tsx
··· 1 + export function Register() { 2 + return ( 3 + <div className="min-h-screen bg-gray-50"> 4 + <header className="bg-white shadow-sm"> 5 + <div className="max-w-4xl mx-auto px-4 py-4 flex items-center justify-between"> 6 + <a href="/" className="flex items-center gap-2"> 7 + <img 8 + src="https://res.cloudinary.com/dru3aznlk/image/upload/v1760692589/kip-vignette_h2jwct.png" 9 + alt="Kip logo" 10 + className="w-8 h-8" 11 + /> 12 + <h1 13 + className="text-2xl font-bold" 14 + style={{ color: "var(--coral)" }} 15 + > 16 + kipclip 17 + </h1> 18 + </a> 19 + <a 20 + href="/" 21 + className="text-gray-600 hover:text-gray-800 text-sm font-medium" 22 + > 23 + Back to Home 24 + </a> 25 + </div> 26 + </header> 27 + 28 + <main className="max-w-lg mx-auto px-4 py-12"> 29 + <div className="text-center mb-8"> 30 + <h2 className="text-3xl font-bold text-gray-800 mb-3"> 31 + Create your free account 32 + </h2> 33 + <p className="text-gray-600"> 34 + Your account works across kipclip, Bluesky, and a growing number of 35 + apps in the Atmosphere — an open ecosystem where you own your data. 36 + </p> 37 + </div> 38 + 39 + <div className="space-y-4 mb-8"> 40 + <p className="text-sm font-medium text-gray-700 text-center"> 41 + Choose where to create your account: 42 + </p> 43 + 44 + <a 45 + href="https://bsky.app" 46 + target="_blank" 47 + rel="noopener noreferrer" 48 + className="block bg-white rounded-lg shadow-md p-5 hover:shadow-lg transition border-2 border-transparent hover:border-blue-200" 49 + > 50 + <div className="flex items-center gap-4"> 51 + <div 52 + className="w-12 h-12 rounded-full flex items-center justify-center flex-shrink-0" 53 + style={{ backgroundColor: "#1185FF" }} 54 + > 55 + <svg 56 + className="w-6 h-6 text-white" 57 + viewBox="0 0 568 501" 58 + fill="currentColor" 59 + aria-hidden 60 + > 61 + <path d="M123.121 33.6637C188.241 82.5526 258.281 181.681 284 234.873C309.719 181.681 379.759 82.5526 444.879 33.6637C491.866 -1.61183 568 -28.9064 568 57.9464C568 75.2916 558.055 203.659 552.222 224.501C531.947 296.954 458.067 315.434 392.347 304.249C507.222 323.8 536.444 388.56 473.333 453.32C353.473 576.312 301.061 422.461 287.631 383.039C285.169 375.812 284.017 372.431 284 375.306C283.983 372.431 282.831 375.812 280.369 383.039C266.939 422.461 214.527 576.312 94.6667 453.32C31.5556 388.56 60.7778 323.8 175.653 304.249C109.933 315.434 36.0533 296.954 15.7778 224.501C9.94525 203.659 0 75.2916 0 57.9464C0 -28.9064 76.1345 -1.61183 123.121 33.6637Z" /> 62 + </svg> 63 + </div> 64 + <div> 65 + <div className="font-semibold text-gray-800">Bluesky</div> 66 + <div className="text-sm text-gray-500"> 67 + The largest community. Great place to start. 68 + </div> 69 + </div> 70 + </div> 71 + </a> 72 + 73 + <a 74 + href="https://blacksky.community" 75 + target="_blank" 76 + rel="noopener noreferrer" 77 + className="block bg-white rounded-lg shadow-md p-5 hover:shadow-lg transition border-2 border-transparent hover:border-gray-200" 78 + > 79 + <div className="flex items-center gap-4"> 80 + <div className="w-12 h-12 rounded-full bg-gray-800 flex items-center justify-center flex-shrink-0"> 81 + <svg 82 + className="w-6 h-6 text-white" 83 + viewBox="0 0 24 24" 84 + fill="currentColor" 85 + aria-hidden 86 + > 87 + <path d="M12 2L15.09 8.26L22 9.27L17 14.14L18.18 21.02L12 17.77L5.82 21.02L7 14.14L2 9.27L8.91 8.26L12 2Z" /> 88 + </svg> 89 + </div> 90 + <div> 91 + <div className="font-semibold text-gray-800">Blacksky</div> 92 + <div className="text-sm text-gray-500"> 93 + Community-focused, open to everyone. 94 + </div> 95 + </div> 96 + </div> 97 + </a> 98 + 99 + <a 100 + href="https://www.eurosky.tech/register" 101 + target="_blank" 102 + rel="noopener noreferrer" 103 + className="block bg-white rounded-lg shadow-md p-5 hover:shadow-lg transition border-2 border-transparent hover:border-gray-200" 104 + > 105 + <div className="flex items-center gap-4"> 106 + <div 107 + className="w-12 h-12 rounded-full flex items-center justify-center flex-shrink-0" 108 + style={{ backgroundColor: "#003399" }} 109 + > 110 + <svg 111 + className="w-6 h-6 text-yellow-400" 112 + viewBox="0 0 24 24" 113 + fill="currentColor" 114 + aria-hidden 115 + > 116 + <path d="M12 2L15.09 8.26L22 9.27L17 14.14L18.18 21.02L12 17.77L5.82 21.02L7 14.14L2 9.27L8.91 8.26L12 2Z" /> 117 + </svg> 118 + </div> 119 + <div> 120 + <div className="font-semibold text-gray-800">Eurosky</div> 121 + <div className="text-sm text-gray-500"> 122 + European-hosted, run by a Dutch nonprofit. 123 + </div> 124 + </div> 125 + </div> 126 + </a> 127 + </div> 128 + 129 + <div className="text-center space-y-4"> 130 + <p className="text-sm text-gray-500"> 131 + After creating your account, come back here and sign in. 132 + </p> 133 + <a 134 + href="/" 135 + className="inline-block btn-primary px-6 py-3" 136 + > 137 + Sign in 138 + </a> 139 + </div> 140 + </main> 141 + </div> 142 + ); 143 + }
+1 -1
frontend/components/Save.tsx
··· 132 132 className="w-16 h-16 mx-auto mb-4" 133 133 /> 134 134 <h1 className="text-2xl font-bold text-gray-800 mb-2"> 135 - Login Required 135 + Sign in required 136 136 </h1> 137 137 <p className="text-gray-600"> 138 138 Sign in to save bookmarks to kipclip
+3 -3
frontend/index.html
··· 6 6 <title>kipclip - Find it, Kip it</title> 7 7 <meta 8 8 name="description" 9 - content="Save and organize your bookmarks on the AT Protocol. Find it, Kip it." 9 + content="Save and organize your bookmarks. Free, open, and your data stays yours." 10 10 > 11 11 12 12 <!-- Open Graph / Facebook --> ··· 18 18 > 19 19 <meta 20 20 property="og:description" 21 - content="Save and organize your bookmarks on the AT Protocol. Bookmark from anywhere with our bookmarklet, iOS shortcut, or PWA." 21 + content="Save and organize your bookmarks. Free, open, and your data stays yours. Save from anywhere with our bookmarklet, iOS shortcut, or mobile app." 22 22 > 23 23 <meta 24 24 property="og:image" ··· 40 40 > 41 41 <meta 42 42 name="twitter:description" 43 - content="Save and organize your bookmarks on the AT Protocol. Bookmark from anywhere with our bookmarklet, iOS shortcut, or PWA." 43 + content="Save and organize your bookmarks. Free, open, and your data stays yours. Save from anywhere with our bookmarklet, iOS shortcut, or mobile app." 44 44 > 45 45 <meta 46 46 name="twitter:image"
+1 -1
static/manifest.webmanifest
··· 1 1 { 2 2 "name": "kipclip", 3 3 "short_name": "kipclip", 4 - "description": "Bookmark manager for Bluesky and the AT Protocol. Save, organize, and share your bookmarks.", 4 + "description": "Free bookmark manager. Save, organize, and share your bookmarks.", 5 5 "start_url": "/", 6 6 "display": "standalone", 7 7 "background_color": "#ffffff",