ATProto users authenticate with their personal data servers rather than a central provider, which makes its OAuth flow more involved. I kept reimplementing it for new projects (Pollen, Friend Chat, Carte Postale…), so I pulled the shared pieces into a starter kit.
What you get
OAuth that works immediately, SQLite-backed session management, routes for login, callback, and logout, and a user context that hands you DIDs and pre-configured API clients. The frontend is vanilla HTML and JS, so swap in whatever framework you want.
The atmosphere reminds me of the early web, when you could just make things and put them on the internet. The starter handles the protocol plumbing so I can begin a new app with working authentication and sessions.