Nafis (نفيس, "precious") puts every valuable you care about in one place — the daily gold price at your local صاغة, silver, platinum and palladium, live currency rates, and crypto — then lets you track what you actually own and what it's worth today. Local metal prices are computed the way the market really works — a بيع/شراء (buy/sell) spread over a live-calibrated "صاغة dollar" — so the numbers match the apps people already trust, with no backend and no API keys. Everything works offline; your holdings live on your device.
Nafis (نفيس) is Arabic for precious. The goal: the price you'd actually pay at the صاغة — not just international spot — for everything valuable you hold, with your portfolio, zakat, and a full toolbox in one calm, Arabic-first app.
Coming soon
Nafis is in Google Play closed testing — a public production release is on the way. Android-first, العربية / English with a right-to-left layout, offline-first, and no backend.
Screens
A tour of Nafis — Arabic-first, in both the "Bullion" dark and "Champagne" light themes. Sixteen screens, covering every feature.
| Home | Markets |
|---|---|
![]() |
![]() |
| Asset detail | Insights |
![]() |
![]() |
| Portfolio | Allocation |
![]() |
![]() |
| Compass | Fear & Greed |
![]() |
![]() |
| Calculator | Converter |
![]() |
![]() |
| Gold gam'eya | Zakat |
![]() |
![]() |
| Authenticity | Fair price |
![]() |
![]() |
| News | Settings |
![]() |
![]() |
Why Nafis
Most price apps quote international spot and stop there — but nobody buys gold at spot. Nafis models the price you'd actually pay at the صاغة, tracks what you own against it, and does it all with no backend and no keys.
- Local prices, market-accurate — each karat shows بيع (buy) and شراء (sell), priced off a live-calibrated دولار الصاغة, landing within ~1 EGP of the real صاغة price.
- Self-calibrating, keyless — the local premium auto-corrects from the actual صاغة figure parsed out of the Arabic news feed. No backend, no key, never breaks.
- Offline-first, instant — a live rates payload is cached in MMKV so the UI paints instantly on cold start; a failed fetch never blanks the screen.
- Polished in light & dark — a "Bullion" dark and "Champagne" light identity, warm-tinted, following the system by default, with full RTL and no floats anywhere.
Features
Local prices
- Gold (24/22/21/18K), silver (999/925/800), platinum and palladium — per gram and per ounce, each karat with a بيع/شراء spread over a live-calibrated صاغة dollar and the الفجوة السعرية on view
- Local gold coins — الجنيه الذهب (8g 21K), half, quarter, and ounce coin
- Crypto and every major currency vs your home currency, all in your local money (USD is the anchor)
- Browse any country — view another market's prices in its own currency and premium, and its localized news, while your home stays put
Portfolio
- Log metals (any metal + purity + weight + مصنعية) and crypto (quantity); one total value and P&L across everything
- مصنعية modeled — the portfolio shows realistic resale value (شراء − مصنعية) and true P&L, not just melt value
- Each piece can carry an heirloom photo (camera or gallery, stored on-device), and selling a piece is a first-class flow
Signals
- Nafis Compass — one fused buy / hold / wait verdict for gold, blending the price's own range, the dollar gap, Fear & Greed, and seasonality into a single honest read, with a "why" breakdown. Indicators, not financial advice
- Signal alerts — optional nudges when the market mood shifts: Fear & Greed crossing a band, the Compass flipping, the street-dollar gap widening, or a seasonal window opening — plus a morning digest and a weekly recap
Toolbox
- A gold-dial hub of ~30 focused tools: zakat (nisab + 2.5% from your holdings), currency converter, "what's my gold worth?" calculator, Fear & Greed, gold seasons, authenticity check (Archimedes water-displacement karat test), fair price and fair making-charge (مصنعية) coaches, gold gam'eya (جمعية) planner, shabka planner, break-even, allocation, gold↔silver ratio, cheapest gold form, street-dollar and dollar-gap trackers, purchasing power, and a time machine ("what if I'd bought…")
- Per-asset charts, buy-signal and alerts
News
- Per-country, per-language headlines (gold, currencies, central bank, crypto, economy) with the right central-bank name per country
- A clean native in-app reader with an on-device extractive summary (الخلاصة), and offline cache — never a WebView
How it's built
Offline-first by design: a live rates payload is cached in MMKV so the UI paints instantly on cold start, then refetches in the background — a failed fetch never blanks the screen. All prices come from free, keyless sources (metals from gold-api.com, FX from open.er-api.com, crypto from CoinGecko), with USD as the single conversion pivot. Local retail prices layer a per-market premium (the "صاغة dollar") and a bid/ask spread on top of international spot, and that premium self-calibrates from the actual صاغة figure parsed out of the Arabic news feed — so accuracy tracks the real market with nothing to host. One asset catalog resolves every asset code (metal purity, coin, crypto, currency) to a price, change, name, and tint, so the UI stays generic. Money is integer minor units, weight integer milligrams, crypto quantity integer 1e-8, and purity basis points — never a float. The portfolio is SQLite (source of truth); a schema migration back-fills older gold-only rows into the multi-asset model.
Tech stack
| Layer | Choice |
|---|---|
| Framework | Expo SDK 57 (managed) + Expo Router (typed routes) |
| Runtime | React Native 0.86 / React 19, React Compiler enabled |
| Language | TypeScript, strict mode |
| UI | NativeWind 4 (Tailwind) + a dual light/dark palette (usePalette()) |
| Client state | Zustand, persisted to MMKV |
| Local data | expo-sqlite — portfolio source of truth, offline-first |
| Server data | TanStack Query (offline-first) |
| Data sources | gold-api.com · open.er-api.com · CoinGecko · Bing News + curated RSS (all keyless) |
| Notifications | expo-notifications + expo-background-task (local, no backend) |
| Animation | react-native-reanimated · SVG via react-native-svg |
| Icons | lucide-react-native |
| Analytics | PostHog (privacy-safe — no amounts, holdings, or vault contents) |
Non-negotiables
- Offline-first. A cached rates payload paints the UI instantly; a failed fetch never blanks the screen, and the app is fully usable with no connection.
- Keyless by design. Every data source is a free public API — no secrets, no server. The local premium self-calibrates from the news feed.
- Money and weight are integers. Money in minor units, gold weight in milligrams, crypto quantity at 1e-8, purity in basis points — never floats, end to end.
- Analytics carry no financial data. Structural events only — never amounts, holdings, or vault contents.

















