# Chicago ATProto Meetup Activities Quick hands-on activities to get started with the AT Protocol and Bluesky API. ## Setup (5 minutes) 1. **Create a Bluesky account** at https://bsky.app 2. **Generate an app password**: Settings → App Passwords → Add 3. **Install Bun** (if needed): `curl -fsSL https://bun.sh/install | bash` 4. **Clone this repo** and install dependencies: ```bash git clone cd atproto-meetup bun install ``` 5. **Create `.env` file** with your credentials: ``` BSKY_USERNAME=your-handle.bsky.social BSKY_PASSWORD=xxxx-xxxx-xxxx-xxxx ``` ## Activities ### Activity 1a: Hello World (5 minutes) ```bash bun activities/01a-hello-world.js ``` Posts a simple message to Bluesky. ### Activity 1b: Emoji Art Generator (10 minutes) ```bash bun activities/01b-emoji-art.js ``` Creates a random emoji art grid and posts it. ### Activity 2: Rich Text with Links & Hashtags (10 minutes) ```bash bun activities/02-rich-text.js ``` Demonstrates auto-detection of links and hashtags in posts. ### Activity 3: Real-time Firehose with Jetstream (15 minutes) ```bash bun activities/03-feed-generator.js ``` Connect to Bluesky's Jetstream service to see real-time posts with #ATProtoChicago. Uses simple JSON instead of complex binary formats! ### Activity 4: Local Post Filter (15 minutes) ```bash bun activities/05-post-filter.js ``` Build a local feed algorithm that filters your timeline for Chicago/ATProto posts. ### Activity 5: Profile Updater (10 minutes) ```bash bun activities/04-profile-updater.js ``` Updates your profile description with a timestamp. ## Starter Template Use `starter-template.js` to build your own ideas: ```bash bun starter-template.js ``` ## Tips - All scripts use Bun's built-in TypeScript support - The AT Protocol API docs: https://atproto.com - View your posts at: https://bsky.app/profile/YOUR-HANDLE - Use `#ATProtoChicago` to find other meetup participants! ## Common Issues - **"Invalid identifier or password"**: Make sure you're using an app password, not your main password - **Rate limits**: The API has rate limits, wait a minute if you hit them - **Module not found**: Run the scripts from the repo root directory - **WebSocket errors**: The firehose can be flaky, just restart if it disconnects ## What's Next? - Build a full feed generator: https://github.com/bluesky-social/feed-generator - Explore the AT Protocol specs: https://atproto.com/specs - Join the Bluesky developer community: https://github.com/bluesky-social/atproto/discussions