Day 1

Part 1

Welcome to at://advent!

at://advent is an atproto adventure to learn atproto in an interactive and hopefully fun way in the style of advent of code.

The majority of these challenges can be done without writing any code, but using community tooling. But you may find writing code will also be a good exercise to get your feet wet. Some tools that may be helpful are:

  • goat - Swiss army knife of a CLI that allows you to do most if not all atproto actions with.
  • atproto.at - A web browser based atproto explorer (and more). Will allow you to view records, create records, PLC data, download/view a users repo exports, and listen to the jetstream for that user.
  • pdsls - A web browser base atproto explorer (and more). Will allow you to view records, create records, PLC data, download/view repo exports, and listen to firehose or jetstream.
  • boat - Various atporot odds & ends tools. PLC, download/view repos, and more.
  • various sdks - atproto.com has a list of various sdks if you'd like to write the code to solve these challenges.
  • http ref - You can also make calls directly to the PDS via HTTP endpoints. You will find most SDks match the naming conventions of the endpoints listed in the http ref.

We are going to start simple. Everyone knows they have a handle, but did you know you also have a unique id called a did? This is a unique identifier for your identity that never changes. This comes in two flavors for atproto did:plc and did:web. Before you can make calls to the user's PDS you need to know their did as well as the DID doc.

But first the DID. You can find the did from a handle in one of 2 ways. Via an HTTP request to the url ./well-known/atproto-did, this is how the .bsky.social handles work. An example would be jcsalterego.bsky.social/.well-known/atproto-did. Or via a DNS TXT record at _atproto. If your handle is iloveatproto.com, then it would be at _atproto.iloveatproto.com. If it was alice.iloveatproto.com, it would be at _atproto.alice.iloveatproto.com.

To complete the first challenge, please enter your DID below in the input box.