A modern iOS finance application featuring a currency converter and cryptocurrency price viewer with a beautiful neumorphic design.
- Real-time currency conversion with live exchange rates
- Calculator-style numeric keypad for easy input
- Support for 24+ world currencies
- Animated swap button to quickly reverse conversion
- Searchable currency picker
- Conversion history with quick restore
- Live prices for top 10 cryptocurrencies (BTC, ETH, SOL, XRP, ADA, BNB, DOGE, DOT, AVAX, MATIC)
- Interactive price charts with multiple timeframes (24H, 7D, 30D, 90D, 1Y)
- Touch-to-inspect chart interaction
- 24-hour price change indicators
- Pull-to-refresh and auto-refresh every 5 minutes
- Sorting by price, change percentage, or name
- Neumorphic UI with soft shadows and depth
- Light mode optimized (#E0E5EC background)
- Smooth animations and haptic feedback
- Rounded system fonts throughout
| Currency Converter | Crypto List | Price Chart |
|---|---|---|
| Calculator keypad | Live prices | Interactive chart |
The app follows MVVM + Repository Pattern with clean separation of concerns:
Cryptix/
├── App/ # App entry point & dependency injection
├── Core/
│ ├── Extensions/ # Color+Hex, Double+Formatting
│ ├── Utilities/ # NetworkMonitor, HapticManager
│ └── Errors/ # NetworkError types
├── DesignSystem/
│ ├── Theme/ # ColorPalette, NeumorphicTheme
│ ├── Components/ # Reusable neumorphic components
│ └── Modifiers/ # Shadow modifiers
├── Data/
│ ├── Networking/ # APIClient, APIEndpoint
│ ├── Providers/ # API implementations
│ ├── Repositories/ # Data access with caching
│ └── Cache/ # UserDefaults-based cache
├── Features/
│ ├── CurrencyConverter/ # Models, ViewModels, Views
│ └── CryptoViewer/ # Models, ViewModels, Views
└── Navigation/ # Tab navigation
- SwiftUI with iOS 18+ features
- Swift Charts for price visualization
- @Observable macro for reactive ViewModels
- Async/await for networking
- NWPathMonitor for connectivity status
- Provider: ExchangeRate-API
- Endpoint:
https://api.exchangerate-api.com/v4/latest/{base} - Rate Limit: Free tier, no key required
- Provider: CoinGecko
- Endpoints:
/coins/markets- Current prices/coins/{id}/market_chart- Historical prices
- Rate Limit: Free tier (limited), demo data fallback included
| Data | Duration | Fallback |
|---|---|---|
| Exchange Rates | 1 hour | Stale cache |
| Crypto Prices | 5 minutes | Demo data |
| Price History | 5 minutes | Demo data |
| Conversion History | Permanent | - |
- iOS 18.0+
- Xcode 16.0+
- Swift 5.9+
- Clone the repository:
git clone https://github.com/yourusername/Cryptix.git- Open the project in Xcode:
cd Cryptix
open Cryptix.xcodeproj- Build and run on simulator or device (iPhone recommended)
The neumorphic design system provides consistent styling:
// Colors
ColorPalette.background // #E0E5EC
ColorPalette.shadowDark // #A3B1C6
ColorPalette.shadowLight // #FFFFFF
// Components
NeumorphicButton(title: "Convert", icon: "arrow.triangle.2.circlepath") { }
NeumorphicCard { Text("Content") }
NeumorphicKeypadButton(label: "1") { }
// Modifiers
.neumorphicShadow(isPressed: false)
.simpleInset(cornerRadius: 12)@Environment(\.dependencies) private var dependencies
let viewModel = dependencies.makeCurrencyConverterViewModel()
let repository = dependencies.cryptoRepositoryTo avoid rate limiting, register for a free API key at CoinGecko and add it to the headers in APIEndpoint.swift:
var headers: [String: String] {
return [
"Accept": "application/json",
"x-cg-demo-api-key": "YOUR_API_KEY"
]
}This project is available under the MIT License.
- ExchangeRate-API for currency exchange rates
- CoinGecko for cryptocurrency data
- Neumorphic design inspiration from the soft UI trend