···11+# at://advent
22+33+An upcoming Holiday Advent Calendar for atprotocl theme challenges
44+55+[Read the intinal draft plans here!](docs/initial_plans.md)
66+77+# Quick setup
88+99+WIP
1010+1111+## Project break down
1212+1313+- [./web](./web) - A axum web service to host the advent website
1414+- [./listener](./listener) - A JetStream listener
1515+- [./shared](./shared) - Shared code between the 2, dbs, cache, etc
1616+1717+## DB/Cache
1818+1919+_All commands assume you're at the root of the project_
2020+2121+## Setup
2222+2323+1. Make a copy of [.env.template](.env.template) and name it [.env](.env)
2424+2. Install postgres/redis, or can use docker compose with `docker compose -f compose.dev.yml -up`
2525+3. Install sqlx-cli `cargo install sqlx-cli`
2626+4. Run `sqlx migrate run`
2727+2828+## Adding a new migration
2929+3030+1. Create a new one with `sqlx migrate add {migration name}`
3131+2. Go to the file created in [./migrations](./migrations) and write the sql for the migration
···11+## The Idea
22+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
33+44+## Audience
55+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
66+77+## Venue/Promo/Sign up
88+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
99+1010+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
1111+1212+## Rewards
1313+* Labeler that puts things like 1/25(solved 1 of 25)?
1414+* AT Protocol Badges?
1515+* Possible leaderboard?
1616+* Easter egg label for a hidden easter egg
1717+1818+## Challenge Ideas
1919+- 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`?
2020+ - Part 2 could be posting a `com.atproto.lexicon.schema` of the schema to verify along with a dns record?
2121+- Create a TID from a given time and clock id
2222+- Post a blob that is an HTML web page
2323+- find a did's prev handle (explore the plc)
2424+- Hide a tag or something similar in a bsky post
2525+- Advance - host a custom feed with a pinned post
2626+- Advance - host an endpoint to resolve various things handle -> did, did -> handle, public key for user, etc
2727+- Super easy - do atproto app records. Star a repo on tangled, play a game of at://2048, etc. Help spread awareness of atproto apps
2828+2929+## Challenge flow for user
3030+1. New challenge at 00:00 UTC. Account auto posts it and it's unlocked
3131+2. User goes to the advent site, reads what it is
3232+ 1. Will also include some hints like "maybe read this atproto doc link"
3333+3. Creates a record,dns, record, or enter a value to verify they completed the challenge
3434+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
3535+5. user gets a updated label
3636+6. they can share a post that says they completed it
3737+3838+3939+## Features
4040+The minimal features to make sure we get something out there
4141+* 12 challenges for 1-24 on every other day?
4242+* Automatic new challenges and verifying so we can enjoy the event
4343+ * Unlocks at 00:00utc and shows on the site
4444+ * advent account posts about it
4545+* Beginner friendly
4646+* Site to host challenges and backend to verify either manually or via jet stream?
4747+* labeler
4848+4949+extended features
5050+* 24-48 challenges 1-2 a day. First is beginner friendly second builds on it and is a bit harder
5151+* leaderboard of who has the most done and who did it the fastest
5252+* account post first person daily to do it even if we dont do a leaderboard may be atleast a fun in the middle thing
5353+5454+5555+## Technical
5656+5757+* 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
5858+* JetStream listener- probably rust too
5959+* Labeler - i've never made one but i think theres a ts template so may just use it
6060+ * https://gist.github.com/goeo-/58b75fa8661e54278a7b6274ad021160
6161+6262+6363+## Sign ups
6464+### Backend/Jetstream work
6565+* oppi.li
6666+* placeholder
6767+### Challenge creator
6868+* placeholder
6969+* placeholder
7070+### Frontend designer/creator
7171+* placeholder
7272+* placeholder
7373+## Account admin (someone who posts to the account hyping it up)
7474+* placeholder
7575+## Mascot
7676+* psingletary
7777+## infra/hosting/ops
7878+* phil