Chicago ATProto Meetup Activities#
Quick hands-on activities to get started with the AT Protocol and Bluesky API.
Setup (5 minutes)#
- Create a Bluesky account at https://bsky.app
- Generate an app password: Settings → App Passwords → Add
- Install Bun (if needed):
curl -fsSL https://bun.sh/install | bash - Clone this repo and install dependencies:
git clone <this-repo> cd atproto-meetup bun install - Create
.envfile with your credentials:BSKY_USERNAME=your-handle.bsky.social BSKY_PASSWORD=xxxx-xxxx-xxxx-xxxx
Activities#
Activity 1a: Hello World (5 minutes)#
bun activities/01a-hello-world.js
Posts a simple message to Bluesky.
Activity 1b: Emoji Art Generator (10 minutes)#
bun activities/01b-emoji-art.js
Creates a random emoji art grid and posts it.
Activity 2: Rich Text with Links & Hashtags (10 minutes)#
bun activities/02-rich-text.js
Demonstrates auto-detection of links and hashtags in posts.
Activity 3: Real-time Firehose with Jetstream (15 minutes)#
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)#
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)#
bun activities/04-profile-updater.js
Updates your profile description with a timestamp.
Starter Template#
Use starter-template.js to build your own ideas:
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
#ATProtoChicagoto 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