Skip to content

Repository files navigation

๐Ÿ‡น๐Ÿ‡ฟ TanzRate Pro โ€” FXetcher v4

Real-time Tanzania Shilling Forex Tracker ยท Complete Ground-Up Rewrite

Live exchange rates ยท BoT official data ยท Price alert notifications ยท 5-tab modular UI ยท Precious metals ยท Forex calculator ยท Light & dark themes


โš ๏ธ v4.0.0 is a full architectural rewrite. Package name, launcher icon, app structure, and all source files have changed. See the Migration Notice section before upgrading.


๐Ÿ“ฆ What Changed vs v2.3.0

Change v2.3.0 v4.0.0
๐Ÿ“ฆ Package name com.willykez.tanzsx com.willykez.fxetcher
๐Ÿท๏ธ App name TanzRate Pro Fxetcher
๐ŸŽจ Launcher icon Adaptive XML (mipmap set) Custom adaptive icon with new foreground + PNG in mipmap-xhdpi
๐Ÿ—๏ธ Architecture Single monolithic TanzaniaForexApp.java Modular multi-file: FXetcherApp + HomeScreen + Screens + CalcScreen + UiKit + Tokens
๐Ÿ—‚๏ธ Source layout com.willykez.tanzsx.* com.willykez.fxetcher.*
๐Ÿ“ฑ Widget RateWidget.java (AppWidgetProvider) Removed โ€” no home-screen widget in v4
๐ŸŽจ Theme engine Theme inner class Tokens.java โ€” Material3-mirrored design token system
๐Ÿ“ UI construction Mix of XML + Java Fully code-driven via UiKit.java (no XML activities)
๐Ÿ”ข Currencies 14 25 (see full list below)
๐Ÿงฎ Calculator None CalcScreen โ€” full forex keypad + history
โญ Watchlist Pinned conversions strip Long-press any tile โ†’ Watchlist card in Markets tab
๐Ÿ”” Notifications 3 channels (alerts / updates / widget) 2 channels: price_alerts (HIGH) ยท rate_updates (LOW)
๐ŸŒ€ Loading state Pulsing skeleton cards ShimmerFrameLayout via com.facebook.shimmer:shimmer:0.5.0
๐Ÿ”„ Pull-to-refresh Manual refresh button SwipeRefreshLayout (tri-color: gold, blue, green)
๐Ÿ“Š targetSdkVersion 35 36

โœจ What's New in v4.0.0

Feature Detail
๐Ÿ—๏ธ Full Modular Architecture App split across FXetcherApp, HomeScreen, Screens (Convert / Markets / Settings), CalcScreen, UiKit, Tokens, CurrencyMeta, AlertNotificationManager
๐ŸŽจ Design Token System Tokens.java โ€” every colour, spacing, radius, and typography constant in one file; two themes (dark default, light) swapped via Tokens.apply(isDark)
๐Ÿ–Œ๏ธ UiKit Component Library UiKit.java โ€” reusable card(), tv(), divider(), topPill(), sectionHeader(), rippleOver(), scaleAnim(), snack(), and more โ€” all programmatic, zero XML activities
๐Ÿ’ฑ 25-Currency Coverage Expanded from 14 โ†’ 25: USD EUR GBP JPY CNY INR AED ZAR KES TZS UGX RWF + precious metals XAU/XAG + CAD CHF SGD MYR SAR QAR BRL MXN NGN EGP ETB
๐ŸŒ Africa Tab Dedicated East/Central African currency section on the Home screen (KES, UGX, RWF, ZAR, AED, NGN, EGP, ETB)
๐Ÿ’ฐ Precious Metals Extended Gold & Silver shown per troy ounce, gram, and kilogram with tap-to-drill metal bottom sheet
๐Ÿงฎ Forex Calculator (CalcScreen) Dedicated calculator tab โ€” numeric keypad, currency chip selector, swap direction, live rate card, last-20-calculations history with clear
โญ Watchlist (Markets Tab) Long-press any major currency tile to pin it; persistent across sessions via SharedPreferences
๐Ÿ”” Price Alert System Set above/below thresholds per currency; alerts fire as HIGH-priority notifications with colour-coded icons
๐Ÿฆ BoT Official Rates (Home) Live buy/sell table scraped from bot.go.tz using Jsoup; cached, pull-to-refresh, timestamped
๐ŸŒ€ Shimmer Loading Skeleton ShimmerFrameLayout placeholder rows shown while first fetch completes
๐Ÿ”„ Pull-to-Refresh SwipeRefreshLayout on Home refreshes both live rates and BoT table simultaneously
โšก Quick Convert Bottom Sheet Tap any top-bar pill (USD ยท EUR ยท XAU) to open an inline converter without leaving the current screen
๐Ÿฅ‡ Metal Detail Bottom Sheet Tap the Gold pill or any metals row for a full oz/gram/kg breakdown with accent-coloured card
โฑ๏ธ Auto-Refresh Toggle in top bar; configurable 1โ€“60 min interval; ScheduledExecutorService with ConcurrentHashMap for thread-safe rate storage
๐ŸŒ— Dark / Light Theme Full dual-theme support; preference persisted; all colours from Tokens โ€” no hardcoded values in UI code
๐Ÿ“‹ Calculator History Last 20 forex calculations stored as JSON in SharedPreferences; clearable
๐Ÿ“Ž Copy to Clipboard Tap copy icon on converter result or calculator result
๐Ÿ“ก Dual Data Sources Primary: ExchangeRate-API (forex) + MetalPriceAPI (metals); secondary: Bank of Tanzania live scrape

