Features
Dashboard and Watchlist
The application centers around a personalized dashboard that greets users by time of day and displays an overview of market activity. The main dashboard includes a gold fixing chart showing the official NBP gold price per gram in PLN over the last ten days, with a percentage change indicator and an area chart visualization. Users maintain a custom watchlist of currencies they care about. Each watchlist card shows the current PLN mid-rate, a small sparkline of recent trends, and quick links to the history page for deeper analysis. Currencies can be added or removed from the watchlist through a searchable modal that filters by name or code across all available NBP Table A currencies.
Historical Data and Analytics
The history page offers two analysis modes. In trend mode, users select a date range and optionally a currency (or gold) to fetch historical data. The results are presented as an interactive area chart and a data table with date, value, and NBP table number where applicable. The table supports expanding to view all rows and includes keyboard-friendly navigation for accessibility. In single-day mode, users retrieve the exact official rate for a specific date, useful for invoice verification or audit compliance. Data can be exported to CSV for use in spreadsheets and reporting. The history API enforces a maximum range of 93 days for exchange rates and uses appropriate date bounds for gold (from 2013) and currencies (from 2002).
User Account and Settings
Authentication is handled by Laravel Fortify with support for registration, login, email verification, and optional two-factor authentication. The profile settings page allows users to update their name, nickname, email, and avatar. Password changes require the current password and are rate-limited. A danger zone section enables account deletion with password confirmation. The app supports light and dark themes with persistence across sessions. Locale switching (English and Polish) is available and stored per user. Breadcrumb navigation and a responsive sidebar layout help users move between the dashboard, watchlist, history, and settings.
Data Source and Synchronization
All rate and gold data comes from the official NBP API. The application syncs currency definitions and caches exchange rates and gold prices via scheduled Artisan commands. Daily sync runs at 06:00 and caching at 06:15, with overlap prevention and single-server execution for deployment safety. The NBP service normalizes API responses into typed data objects and handles retries and timeouts for resilience.