How annalo2912/quantiphi-fxflow works
FxFlow is a currency-conversion and FX-insights application. Users choose a currency pair and amount to get a live conversion; the dashboard also supports historical-rate charts, saved pairs, conversion history, and multi-currency travel budgeting. The frontend calls a FastAPI backend, whose services use the Frankfurter API and a database-backed cache, with persistent favorites and conversions. The README documents the broader route/service layout; sampled source confirms app wiring, frontend state flow, and currency/rate caching, but not every route implementation.
Main entry points: exchange_rate.py Exchange rates · main.py FastAPI application · Dashboard.jsx FX dashboard · api.js API client
Components 27
Frontend
- Application shell
frontend/src/App.jsx - FX dashboard
frontend/src/pages/Dashboard.jsx - Currency converter
frontend/src/components/ConverterCard.jsx - Conversion query
frontend/src/hooks/useConversion.js - Historical query
frontend/src/hooks/useHistoricalRates.js - Favorites query
frontend/src/hooks/useFavorites.js - API client
frontend/src/services/api.js - Rate chart
frontend/src/components/RateChart.jsx - Favorite pairs
frontend/src/components/Favorites.jsx - Conversion history
frontend/src/components/ConversionHistory.jsx - Travel budget
frontend/src/components/TravelBudget.jsx
REST API
- FastAPI application
backend/app/main.py - Conversion route
backend/app/api/conversion.py - Historical rates route
backend/app/api/rates.py - Favorites route
backend/app/api/favorites.py - History route
backend/app/api/history.py - Travel budget route
backend/app/api/travel.py - Currencies route
backend/app/api/currencies.py
Backend Services
- Conversion logic
backend/app/services/conversion.py - Exchange rates
backend/app/services/exchange_rate.py - Favorites logic
backend/app/services/favorites.py - Budget logic
backend/app/services/travel_budget.py
Data and Integrations
- Application database
backend/app/database/base.py - Persistent models
backend/app/models/conversion_history.py - Rate cache model
backend/app/models/rate_cache.py - Frankfurter API
Other components
- User
Connections 37
- User → Application shell: uses
- Application shell → FX dashboard: renders
- FX dashboard → Currency converter: renders
- FX dashboard → Rate chart: renders
- FX dashboard → Favorite pairs: renders
- FX dashboard → Conversion history: renders
- FX dashboard → Travel budget: renders
- Currency converter → Conversion query: submits conversion
- Currency converter → Favorites query: saves pair
- Rate chart → Historical query: requests history
- Favorite pairs → Favorites query: loads pairs
- Conversion history → API client: loads records
- Travel budget → API client: requests budget
- Conversion query → API client: requests conversion
- Historical query → API client: requests rates
- Favorites query → API client: manages pairs
- API client → FastAPI application: HTTP requests
- FastAPI application → Conversion route: mounts router
- FastAPI application → Historical rates route: mounts router
- FastAPI application → Favorites route: mounts router
- FastAPI application → History route: mounts router
- FastAPI application → Travel budget route: mounts router
- FastAPI application → Currencies route: mounts router
- Conversion route → Conversion logic: delegates conversion
- Conversion route → Exchange rates: gets live rate
- Historical rates route → Exchange rates: gets historical rates
- Currencies route → Exchange rates: gets currencies
- Favorites route → Favorites logic: manages pairs
- History route → Persistent models: reads history
- Travel budget route → Budget logic: calculates budget
- Conversion logic → Persistent models: records conversion
- Favorites logic → Persistent models: persists favorites
- Budget logic → Exchange rates: gets rates
- Exchange rates → Application database: uses session
- Exchange rates → Rate cache model: reads and writes cache
- Conversion logic → Exchange rates: gets live rate
- Exchange rates → Frankfurter API: fetches rates