๐Ÿ—‚๏ธ File Structure

TanzRate-Pro/
โ””โ”€โ”€ app/src/main/java/com/willykez/fxetcher/
    โ”œโ”€โ”€ FXetcherApp.java            # Root Activity โ€” top bar, nav bar, tab switching, fetch orchestration
    โ”œโ”€โ”€ HomeScreen.java             # Home tab โ€” shimmer, live rates grid, BoT table, metals, pull-to-refresh
    โ”œโ”€โ”€ Screens.java                # ConvertScreen ยท MarketsScreen ยท SettingsScreen (all in one file)
    โ”œโ”€โ”€ CalcScreen.java             # Forex Calculator tab โ€” keypad, currency chips, history
    โ”œโ”€โ”€ AlertNotificationManager.java # Notification channels, rate-update + price-alert builders
    โ”œโ”€โ”€ CurrencyMeta.java           # Single source of truth: 25 currency codes, names, symbols, flags
    โ”œโ”€โ”€ Tokens.java                 # Design token system: colours, spacing, typography (dark + light)
    โ”œโ”€โ”€ UiKit.java                  # Programmatic UI component library (card, tv, pill, anim, etc.)
    โ”œโ”€โ”€ FileUtil.java               # File I/O helpers
    โ”œโ”€โ”€ SketchwareUtil.java         # Utility helpers
    โ”œโ”€โ”€ MainActivity.java           # Thin launcher โ†’ delegates to FXetcherApp
    โ””โ”€โ”€ willykez.java               # Application subclass (app-level init)
โ””โ”€โ”€ app/src/main/res/
    โ”œโ”€โ”€ drawable/
    โ”‚   โ”œโ”€โ”€ ic_launcher.xml             # Adaptive icon definition
    โ”‚   โ”œโ”€โ”€ ic_launcher_foreground.xml  # Vector foreground layer
    โ”‚   โ””โ”€โ”€ ic_launcher_background.xml  # Vector background layer
    โ”œโ”€โ”€ mipmap-xhdpi/
    โ”‚   โ””โ”€โ”€ ic_launcher.png             # Raster launcher icon (xhdpi)
    โ”œโ”€โ”€ layout/
    โ”‚   โ”œโ”€โ”€ main.xml                    # Root FrameLayout for activity
    โ”‚   โ””โ”€โ”€ shimmer_item.xml            # Shimmer placeholder row layout
    โ””โ”€โ”€ values/
        โ”œโ”€โ”€ strings.xml                 # App name: "Fxetcher"
        โ”œโ”€โ”€ colors.xml
        โ””โ”€โ”€ styles.xml

๐Ÿš€ Features

๐Ÿ  Home Tab

  • Pull-to-refresh (SwipeRefreshLayout) for both live rates + BoT data
  • Shimmer loading skeleton on first launch
  • Live rate rows with animated โ–ฒ/โ–ผ change indicators (colour flash)
  • East Africa section โ€” regional currencies at a glance
  • Precious Metals card โ€” Gold & Silver per oz, gram, kg
  • Bank of Tanzania official rates โ€” scraped live, cached, timestamped

๐Ÿ’ฑ Convert Tab

  • Live real-time calculation as you type
  • 25 currencies, both directions, inverse rate
  • One-tap swap with rotation animation
  • Quick-amount chips (10 ยท 50 ยท 100 ยท 500 ยท 1K ยท 5K ยท 10K ยท 50K)
  • Conversion history (last 20), clearable
  • Copy result to clipboard

๐Ÿ“Š Markets Tab

  • Watchlist โ€” long-press any tile to pin/unpin; persisted
  • Major currencies grid โ€” flag tiles, live rate, trend arrow
  • Africa card โ€” EAC + West/North Africa rates
  • Precious metals extended card
  • Price Alert system โ€” set above/below targets; fires HIGH-priority notification

๐Ÿงฎ Calc Tab

  • Forex-specific numeric keypad
  • Currency chip selector (scrollable)
  • Swap direction (to/from TZS)
  • Live exchange rate reference card
  • Last 20 calculations stored in SharedPreferences; clearable

