Single Nuxt 4 + NuxtHub mini-app meant to run inside Nimiq Pay.
Client-only wallet flow:
- Unlock with Nimiq key
- Deterministically create/sign in to AT Protocol account
- Publish posts to Bluesky-compatible PDS
pnpm install
pnpm devThen open the URL in Nimiq Pay's mini-app browser.
NUXT_PUBLIC_ATPROTO_SERVICE(required)
Example:
NUXT_PUBLIC_ATPROTO_SERVICE=https://your-pds.exampleFor wallet-only provisioning, the configured PDS must allow open account creation:
inviteCodeRequiredmust befalsephoneVerificationRequiredmust not betrue
Validate your PDS with com.atproto.server.describeServer:
curl -s "$NUXT_PUBLIC_ATPROTO_SERVICE/xrpc/com.atproto.server.describeServer" | jq '{inviteCodeRequired, phoneVerificationRequired, availableUserDomains}'- Configure
NUXT_PUBLIC_ATPROTO_SERVICEto a PDS that allows wallet-only provisioning. - Run the compatibility guard:
pnpm check:pds- Deploy only after the guard returns success:
pnpm cf:deployCompatibility contract:
inviteCodeRequiredmust befalsephoneVerificationRequiredmust not betrue
As of February 16, 2026, https://bsky.social is not compatible for wallet-only provisioning because it reports phoneVerificationRequired: true.
PDS_CHECK_ERROR Missing NUXT_PUBLIC_ATPROTO_SERVICE...- Set
NUXT_PUBLIC_ATPROTO_SERVICEin env orwrangler.jsoncvars.
- Set
PDS_CHECK_ERROR Invalid NUXT_PUBLIC_ATPROTO_SERVICE URL...- Use a valid
https://...URL.
- Use a valid
PDS_CHECK_ERROR Failed to reach describeServer endpoint...- Confirm the PDS URL is reachable from your deployment environment.
PDS_CHECK_ERROR describeServer returned non-JSON response...- Confirm the target is an AT Protocol PDS endpoint.
PDS_CHECK result=blocked ... inviteCodeRequired=true or phoneVerificationRequired=true- Switch to a PDS that allows open account creation for wallet-only provisioning.
Build + deploy (Workers + D1 + KV + R2):
pnpm cf:deployBindings live in wrangler.jsonc (DB, KV, BLOB).
