- Swift 74%
- Go 26%
- Python <1%
- Shell <1%
- Makefile <1%
- 1 more language <1%
Quill #
A native Bluesky client for iPhone, iPhone Duo and iPad (Android to follow).
See AGENTS.md for layout, commands and conventions.
Quick Start #
brew install xcodegen
make test
make ios-generate
open apps/ios/Quill.xcodeproj
Local API Keys #
To 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.
OAuth Deployment #
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.py
DNS 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.