โš™๏ธ Settings Tab

  • Auto-refresh toggle + interval picker (1 โ€“ 60 min)
  • Dark / Light theme toggle
  • Notification preferences
  • Data source info (API keys + BoT)
  • Clear cached rates

โš™๏ธ Setup

Requirements

  • Android Studio or Sketchware Pro
  • minSdkVersion 21 (Android 5.0 Lollipop)
  • targetSdkVersion 36
  • Java source compatibility

Dependencies

implementation 'androidx.appcompat:appcompat:1.7.1'
implementation 'com.google.android.material:material:1.12.0'
implementation 'com.facebook.shimmer:shimmer:0.5.0'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
implementation 'org.jsoup:jsoup:1.17.2'       // BoT live scraping

AndroidManifest permissions

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>

๐Ÿ”‘ API Keys

โš ๏ธ Move these to BuildConfig or a secrets manager before any public release.

Service Endpoint Used for Free tier
ExchangeRate-API v6.exchangerate-api.com/v6/.../latest/USD 25-currency forex rates 1,500 req/month
MetalPriceAPI api.metalpriceapi.com/v1/latest Gold (XAU) & Silver (XAG) 100 req/month
Bank of Tanzania bot.go.tz/ExchangeRate/excRates Official buy/sell TZS rates Open web scrape

๐Ÿ”„ Migration Notice โ€” v2.3.0 โ†’ v4.0.0

Step Action
1 Uninstall the old com.willykez.tanzsx build before installing v4 โ€” package name changed, they will not conflict but will coexist as separate apps
2 No RateWidget in v4 โ€” remove the old widget from your home screen before upgrading
3 SharedPreferences from v2.x are under a different package and will not carry over automatically
4 Update your build.gradle applicationId to com.willykez.fxetcher
5 Remove any references to com.willykez.tanzsx package in manifests or deep-link URIs

๐Ÿ“‹ Changelog

v4.0.0 โ€” FXetcher ยท Complete Rewrite (current)

  • BREAKING Package renamed: com.willykez.tanzsx โ†’ com.willykez.fxetcher
  • BREAKING App name changed: TanzRate Pro โ†’ Fxetcher
  • BREAKING Launcher icon replaced with new adaptive icon + PNG asset
  • BREAKING Home screen widget (RateWidget) removed
  • NEW Fully modular architecture: 12 source files vs 1 monolith
  • NEW Tokens.java design token system (Material3-mirrored naming)
  • NEW UiKit.java programmatic component library
  • NEW CalcScreen โ€” dedicated forex calculator tab with history
  • NEW 25-currency support (was 14); added CAD, CHF, SGD, MYR, SAR, QAR, BRL, MXN, NGN, EGP, ETB
  • NEW Africa regional currency card (Home + Markets)
  • NEW Watchlist โ€” long-press to pin any currency; persisted
  • NEW Shimmer loading skeleton via facebook/shimmer
  • NEW SwipeRefreshLayout pull-to-refresh on Home
  • NEW Quick-convert bottom sheet from top bar pills
  • NEW Metal detail bottom sheet (oz / gram / kg)
  • NEW targetSdkVersion bumped to 36
  • CHANGE Notification channels reduced from 3 to 2 (widget channel removed with widget)

v2.3.0 โ€” Smart, Themed & Widget-Ready

  • Adaptive light/dark theme engine
  • Home screen widget (RateWidget.java)
  • Rich price-alert notifications
  • Smart "For You" dashboard card
  • Drag-reorder customisable layout
  • Skeleton loading animation

v2.2.0 โ€” BoT Scraping & Notifications

  • Live BoT rates via Jsoup
  • AlertNotificationManager with channel setup

v2.1.0 โ€” Converter History & Quick Amounts

  • Conversion history, quick-amount chips, clipboard

v2.0.0 โ€” Complete Redesign

  • Bottom navigation, top bar pills, live converter

v1.0.0 โ€” Initial Release

  • Single-activity forex tracker, 14 currencies

๐Ÿ”’ Privacy

  • โœ… No personal data collected
  • โœ… No account required
  • โœ… No analytics or tracking SDKs
  • โœ… All data stored locally (SharedPreferences)
  • โœ… HTTPS for all API calls
  • โœ… No ads ยท No subscriptions ยท Free

๐Ÿ“„ License

MIT License โ€” Copyright (c) 2026 Willykez

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software to use, copy, modify, merge, publish, distribute and/or sell
copies, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND.

๐Ÿ“ฌ Contact

Developer: Willykez
Email: willykez01@gmail.com
Package: com.willykez.fxetcher
GitHub: @Willykez


Made with โค๏ธ in Tanzania ๐Ÿ‡น๐Ÿ‡ฟ ยท If this helped you, please โญ the repo!

About

Live forex rates, currency converter & real-time exchange for Tanzanian Shilling Full Description Tanzania Forex Pro - Your Complete Currency Exchange Companion Stay ahead with real-time foreign exchange rates for Tanzanian Shilling (TZS) against major world

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages