1## The Idea
2An 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
3
4## Audience
5This 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
6
7## Venue/Promo/Sign up
8I'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
9
10We 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
11
12## Rewards
13* Labeler that puts things like 1/25(solved 1 of 25)?
14* AT Protocol Badges?
15* Possible leaderboard?
16* Easter egg label for a hidden easter egg
17
18## Challenge Ideas
19- 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`?
20 - Part 2 could be posting a `com.atproto.lexicon.schema` of the schema to verify along with a dns record?
21- Create a TID from a given time and clock id
22- Post a blob that is an HTML web page
23- find a did's prev handle (explore the plc)
24- Hide a tag or something similar in a bsky post
25- Advance - host a custom feed with a pinned post
26- Advance - host an endpoint to resolve various things handle -> did, did -> handle, public key for user, etc
27- Super easy - do atproto app records. Star a repo on tangled, play a game of at://2048, etc. Help spread awareness of atproto apps
28
29## Challenge flow for user
301. New challenge at 00:00 UTC. Account auto posts it and it's unlocked
312. User goes to the advent site, reads what it is
32 1. Will also include some hints like "maybe read this atproto doc link"
333. Creates a record,dns, record, or enter a value to verify they completed the challenge
344. 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
355. user gets a updated label
366. they can share a post that says they completed it
37
38
39## Features
40The minimal features to make sure we get something out there
41* 12 challenges for 1-24 on every other day?
42* Automatic new challenges and verifying so we can enjoy the event
43 * Unlocks at 00:00utc and shows on the site
44 * advent account posts about it
45* Beginner friendly
46* Site to host challenges and backend to verify either manually or via jet stream?
47* labeler
48
49extended features
50* 24-48 challenges 1-2 a day. First is beginner friendly second builds on it and is a bit harder
51* leaderboard of who has the most done and who did it the fastest
52* account post first person daily to do it even if we dont do a leaderboard may be atleast a fun in the middle thing
53
54
55## Technical
56
57* 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
58* JetStream listener- probably rust too
59* Labeler - i've never made one but i think theres a ts template so may just use it
60 * https://gist.github.com/goeo-/58b75fa8661e54278a7b6274ad021160
61
62
63## Sign ups
64### Backend/Jetstream work
65* oppi.li
66* placeholder
67### Challenge creator
68* placeholder
69* placeholder
70### Frontend designer/creator
71* placeholder
72* placeholder
73## Account admin (someone who posts to the account hyping it up)
74* placeholder
75## Mascot
76* psingletary
77## infra/hosting/ops
78* phil