advent of atproto

The Idea#

An advent of code for atproto with daily or every other day challenges for users to learn atprotocol. It will not be exactly code challenges, but more so challenges that can be verified automatically. I would like for it to be something we set up and can just enjoy when it goes live without much intervention

Audience#

This will most likely target somewhat technical users, but mostly beginners. I think we should start with the simplest thing and go with beginners, if we have enough time and people working on the project the challenges could be 2 part. First is no base knowledge of atprotocol is needed, the 2nd one is a bit more challenging

Venue/Promo/Sign up#

I'm thinking a shared Bluesky account that posts about the challenge when they happen and allows people to talk about it on there. We can do a discord, but if we keep it all on bsky I think people would appreciate that

We host a site that users can sign into and they go there to either verify or view the history of their challenges and if they got it

Rewards#

  • Labeler that puts things like 1/25(solved 1 of 25)?
  • AT Protocol Badges?
  • Possible leaderboard?
  • Easter egg label for a hidden easter egg

Challenge Ideas#

  • Write a lexicon and publish to your repo. (ex. i have dev.baileytownsend.health.steps) just have to include the users handle, maybe even have them create dev.baileytownsend.advent?
    • Part 2 could be posting a com.atproto.lexicon.schema of the schema to verify along with a dns record?
  • Create a TID from a given time and clock id
  • Post a blob that is an HTML web page
  • find a did's prev handle (explore the plc)
  • Hide a tag or something similar in a bsky post
  • Advance - host a custom feed with a pinned post
  • Advance - host an endpoint to resolve various things handle -> did, did -> handle, public key for user, etc
  • Super easy - do atproto app records. Star a repo on tangled, play a game of at://2048, etc. Help spread awareness of atproto apps

Challenge flow for user#

  1. New challenge at 00:00 UTC. Account auto posts it and it's unlocked
  2. User goes to the advent site, reads what it is
    1. Will also include some hints like "maybe read this atproto doc link"
  3. Creates a record,dns, record, or enter a value to verify they completed the challenge
  4. If successful we write a app.advent.day.one record to their pds, and a app.advent.verified record to the host account pds that can be used to verified that we did think they completed it
  5. user gets a updated label
  6. they can share a post that says they completed it

Features#

The minimal features to make sure we get something out there

  • 12 challenges for 1-24 on every other day?
  • Automatic new challenges and verifying so we can enjoy the event
    • Unlocks at 00:00utc and shows on the site
    • advent account posts about it
  • Beginner friendly
  • Site to host challenges and backend to verify either manually or via jet stream?
  • labeler

extended features

  • 24-48 challenges 1-2 a day. First is beginner friendly second builds on it and is a bit harder
  • leaderboard of who has the most done and who did it the fastest
  • account post first person daily to do it even if we dont do a leaderboard may be atleast a fun in the middle thing

Technical#

  • main site - We will be using Rust with axum and host it as a static site with a templating engine. My rust status sphere example has a working oauth login for static sites so it should be plug and play
  • JetStream listener- probably rust too
  • Labeler - i've never made one but i think theres a ts template so may just use it

Sign ups#

Backend/Jetstream work#

  • oppi.li
  • placeholder

Challenge creator#

  • placeholder
  • placeholder

Frontend designer/creator#

  • placeholder
  • placeholder

Account admin (someone who posts to the account hyping it up)#

  • placeholder

Mascot#

  • psingletary

infra/hosting/ops#

  • phil