Introduction 🎉
atproto.dart is a comprehensive SDK for building AT Protocol and Bluesky applications in Dart and Flutter. Whether you're creating a social media client, content management tool, or decentralized application, our packages handle the complexity so you can focus on your app's unique features.
Why Choose atproto.dart?
- 🚀 Production Ready: Battle-tested packages with comprehensive test coverage and null safety
- ⚡️ Developer Focused: Intuitive APIs that feel natural to Dart and Flutter developers
- 🔧 Complete Toolkit: Everything from high-level Bluesky APIs to low-level AT Protocol primitives
- 📚 Well Documented: Extensive documentation with real-world examples and best practices
- 🎯 Type Safe: Full TypeScript-style type safety with compile-time error checking
Quick Start: Post to Bluesky in 5 Minutes ⏱️
Let's build a simple Bluesky posting app to see how straightforward atproto.dart makes AT Protocol development.
Install the Bluesky Package
dart pub add bluesky
Create Your First Bluesky Post
import 'package:bluesky/bluesky.dart' as bsky;
Future<void> main() async {
// Authenticate with your Bluesky account
final session = await bsky.createSession(
identifier: 'your-handle.bsky.social', // Your Bluesky handle
password: 'your-app-password', // Generate in Settings > App Passwords
);
// Create a Bluesky client
final bluesky = bsky.Bluesky.fromSession(session.data);
// Post to your timeline
await bluesky.feed.post(
text: 'Hello from my Dart app! 🎯',
);
print('Posted successfully!');
}
Run Your App
dart run post_to_bluesky.dart
That's it! You've just created a working Bluesky client in under 20 lines of code. The same simplicity extends to building feeds, managing follows, handling media uploads, and every other AT Protocol feature.
You can see a list of available packages in atproto.dart in the Packages/Tools section.
Key Features ✨
🎯 Dart-Native Design
Built specifically for Dart and Flutter developers with familiar patterns and conventions.
- 100% Null Safety: Catch errors at compile time, not runtime
- Type-Safe APIs: IntelliSense and autocomplete for every method and property
- Flutter Integration: Works seamlessly with your existing Flutter projects
🔧 Complete AT Protocol Toolkit
Everything you need to build on the AT Protocol, from high-level social features to low-level primitives.
- Social APIs: Posts, follows, likes, reposts, and direct messages
- Identity Management: Handle resolution, DID operations, and profile management
- Content Handling: Media uploads, rich text formatting, and content moderation
- Protocol Primitives: AT URIs, NSIDs, XRPC, and multiformat support
🏗️ Extensible Architecture
Designed to support any AT Protocol service, not just Bluesky.
- Modular Packages: Use only what you need for your specific use case
- Service Agnostic: Core AT Protocol support works with any compliant service
- Custom Lexicons: Easy integration of new AT Protocol schemas and endpoints
📦 Essential Protocol Packages
- at_uri: AT URI parsing and manipulation
- nsid: Namespaced identifier handling
- xrpc: HTTP-based RPC protocol implementation
- multiformats: Content addressing and cryptographic hashing
Design Principles 🎨
Minimal Learning Curve
Complex AT Protocol concepts like XRPC, DIDs, and content addressing are abstracted away. You work with familiar Dart patterns while we handle the protocol complexity behind the scenes.
Consistent Standards
All packages follow the same naming conventions, error handling patterns, and API design principles. Learn one package, and you'll feel at home with all the others.
Intuitive APIs
Method names and class structures mirror the concepts you already know from social media and web development. No need to learn AT Protocol jargon to be productive.
Documentation First
Every feature includes comprehensive documentation with real-world examples. We believe great documentation is as important as great code.
Stay Informed 😇
Something Missing? 👀
If you find issues with the documentation or have suggestions on how to improve the documentation or the project in general, please file an issue for us, or send a post mentioning the @shinyakato.dev Bluesky account.
Talk to us first!