ProjectsNovember 20, 2025

Currency Watch: A Forex Rate Tracking App for Jamaica

image
Currency Watch is a modern mobile application built to provide Jamaicans with reliable, up to date foreign exchange information. It aggregates buy and sell rates for USD, CAD, GBP, and EUR across local banks and cambios, while offering comparison tools, financial calculators, and real time alerts. The goal is to simplify decision making when purchasing or selling currency in Jamaica.
  • Real Time Forex Rates: Aggregates exchange rates from Jamaican banks and licensed cambios. Displays each provider's buy and sell rate for major currencies including USD, CAD, GBP, and EUR.
  • Bank Comparison Engine: Automatically compares all available rates and highlights which institution offers the best value for buying or selling.
  • Provider Directory: Displays detailed profiles for each financial institution including name, location, offered currencies, and rate history.
  • Currency Converter: Converts between JMD and multiple foreign currencies using either mid-market rates or institution-specific rates.
  • Financial Insights: Shows policy rate, inflation data, market trends, and forex-related updates relevant to Jamaican consumers.
  • Notifications & Alerts: Users can set rate alerts (e.g., "Notify me when USD buy rate falls below 150"). Push notifications handled with Firebase Cloud Messaging.
  • Zustand Global State Store: Maintains cached rates, provider data, user preferences, notifications, and local data to reduce API calls and provide a smooth offline-ready experience.
  • Dark Mode Support: Full light/dark theme switching with custom token-based color system.
  • Expo + React Native: Core mobile framework for cross-platform development.
  • Supabase: Primary backend for storing bank data, rate tables, provider profiles, and historical records.
  • Firebase Cloud Functions: Handles scheduled scraping, rate updates, and push notification triggers.
  • Zustand: Lightweight client side state management for caching rates and improving performance.
  • PostHog: Analytics and feature flags for monitoring user interaction and rolling out new features safely.
  • TypeScript: Ensures strong typing and safer, cleaner code across the application.
  • Normalized Rate Tables: Structured database with banks, currencies, rates (bank_id, currency_id, buy, sell, timestamp), and alerts tables. Ensures fast queries, easier indexing, and scalable data.
  • Scheduled Rate Fetching: Cloud functions run at intervals to fetch and validate exchange rates from public bank sources, then push updates to Supabase.
  • Client Side Caching: Zustand stores last-fetched rates, reducing backend load and improving load time on home screen.
One key challenge was ensuring accuracy and freshness of exchange rate data from multiple institutions, each with different update frequencies. Implementing validation layers and scheduled tasks in Firebase Cloud Functions helped resolve inconsistent data. Another challenge was building an efficient comparison engine that works offline and online. Implementing caching with Zustand significantly improved responsiveness and reduced API calls. Managing a theming system inside Expo while ensuring accessibility and contrast compliance was a learning process that helped polish the user experience. Currency Watch is now a comprehensive, reliable tool for Jamaicans who need quick access to currency rates. Users benefit from easier comparison, smarter financial decision-making, and real time alerts. The architecture scales well with new features such as rate history, bank reviews, and expanded financial tools planned for future updates.

Related projects

BiteBeam: Your Personal Nutritional Assistant

BiteBeam: Your Personal Nutritional Assistant

An AI-powered mobile application for instant food recognition and nutritional analysis using React Native, Convex, and OpenAI.
Building Gas Watch, a Community-Driven Gas Price Finder

Building Gas Watch, a Community-Driven Gas Price Finder

Development of a Flutter mobile application that helps users find the best gas prices through real-time community updates and interactive map visualization.