···1+# at://advent
2+3+An upcoming Holiday Advent Calendar for atprotocl theme challenges
4+5+[Read the intinal draft plans here!](docs/initial_plans.md)
6+7+# Quick setup
8+9+WIP
10+11+## Project break down
12+13+- [./web](./web) - A axum web service to host the advent website
14+- [./listener](./listener) - A JetStream listener
15+- [./shared](./shared) - Shared code between the 2, dbs, cache, etc
16+17+## DB/Cache
18+19+_All commands assume you're at the root of the project_
20+21+## Setup
22+23+1. Make a copy of [.env.template](.env.template) and name it [.env](.env)
24+2. Install postgres/redis, or can use docker compose with `docker compose -f compose.dev.yml -up`
25+3. Install sqlx-cli `cargo install sqlx-cli`
26+4. Run `sqlx migrate run`
27+28+## Adding a new migration
29+30+1. Create a new one with `sqlx migrate add {migration name}`
31+2. Go to the file created in [./migrations](./migrations) and write the sql for the migration
···1+## The Idea
2+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
3+4+## Audience
5+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
6+7+## Venue/Promo/Sign up
8+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
9+10+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
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
30+1. New challenge at 00:00 UTC. Account auto posts it and it's unlocked
31+2. User goes to the advent site, reads what it is
32+ 1. Will also include some hints like "maybe read this atproto doc link"
33+3. Creates a record,dns, record, or enter a value to verify they completed the challenge
34+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
35+5. user gets a updated label
36+6. they can share a post that says they completed it
37+38+39+## Features
40+The 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+49+extended 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