Skip to main content

Introduction 🎉

  • atproto.dart is:

    • 🧐 The project for developing packages with the goal of making it easy to integrate AT Protocol and Bluesky related things into Dart and Flutter apps. The packages supported by atproto.dart are varied and include packages wrapping the AT Protocol and Bluesky API, as well as the AT Protocol's underlying technology, AT URI and IPFS CID.
  • atproto.dart provides:

    • ⚡️ AT Protocol and Bluesky related technologies for your Dart and Flutter apps
    • 👌 Very easy to use, well documented and well tested packages
    • 😉 Packages compatible with Dart3 and 100% Null Safety
    • ✈️ Type safe API wrappers and support for all major endpoints
    • 🌟 Packages can be easily integrated into Dart and Flutter apps

Fast Track ⏱️

Understand atproto.dart in 5 minutes by playing!

Let's try to post to Bluesky with bluesky package from Dart app. First, install bluesky with the following command.

dart pub add bluesky
dart pub get get

Now you can see bluesky in pubspec.yaml like this.

pubspec.yaml
name: post_to_bluesky
description: A sample application.
version: 1.0.0

environment:
sdk: ^3.0.0

dependencies:
bluesky: ^0.15.0

dev_dependencies:
lints: ^2.0.0
test: ^1.21.0

And the following implementation is all that is needed to simply post text to Bluesky with bluesky.

post_to_bluesky.dart
import 'package:bluesky/bluesky.dart' as bsky;

Future<void> main(List<String> args) async {
final session = await bsky.createSession(
identifier: 'HANDLE_OR_EMAIL', // Like shinyakato.dev
password: 'PASSWORD', // App Password is recommended
);

final bluesky = bsky.Bluesky.fromSession(session.data);

final strongRef = await bluesky.feed.post(
text: 'Hello, Bluesky!',
);
}

Replace the identifier and password passed to the createSession function with your credentials; to post to Bluesky using the API, you will need the credentials of the account you are posting to.

Once you have implemented this far, you can then run the dart run command in the terminal. This will execute the above code and send any text to Bluesky on your behalf.

dart run

OR

dart run ./bin/post_to_bluesky.dart
tip

You can see a list of available packages in atproto.dart in the Packages/Tools section.

Features ✨

atproto.dart is built with high attention to the developer and contributor experience.

  • Built with 💙 and 🎯 Dart:
    • 100% Null Safety with Dart3
    • Type Safe and Readable APIs
    • Can be easily integrated into Flutter
  • Extensible Interface:
    • The AT Protocol is characterized by a very versatile layer, and AT Protocol is not aware of specific services such as Bluesky. atproto.dart also follows this specification, and when developing API wrappers, the Lexicon of com.atproto.* related to AT Protocol is developed as bluesky, and the Lexicon of app.bsky.* related to Bluesky was developed as bluesky. This way, if you were to try to create a service with AT Protocol with a different specification than Bluesky, you could easily create tools, etc. using the bluesky.
  • Provides the AT Protocol related basic technologies:

Design Principles 🎨

  • Little to Learn. The difficulty in using AT Protocol and Bluesky API may be the use of AT Protocol-specific technologies such as XRPC and IPFS-related technologies such as CID, which are not found in other services. The package provided by atproto.dart encapsulates all of those difficulties. This means that developers can integrate AT Protocol and Bluesky into their Dart and Flutter apps with little awareness of these technologies. So, atproto.dart is the best choice for developing AT Protocol and Bluesky-related apps in Dart and Flutter.
  • Standardization. Many of the features of the packages developed in atproto.dart are standardized. For example, bluesky and bluesky, which wrap the AT Protocol and Bluesky APIs, standardize the method name prefixes corresponding to each endpoint according to the characteristics of the operation. With these standards, your development productivity will increase and you will have less to learn.
  • Intuitive Names. The package provided by atproto.dart is developer-friendly anyway, and commonly used names are used from class names to constructors and other methods. This will allow developers using atproto.dart to quickly get a concrete structure in mind from the common names associated with AT Protocol and Bluesky.
  • Well Documented. atproto.dart has extensive documentation. Documentation is often an afterthought in software development, but the stories written about the software are extremely important. So documentation is given equal priority to coding in atproto.dart, and developers who use atproto.dart to develop their systems do not have to spend extra time on it.

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!