Open-source React Native (Expo) template for a Pythagorean numerology app: Life Path, full numerology chart, Personal Year forecast, two-person compatibility, and the full meaning library for numbers 1 to 9 plus Master Numbers 11, 22, and 33. Built on the Roxy Numerology API and the official @roxyapi/sdk. One API key, every numerology endpoint, full control over your native UI.
Fork it, set one environment variable, and ship.
- Life Path calculator from a birth date, the single most important number in numerology, with Master Number and Karmic Debt flags.
- Full numerology chart in one call: Life Path, Expression, Soul Urge, Personality, and Birth Day numbers plus the current Personal Year.
- Personal Year forecast with theme, cycle, opportunities, challenges, and advice for the year ahead.
- Compatibility between two people, scored across Life Path, Expression, and Soul Urge with strengths, challenges, and relationship advice.
- Number meanings for 1 to 9 and Master Numbers 11, 22, 33, with keywords, strengths, challenges, career, relationships, and spiritual path.
- Master Number and Karmic Debt detection returned by the API, never collapsed client side.
- Dark mode with a teal theme that follows the device setting.
| Technology | Purpose |
|---|---|
| Expo SDK 54 | React Native runtime and build tooling |
| Expo Router | File-based navigation with bottom tabs |
| @roxyapi/sdk | Fully typed RoxyAPI client. One key, every domain. |
| NativeWind v4 | Tailwind CSS for React Native |
| Roxy Numerology API | Pythagorean numerology, charts, compatibility, and meanings |
git clone https://github.com/RoxyAPI/numerology-starter-app.git
cd numerology-starter-app
npm installGet instant access at roxyapi.com/pricing. One key unlocks every numerology endpoint. Add it to .env:
EXPO_PUBLIC_ROXYAPI_KEY=your-api-key-here
Bundled key caveat. A mobile app has no server, so any
EXPO_PUBLIC_*value is compiled into the build and can be read off a device. For production, use a key restricted to your bundle id in the dashboard, or route calls through a thin backend proxy that holds the real key. Never ship an unrestricted key.
npm start # dev server, then press i, a, or w
npm run ios # iOS simulator (macOS only)
npm run android # Android emulator
npm run web # webThe SDK is the only data layer. There is no generated schema file to keep in sync: @roxyapi/sdk ships its own types from the same OpenAPI spec the API serves, so a response flows straight into a screen with no glue code. Numerology takes a name and date of birth only, so there is no geocoding step.
// src/api/client.ts
import { createRoxy } from '@roxyapi/sdk';
const key = process.env.EXPO_PUBLIC_ROXYAPI_KEY ?? '';
export const roxy = createRoxy(key);
export const hasApiKey = (): boolean => Boolean(key);Every screen imports from src/api. The data layer wraps each roxy.numerology.* call and unwraps the SDK { data, error } result into either the response or one thrown error the screen can catch:
// src/api/numerology.ts
export const numerologyApi = {
getLifePath: async (body) => unwrap(await roxy.numerology.calculateLifePath({ body }), 'Failed to calculate Life Path number'),
// ...
};// app/(tabs)/index.tsx
const data = await numerologyApi.getLifePath({ year: 1990, month: 7, day: 15 });
// data.number, data.type, data.meaning.titleThe highest-demand numerology endpoints, in the order you are most likely to ship them. Every method name and field below comes from the OpenAPI spec.
import { createRoxy } from '@roxyapi/sdk';
const roxy = createRoxy(process.env.EXPO_PUBLIC_ROXYAPI_KEY!);
// 1. Life Path. The number-one numerology keyword, every calculator page starts here.
const { data: lp } = await roxy.numerology.calculateLifePath({ body: { year: 1990, month: 7, day: 15 } });
// lp.number, lp.type ("single" | "master"), lp.meaning.title
// 2. Full numerology chart. One shot for all core numbers plus the Personal Year.
const { data: chart } = await roxy.numerology.generateNumerologyChart({
body: { fullName: 'Jane Smith', year: 1990, month: 7, day: 15 },
});
// chart.coreNumbers.lifePath.number, chart.coreNumbers.expression.number, chart.coreNumbers.soulUrge.number
// 3. Personal Year. Annual forecast, drives the January traffic spike.
const { data: pyear } = await roxy.numerology.calculatePersonalYear({ body: { month: 7, day: 15, year: 2026 } });
// pyear.personalYear, pyear.theme, pyear.forecast
// 4. Compatibility. Two-person scoring across Life Path, Expression, and Soul Urge.
const { data: compat } = await roxy.numerology.calculateNumCompatibility({
body: { person1: { fullName: 'Jane Smith', year: 1990, month: 7, day: 15 }, person2: { fullName: 'John Doe', year: 1992, month: 3, day: 22 } },
});
// compat.overallScore, compat.rating
// 5. Number meanings. Cache once for 1 to 9 plus Master Numbers 11, 22, 33.
const { data: meaning } = await roxy.numerology.getNumberMeaning({ path: { number: '11' } });
// meaning.number, meaning.meaning.title, meaning.meaning.descriptionThis template uses 7 of the numerology endpoints. Browse the rest in the API reference.
app/ # Expo Router screens
├── _layout.tsx # Root Stack
└── (tabs)/
├── _layout.tsx # Bottom tabs
├── index.tsx # Life Path calculator
├── chart.tsx # Full numerology chart
├── personal-year.tsx # Personal Year forecast
├── compatibility.tsx # Two-person compatibility
└── meanings.tsx # Number meanings explorer
src/
├── api/
│ ├── client.ts # The one Roxy SDK client + hasApiKey guard
│ ├── numerology.ts # Wraps roxy.numerology.*, unwraps { data, error }
│ ├── types.ts # SDK response types under app-friendly names
│ └── index.ts # Barrel export
├── components/
│ ├── NumberDetailModal.tsx # Full meaning sheet for a tapped number
│ └── RoxyBranding.tsx
├── constants/colors.ts # appColors for React Native props
└── hooks/useUserId.ts # Stable device id in AsyncStorage
- Add a feature. Pick a numerology method, add a wrapper in
src/api/numerology.ts, call it from a screen. The SDK types regenerate from the spec, so new endpoints flow through with no manual typing. The API also ships Personality, Birth Day, Maturity, Karmic Lessons, Karmic Debt, Personal Day, and Personal Month. - Change the theme. This app uses Tailwind colors through NativeWind. Swap
teal-600in the screenclassNamestrings for any Tailwind color, and updateappColors.primaryinsrc/constants/colors.tsfor the React Native props. - Save profiles. Use AsyncStorage to keep a calculated chart on device. RoxyAPI stores no birth data, so memory is your layer to own.
- Breadth. Numerology plus Western astrology, Vedic astrology, tarot, biorhythm, I Ching, crystals, dreams, and angel numbers under one key.
- Type-safe. The SDK types come from one OpenAPI pipeline, so response shapes cannot drift from what the API returns.
- Eight languages. Pass
query: { lang }on the numerology endpoints for interpretations in English, Hindi, Turkish, Spanish, German, Portuguese, French, or Russian. - Remote MCP. Connect AI agents to every numerology endpoint at
roxyapi.com/mcp/numerology, no local setup.
MIT





