A native Bluesky client for iPhone, iPhone Duo and iPad (Android to follow).
See AGENTS.md for layout, commands and conventions.
brew install xcodegen
make test
make ios-generate
open apps/ios/Quill.xcodeprojTo enable GIF search, create apps/ios/Config/Local.xcconfig with
KLIPY_API_KEY = your_key. This optional file is ignored by Git and loaded by
both Debug and Release builds. Never put provider credentials in project.yml.
The production OAuth metadata service is hosted on Railway at
https://quillapp.at. Its client ID is
https://quillapp.at/client-metadata.json, and the native callback is
at.quillapp:/oauth/callback. See the worker guide
for runtime configuration.
Deploy the worker independently of the iOS app:
railway up services/oauth-worker --path-as-root \
--project 90c005fd-c175-4739-8c48-e8bfe061704e \
--environment da2abdc2-64d4-4b99-b663-19783844bd3e \
--service 64137a97-126f-46d1-9f6b-9427b2122c81 \
--ci -m "Describe the worker change"
python3 scripts/verify-oauth-worker.pyDNS is managed through the Marque TUI. The apex CNAME targets
hi2dj4fb.up.railway.app (flattened by Marque), with TTL 300.
_railway-verify holds Railway's ownership-verification TXT record.
The service uses port 8080, /healthz, PUBLIC_URL=https://quillapp.at,
APPLE_TEAM_ID=G39TU2R26A, and APPLE_BUNDLE_ID=tech.stygian.quill.
It is a public native OAuth client; do not configure a shared client signing key.
The deployment smoke check verifies the public worker contract. Complete OAuth acceptance also requires signing in through the app, returning from the browser, and force-quitting/relaunching to verify the securely stored session.