atproto projects as a dhall script
projects.dhall
379 lines 15 kB view raw
1-- URL type definition 2let URL : Type = 3 { scheme : Text 4 , host : Text 5 , port : Optional Natural 6 , path : Optional Text 7 , query : Optional Text 8 , fragment : Optional Text 9 } 10 11let URLDefaults = 12 { port = None Natural 13 , path = None Text 14 , query = None Text 15 , fragment = None Text 16 } 17 18-- Helper function to create URLs with defaults 19let makeURL = 20 \(args : { scheme : Text, host : Text }) -> 21 URLDefaults // args 22 23-- Helper function to create HTTPS URLs 24let https = 25 \(host : Text) -> 26 makeURL { scheme = "https", host = host } 27 28-- Helper function to create HTTP URLs 29let http = 30 \(host : Text) -> 31 makeURL { scheme = "http", host = host } 32 33-- Simple URL type for basic use cases (just validated text) 34let SimpleURL : Type = Text 35 36-- Project categories and languages 37let Category = 38 < App 39 | SDK 40 | Library 41 | Tool 42 | Server 43 | Bot 44 | FeedGenerator 45 | Platform 46 | CLI 47 | GitHubAction 48 | DataExplorer 49 | NetworkDashboard 50 | AccountManagement 51 | FeedUtility 52 | StarterKit 53 > 54 55let Language = 56 < TypeScript 57 | Go 58 | Dart 59 | Python 60 | Swift 61 | Kotlin 62 | Rust 63 | Java 64 | PHP 65 | Ruby 66 | Elixir 67 | Shell 68 | JavaScript 69 | C 70 | CSharp 71 > 72 73-- Project type definition 74let Project : Type = 75 { name : Text 76 , description : Text 77 , category : Category 78 , languages : List Language 79 , repoURL : Optional SimpleURL 80 , appURL : Optional SimpleURL 81 , maintainers : Optional (List Text) 82 } 83 84-- Comprehensive AT Protocol ecosystem data 85let atprotoProjects : List Project = 86 -- Official SDKs and Libraries 87 [ { name = "@atproto/api" 88 , description = "The official TypeScript/JavaScript SDK. Powers the Bluesky app with APIs, session management, full type validation, and RichText library." 89 , category = Category.SDK 90 , languages = [ Language.TypeScript, Language.JavaScript ] 91 , repoURL = Some "https://github.com/bluesky-social/atproto/tree/main/packages/api" 92 , appURL = None SimpleURL 93 , maintainers = Some [ "Bluesky Social PBC" ] 94 } 95 , { name = "indigo" 96 , description = "The official Go implementation used for core backend services like PDS and Relays." 97 , category = Category.SDK 98 , languages = [ Language.Go ] 99 , repoURL = Some "https://github.com/bluesky-social/indigo" 100 , appURL = None SimpleURL 101 , maintainers = Some [ "Bluesky Social PBC" ] 102 } 103 104 -- Community SDKs 105 , { name = "atproto" 106 , description = "A comprehensive, high-quality Python SDK with modular design for client, firehose, codegen, identity, and more. The de facto standard for Python." 107 , category = Category.SDK 108 , languages = [ Language.Python ] 109 , repoURL = Some "https://github.com/MarshalX/atproto" 110 , appURL = Some "https://atproto.blue" 111 , maintainers = Some [ "MarshalX" ] 112 } 113 , { name = "atproto.dart" 114 , description = "A suite of packages for Dart & Flutter development, providing type-safe API wrappers for ATProto and Bluesky, and text utilities." 115 , category = Category.SDK 116 , languages = [ Language.Dart ] 117 , repoURL = Some "https://github.com/myConsciousness/atproto.dart" 118 , appURL = Some "https://atprotodart.com" 119 , maintainers = Some [ "myConsciousness" ] 120 } 121 , { name = "atproto-rs" 122 , description = "A suite of libraries, tools, and daemons for building ATProto services in Rust." 123 , category = Category.SDK 124 , languages = [ Language.Rust ] 125 , repoURL = Some "https://github.com/ngerakines/atproto-rs" 126 , appURL = None SimpleURL 127 , maintainers = Some [ "ngerakines" ] 128 } 129 , { name = "bsky-rs" 130 , description = "An ATProto (Bluesky) API implementation in Rust." 131 , category = Category.SDK 132 , languages = [ Language.Rust ] 133 , repoURL = Some "https://github.com/sizumita/bsky-rs" 134 , appURL = None SimpleURL 135 , maintainers = Some [ "sizumita" ] 136 } 137 , { name = "bsky4j" 138 , description = "A community-maintained client library for ATProtocol and Bluesky in Java." 139 , category = Category.SDK 140 , languages = [ Language.Java ] 141 , repoURL = Some "https://github.com/uakihir0/bsky4j" 142 , appURL = None SimpleURL 143 , maintainers = Some [ "uakihir0" ] 144 } 145 , { name = "Atproto.Net" 146 , description = "A third-party C# library for interacting with the AT Protocol." 147 , category = Category.SDK 148 , languages = [ Language.CSharp ] 149 , repoURL = Some "https://github.com/RoccoDev/Atproto.Net" 150 , appURL = None SimpleURL 151 , maintainers = Some [ "RoccoDev" ] 152 } 153 , { name = "swiftsky" 154 , description = "An unofficial client library for Bluesky/ATProto written in Swift, suitable for iOS/macOS development." 155 , category = Category.SDK 156 , languages = [ Language.Swift ] 157 , repoURL = Some "https://github.com/rmcan/swiftsky" 158 , appURL = None SimpleURL 159 , maintainers = Some [ "rmcan" ] 160 } 161 , { name = "atproto-elixir" 162 , description = "An implementation of the ATProtocol client specification in Elixir." 163 , category = Category.SDK 164 , languages = [ Language.Elixir ] 165 , repoURL = Some "https://github.com/mschae/atproto-elixir" 166 , appURL = None SimpleURL 167 , maintainers = Some [ "mschae" ] 168 } 169 170 -- Applications 171 , { name = "Bluesky" 172 , description = "The official flagship application for the AT Protocol, serving as a social network and proof-of-concept." 173 , category = Category.App 174 , languages = [ Language.TypeScript ] 175 , repoURL = Some "https://github.com/bluesky-social/social-app" 176 , appURL = Some "https://bsky.app" 177 , maintainers = Some [ "Bluesky Social PBC" ] 178 } 179 , { name = "Graysky" 180 , description = "A third-party client for Bluesky, built with React Native." 181 , category = Category.App 182 , languages = [ Language.TypeScript ] 183 , repoURL = Some "https://github.com/mozzius/graysky" 184 , appURL = Some "https://graysky.app/" 185 , maintainers = Some [ "mozzius" ] 186 } 187 , { name = "Tangled" 188 , description = "A git collaboration platform using ATProto for identity and social features, offering an alternative to GitHub." 189 , category = Category.Platform 190 , languages = [ Language.TypeScript ] 191 , repoURL = Some "https://tangled.sh/atproto/tangled" 192 , appURL = Some "https://tangled.sh" 193 , maintainers = None (List Text) 194 } 195 , { name = "Whitewind" 196 , description = "A blog service that allows users to publish Markdown articles using a custom lexicon." 197 , category = Category.Platform 198 , languages = [ Language.TypeScript ] 199 , repoURL = Some "https://github.com/whtwnd/whitewind-blog" 200 , appURL = Some "https://whtwnd.com" 201 , maintainers = None (List Text) 202 } 203 , { name = "Smoke Signal" 204 , description = "A platform for creating, discovering, and RSVPing to events, built with a community lexicon." 205 , category = Category.Platform 206 , languages = [ Language.TypeScript ] 207 , repoURL = Some "https://github.com/SmokeSignal-Events/lexicon" 208 , appURL = Some "https://smokesignal.events" 209 , maintainers = None (List Text) 210 } 211 , { name = "Frontpage" 212 , description = "A link aggregator and discussion platform, similar in concept to Reddit or Hacker News." 213 , category = Category.Platform 214 , languages = [ Language.TypeScript ] 215 , repoURL = Some "https://github.com/likeandscribe/frontpage" 216 , appURL = Some "https://frontpage.fyi" 217 , maintainers = None (List Text) 218 } 219 , { name = "Skylights" 220 , description = "A specialized social app for writing and sharing book reviews." 221 , category = Category.App 222 , languages = [ Language.TypeScript ] 223 , repoURL = Some "https://github.com/Gregoor/skylights" 224 , appURL = Some "https://skylights.my" 225 , maintainers = Some [ "Gregoor" ] 226 } 227 , { name = "Picosky" 228 , description = "An ATProto-native chatting application with its own web client and appview." 229 , category = Category.App 230 , languages = [ Language.TypeScript ] 231 , repoURL = Some "https://github.com/psky-atp" 232 , appURL = Some "https://psky.social" 233 , maintainers = None (List Text) 234 } 235 , { name = "PinkSea" 236 , description = "An 'Oekaki' (drawing) BBS that allows users to create and share art on the AT Protocol." 237 , category = Category.App 238 , languages = [ Language.TypeScript ] 239 , repoURL = Some "https://github.com/shinolabs/PinkSea" 240 , appURL = Some "https://pinksea.art" 241 , maintainers = None (List Text) 242 } 243 , { name = "LinkAT Blue" 244 , description = "A 'link-in-bio' service that allows users to create a personal landing page." 245 , category = Category.Tool 246 , languages = [ Language.TypeScript ] 247 , repoURL = Some "https://github.com/mkizka/linkat" 248 , appURL = Some "https://linkat.blue" 249 , maintainers = Some [ "mkizka" ] 250 } 251 , { name = "recipe.exchange" 252 , description = "An application for sharing and discovering cooking recipes." 253 , category = Category.App 254 , languages = [ Language.TypeScript ] 255 , repoURL = Some "https://recipe.exchange/lexicons" 256 , appURL = Some "https://recipe.exchange" 257 , maintainers = None (List Text) 258 } 259 260 -- Developer Tools and Utilities 261 , { name = "PDSls" 262 , description = "A powerful tool to browse the raw records in any PDS. Allows authenticated users to create/edit records." 263 , category = Category.DataExplorer 264 , languages = [ Language.TypeScript ] 265 , repoURL = None SimpleURL 266 , appURL = Some "https://pdsls.dev" 267 , maintainers = None (List Text) 268 } 269 , { name = "ATProto Browser" 270 , description = "A user-friendly browser for AT URIs, DIDs, handles, and Lexicons, with rich previews for common record types." 271 , category = Category.DataExplorer 272 , languages = [ Language.TypeScript ] 273 , repoURL = None SimpleURL 274 , appURL = Some "https://atproto-browser.vercel.app" 275 , maintainers = None (List Text) 276 } 277 , { name = "atp.tools" 278 , description = "A multi-purpose dashboard to browse repo data, view the live firehose, and check network statistics." 279 , category = Category.NetworkDashboard 280 , languages = [ Language.TypeScript ] 281 , repoURL = None SimpleURL 282 , appURL = Some "https://atp.tools" 283 , maintainers = None (List Text) 284 } 285 , { name = "goat" 286 , description = "A Go-based CLI tool from the indigo repo used to publish custom Lexicon schemas to a PDS." 287 , category = Category.CLI 288 , languages = [ Language.Go ] 289 , repoURL = Some "https://github.com/bluesky-social/indigo/tree/main/cmd/goat" 290 , appURL = None SimpleURL 291 , maintainers = Some [ "Bluesky Social PBC" ] 292 } 293 , { name = "ATFile" 294 , description = "A command-line tool and associated lexicon for uploading and managing arbitrary files in a user's PDS." 295 , category = Category.CLI 296 , languages = [ Language.TypeScript ] 297 , repoURL = Some "https://github.com/electricduck/atfile" 298 , appURL = None SimpleURL 299 , maintainers = Some [ "electricduck" ] 300 } 301 , { name = "Bluesky Post Action" 302 , description = "A GitHub Action that allows workflows to send a post to Bluesky, useful for automated notifications." 303 , category = Category.GitHubAction 304 , languages = [ Language.JavaScript ] 305 , repoURL = Some "https://github.com/marketplace/actions/send-bluesky-post" 306 , appURL = None SimpleURL 307 , maintainers = None (List Text) 308 } 309 , { name = "ATProto Feed Generator" 310 , description = "A starter kit for building and publishing custom algorithmic feeds on the AT Protocol." 311 , category = Category.StarterKit 312 , languages = [ Language.TypeScript ] 313 , repoURL = Some "https://github.com/bluesky-social/feed-generator" 314 , appURL = None SimpleURL 315 , maintainers = Some [ "Bluesky Social PBC" ] 316 } 317 , { name = "cleanfollow" 318 , description = "A web tool to select and unfollow inactive or blocked accounts." 319 , category = Category.AccountManagement 320 , languages = [ Language.TypeScript ] 321 , repoURL = None SimpleURL 322 , appURL = Some "https://cleanfollow-bsky.pages.dev" 323 , maintainers = None (List Text) 324 } 325 , { name = "Blue Mirage" 326 , description = "A tool for copying the follow list of another user on Bluesky." 327 , category = Category.AccountManagement 328 , languages = [ Language.TypeScript ] 329 , repoURL = None SimpleURL 330 , appURL = Some "https://jiftechnify.github.io/blue-mirage/" 331 , maintainers = Some [ "jiftechnify" ] 332 } 333 , { name = "Bluestream" 334 , description = "An RSS/JSON/CSV feed generator for Bluesky user profiles." 335 , category = Category.FeedUtility 336 , languages = [ Language.TypeScript ] 337 , repoURL = None SimpleURL 338 , appURL = Some "https://bluestream.deno.dev" 339 , maintainers = None (List Text) 340 } 341 342 -- Bridge Tools 343 , { name = "SkyBridge" 344 , description = "A bridge that connects the AT Protocol to the Fediverse (Mastodon, Pleroma, etc.)." 345 , category = Category.Tool 346 , languages = [ Language.Go ] 347 , repoURL = Some "https://github.com/rmm5t/skybridge" 348 , appURL = None SimpleURL 349 , maintainers = Some [ "rmm5t" ] 350 } 351 , { name = "looksky" 352 , description = "A tool to search for posts on Bluesky." 353 , category = Category.Tool 354 , languages = [ Language.Rust ] 355 , repoURL = Some "https://github.com/junkato/looksky" 356 , appURL = Some "https://looksky.pages.dev/" 357 , maintainers = Some [ "junkato" ] 358 } 359 , { name = "Skyfeed" 360 , description = "A powerful custom feed builder and client for Bluesky." 361 , category = Category.Platform 362 , languages = [ Language.TypeScript ] 363 , repoURL = Some "https://github.com/RedSolver/skyfeed" 364 , appURL = Some "https://skyfeed.app/" 365 , maintainers = Some [ "RedSolver" ] 366 } 367 368 -- Bot Frameworks 369 , { name = "bsky.bot" 370 , description = "A framework for creating Bluesky bots." 371 , category = Category.Library 372 , languages = [ Language.Python ] 373 , repoURL = Some "https://github.com/quinncasey/bsky.bot" 374 , appURL = None SimpleURL 375 , maintainers = Some [ "quinncasey" ] 376 } 377 ] 378 379in atprotoProjects