Atmosphere Account #
Atmosphere Account is an open-source account, app-directory, host-registry, and login interoperability service for the AT Protocol ecosystem. It provides the shared "Login with Atmosphere" account picker without becoming an OAuth token broker or taking control away from a user's account host.
- Live site: atmosphereaccount.com
- Login picker: login.atmosphereaccount.com
- GitHub: jobiwanken0bi/atmosphere-account
- Tangled: joebasser.com/atmosphere-account
The project is actively developed and runs in production. Login with Atmosphere v0.1 is the current compatibility contract; host lexicons that are explicitly marked draft may still change before publication.
What is in this repository? #
- A Fresh/Deno public website and hosted account picker.
- A signed account-selection handoff with server-side verification helpers.
- An Atmosphere app directory, reviews, profiles, and shared-record tooling.
- A host directory with relay-based PDS inventory and conformance badges.
- A Railway appview, Jetstream indexer, and scheduled PDS inventory importer.
- Mock-host, conformance, OAuth, plain HTML, Fresh, and Next.js examples.
- A typed internationalization framework with locale negotiation and RTL-ready document metadata.
See Architecture for system boundaries and the repository map. The security boundary is especially important: this service does not store app OAuth tokens, recovery material, private keys, or PDS backups.
Quick start #
Prerequisites #
- Deno 2.8.3.
- Node/npm only for the Chromium browser installation used by the login E2E.
git clone https://github.com/jobiwanken0bi/atmosphere-account.git
cd atmosphere-account
deno install
cp .env.example .env
deno task dev:local
The local task uses file:./local.db. Seed representative local records with:
deno task dev:seed
Do not commit .env, local.db, _fresh/, or node_modules/; they are all
ignored.
Checks #
Run the same core checks used by CI:
deno task check
deno task test
deno task host:conformance:smoke
deno task build
The genuine browser flow additionally needs Chromium once:
npx playwright@1.61.1 install chromium
deno task e2e:login
deno task check includes repository community-file, local Markdown-link, and
i18n registry validation. deno task i18n:check runs the focused locale tests.
Common tasks #
| Task | Purpose |
|---|---|
deno task dev:local |
Start local development with a file-backed DB |
deno task dev:seed |
Add representative local records |
deno task build |
Build the Fresh production bundle |
deno task test |
Run the complete unit/integration test suite |
deno task e2e:login |
Exercise picker → signed verification → OAuth start |
deno task host:conformance:smoke |
Validate the bundled mock PDS |
deno task pds:index -- --dry-run |
Preview the relay PDS inventory |
deno task smoke:production |
Smoke the public shell and picker assets |
deno task db:migrate:postgres |
Apply the Railway Postgres schema |
Operational and migration commands are documented in Infrastructure; they are not required for ordinary UI, documentation, SDK, or i18n contributions.
Internationalization #
English is currently the only shipped locale, but the catalog contract is designed for independent translation contributions:
- BCP 47 locale tags and text direction are registered in
i18n/locales.ts. i18n/messages/en.tsxdefines the complete typed catalog shape while allowing translated string values.- Locale negotiation honors an explicit cookie and
Accept-Language. - Rendered documents emit
Content-Language; multi-locale builds also emit the cache variance required to prevent cross-language responses.
Read Internationalization before adding a locale or new user-facing copy.
Documentation #
- Architecture
- Login with Atmosphere v0.1
- Integration examples
- Host dashboard
- Host lexicon draft
- Internationalization
- Infrastructure
- Database recovery
- Platform roadmap
Contributing #
Contributions are welcome through either forge. GitHub is the canonical issue,
security, and CI surface; Tangled is a first-class source mirror and accepts
issues, forks, and pull requests. Maintainers mirror accepted changes so both
main branches stay identical.
Start with CONTRIBUTING.md, and follow the Code of Conduct. General help belongs in the public support channels described in SUPPORT.md; suspected vulnerabilities must follow SECURITY.md.
License #
MIT © Joseph Basser. Contributions are accepted under the same license.