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 talking to PDSes.
  • Jetstream — Simplified firehose for ATProto events. Powers the Explore page (because it queries the same network!)

Inspiration

These projects showed what's possible on ATProto and helped shape how LinkRing works:

  • Linkat — The first (?) link-in-bio on ATProto. Proved the concept works.
  • Leaflet — Long-form publishing on ATProto. Beautiful execution of storing content on your PDS. Even if it's funky blocks format.
  • Frontpage — Link aggregator, like if Hacker News ran on ATProto. Cool use of custom lexicons.
  • Smoke Signal — Events and RSVPs on ATProto. Another great example of non-social-media uses for the protocol.

Learning Resources

If you want to build your own ATProto app, these helped me:

Thanks to everyone who built these tools. Standing on the shoulders of giants, etc.