This is a RoxyAPI starter app. A tarot reading app built with React Native, Expo SDK 57, and TypeScript. Ships with the full 78 card Rider Waite deck, daily readings, multi card spreads, and yes or no divination, all powered by the RoxyAPI Tarot API through the official @roxyapi/sdk.
- Get an API key at https://roxyapi.com/pricing
- Create
.envin the project root with:EXPO_PUBLIC_ROXYAPI_KEY=your_api_key_here
- Install with
npm install - Run with
npm start, thennpm run ios,npm run android, ornpm run web - Test with
npm test, typecheck withnpm run typecheck
- The only data layer is
@roxyapi/sdk.createRoxy(key)sets the base URL and the auth header, and ships its own types from the OpenAPI spec, so there is no generated schema file to keep in sync. - The key is bundled into the app (mobile has no server). Treat
EXPO_PUBLIC_ROXYAPI_KEYas a public, restricted key locked to your bundle id, or proxy calls through a backend you control. - Live OpenAPI spec: https://roxyapi.com/api/v2/tarot/openapi.json
- Live playground: https://roxyapi.com/api-reference
roxy.tarot.getDailyCardfor a seeded daily card with consistent results per deviceroxy.tarot.castThreeCardfor past, present, future readingsroxy.tarot.castCelticCrossfor the 10 card Celtic Crossroxy.tarot.castYesNofor yes or no divination with strengthroxy.tarot.castLoveSpreadandroxy.tarot.castCareerSpreadfor themed spreadsroxy.tarot.drawCardsfor random single or multi card drawsroxy.tarot.listCardsfor the full 78 card deck with imagesroxy.tarot.getCardfor detailed upright and reversed meanings for a single card
src/api/client.tsis the single Roxy SDK client and thehasApiKeyguard.src/api/tarot.tswraps theroxy.tarot.*methods used by screens and unwraps the SDK{ data, error }result.src/api/types.tsre-exports the SDK response types under app-friendly names.app/(tabs)/holds the tab screens:index.tsx(daily),browse.tsx,draw.tsx,spreads.tsx,yes-no.tsx.
- All RoxyAPI calls go through
src/api/. Do not callfetchor the SDK directly from screens. - Method names and body fields come from the SDK types, never invented. Verify against the OpenAPI spec.
- Daily card seeding uses a stable device id from
AsyncStorageso the daily card stays consistent across sessions.
- TypeScript SDK: https://github.com/RoxyAPI/sdk-typescript (npm:
@roxyapi/sdk) - Python SDK: https://github.com/RoxyAPI/sdk-python (PyPI:
roxy-sdk) - MCP servers: https://roxyapi.com/docs/mcp
- Methodology and accuracy: https://roxyapi.com/methodology
- More starters: https://roxyapi.com/starters
- Pricing: https://roxyapi.com/pricing