Projects

Nafis — Multi-Asset Price & Portfolio

2026·8 min read

React Native
Expo
TypeScript
NativeWind
SQLite
Google Play

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 read off the صاغة board itself, as a بيع/شراء (buy/sell) pair, so the numbers match the apps people already trust — with no

Nafis — Multi-Asset Price & Portfolio preview

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 read off the صاغة board itself, as a بيع/شراء (buy/sell) pair, 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 — everything valuable, priced for you

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.

Download

Nafis is live on Google Play — v1.33.0, in production at a 100% rollout. Android-first, العربية / English with a right-to-left layout, offline-first, and no backend.

Screens

A tour of Nafis — sixteen screens covering every part of the app. Shot on the "Champagne" light theme in English; the app is Arabic-first, with a full RTL mirror and a "Bullion" dark theme.

Home Markets
Today's local gold price at your صاغة Every metal, currency and crypto in one list
Asset detail Insights
Buy/sell spread, range and trend per asset Scrub the chart and compare against another asset
Portfolio Portfolio performance
Every holding valued live, with true P&L What the vault was worth, month by month
Compass Fear & Greed
One fused buy/hold/wait verdict for gold The market's mood at a glance
Calculator Buying monthly
What is your gold actually worth? What steady monthly buying would have accumulated
Gold gam'eya Zakat
Plan a جمعية in gold Nisab plus 2.5% from your holdings, to the pound
Authenticity Fair price
Spot fake gold with the Archimedes test A price and making-charge (مصنعية) coach
News Tools
Distilled, in a native in-app reader A hub of ~30 focused calculators and trackers

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), read off the live صاغة board. Where a board publishes 24K, that is the figure used — never one scaled off its 21K row.
  • Keyless and failure-tolerant — every quote has a second source behind it (metals gold-api → Swissquote, crypto CoinGecko → Binance, FX open.er-api → a static mirror), and every socket carries a deadline sized from the real link, so one quiet host can't hang a refresh.
  • 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.
  • Honest about freshness — one stamp per source, each on its own clock, and the app says market closed rather than stamping a weekend copy "live".
  • 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 off the live صاغة board 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)
  • Bank rates — the USD board across Egyptian banks, your own banks pinned to the top, sanity-checked against the CBE rate so a stale row can't move the pivot
  • 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
  • A timeline charts what the whole vault was worth, month by month, with best and weakest performers

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
  • Interactive charts — scrub to read the exact day, overlay a compare series (the dollar, silver, bitcoin), see drawdown and a month-by-month grid, and hold a point to arm an alert at that price
  • Alerts that stay awake — target prices, move thresholds, dips, breakouts, Compass flips and Fear & Greed crossings, plus a morning digest and a weekly recap. Every banner states the actual price and can be snoozed for an hour from the banner itself; an opt-in Android foreground service keeps the loop alive on OEMs that kill background work after a swipe-away

On your home screen

  • Three widgets — gold price, portfolio value (today + since you bought), and a currencies board — plus launcher shortcuts straight into the screens you use most

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, records (each asset's all-time high and low), authenticity check (Archimedes water-displacement karat test), fair price and fair making-charge (مصنعية) coaches, gold gam'eya (جمعية) planner, shabka planner, buying monthly (DCA), the price diary ("was waiting right?"), break-even, allocation, gold↔silver ratio, cheapest gold form, street-dollar and dollar-gap trackers, purchasing power, goals, a time machine ("what if I'd bought…") and a year in review
  • One search field over prices, tools, your vault and the news

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

Backup

  • A single file carrying the vault, settings, goals and both quote logs — restored inside one transaction and validated field by field, so a bad file can never half-write your data

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, each with a second source behind it, and every request carries a deadline. USD is the single conversion pivot, and the payload is pinned to one interbank domain so a network race can't decide which dollar the percentages are measured against. Local retail metal prices come from the صاغة board where one is published and from a per-market premium model where one isn't. 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; every persisted figure is tagged with the currency it was recorded in, so moving your home currency can't silently re-read it. The portfolio is SQLite (source of truth), mirrored into a Zustand store. Alerts run one evaluation pass driven from three places — foreground refresh, a 15-minute background task, and an opt-in foreground service — and exit through a single delivery path that owns the channels and the ledger.

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)
Metals gold-api.com → Swissquote feed · the صاغة board for local retail
FX open.er-api.com → currency-api mirror · Yahoo Finance for history
Crypto CoinGecko → Binance
News Bing News (query-scoped) + curated RSS — all keyless
Notifications expo-notifications + expo-background-task + a custom Android foreground service
Widgets react-native-android-widget — gold, portfolio, currencies
Animation react-native-reanimated 4 + worklets · SVG via react-native-svg · FlashList 2
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 — and every one of them has a fallback behind it.
  • 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. Every stored figure carries the currency it was recorded in.
  • Analytics carry no financial data. Structural events only — never amounts, holdings, or vault contents.

More projects

  • Freeby — Invoicing & Time Tracking2026 · Next.js
  • Masareef — Personal Spending Tracker2026 · React Native
  • SilkroadBot — .NET 8 Silkroad Online Bot2026 · C#
All projects