Created With
LinkRing is built with a bunch of great open source tools and inspired by some cool projects in the ATProto ecosystem. Here's the full list.
The Stack
- Bun — JavaScript runtime. Fast, everything is included, and I have never had an issue.
- Hono — Lightweight web framework. Small, fast, works great with Bun.
- Open Props — CSS custom properties for consistent design tokens. It's what I start every site with now, makes it really easy to just have easy access to things like HSL colors.
- PostgreSQL — The database. Was going to use sqlite but wanted to deploy to Fly.io.
- postgres.js — PostgreSQL client for Node/Bun. Simple, fast, not an ORM.
ATProto
- ATProto — The protocol that makes all of this possible.
- @atproto/oauth-client-node — OAuth client for ATProto. Handles all the "DPoP" and "JWT" complexity.
- @atproto/api — API client for reading and writing atmosphere account data.
- Jetstream — Simplified firehose for ATProto events. Powers the Explore page (because it queries the same network!)
Brand & Assets
- Atmosphere Account — community resource for explaining the atmosphere. The "sign in with atmosphere account" badge on the login page comes straight from their developer resources.
- atmologos by cozylittle.house — a CC-BY collection of SVG logomarks for atmosphere apps. Every logo on the "what's the atmosphere?" panel is from here.
Inspiration
These projects showed what's possible with atmosphere accounts and helped shape how LinkRing works:
- Linkat — The first (?) link-in-bio on an atmosphere account. Proved the concept works.
- Leaflet — Long-form publishing on your atmosphere account. Beautiful execution of storing content on your account. Even if it's funky blocks format. Their login flow is the reference for ours.
- Frontpage — Link aggregator, like if Hacker News ran on atmosphere accounts. Cool use of custom data formats.
- Smoke Signal — Events and RSVPs tied to your atmosphere account. Another great example of non-social-media uses for the network.
Learning Resources
If you want to build your own ATProto app, these helped me:
- Beyond the Statusphere: OAuth TLDR — Bailey Townsend's guide to ATProto OAuth.
- ATProto OAuth Spec — The official spec.
- Lexicon Guide — How to design your data schemas.
- awesome-lexicons — Collection of third-party lexicons. Great for seeing what others have built.
- PDSLS — Browse the raw data on any atmosphere account. Invaluable for debugging.
Thanks to everyone who built these tools. Standing on the shoulders of giants, etc.