About
CNVRT is a Flutter-based conversion application designed for speed, privacy, and offline resilience. It provides near real-time currency exchange rates with local caching for offline use, along with common unit conversions. The app follows clean architecture principles with a domain/io/ui separation pattern and uses Riverpod for state management.
Key Features
Currency Conversion
- Real-time exchange rates for global currencies
- Offline mode with local caching
- Automatic refresh (configurable)
- Network resilience with fallback to cached data
- Optional inflation adjustment
Unit Conversion
- Temperature (°C, °F, K)
- Distance (km, miles)
- Speed (kph, mph)
- Weight (kg, lbs)
- Area (m², ft²)
- Volume (L, gal)
User Experience
- Multi-language support (English, Spanish, Italian, Korean, Chinese)
- Light, dark, and system theme options
- Adjustable decimal precision (0-8 places)
- Drag-to-reorder currencies
- Country flags display
- Copy-to-clipboard functionality
- Data persistence for preferences
Technology Stack
| Component | Technology | Purpose |
|---|---|---|
| Framework | Flutter & Dart | Cross-platform UI development |
| State Management | Riverpod | Reactive state with code generation |
| Database | Drift | Type-safe SQLite with reactive queries |
| Routing | Fluro | Declarative navigation |
| Networking | Dio | HTTP client for API requests |
| DI | spot_di | Dependency injection with thread safety |
Quick Start
Prerequisites
- Flutter SDK ^3.8.1 (Install Flutter)
- Android Studio with Android SDK (for Android development)
- Xcode (for iOS development, macOS only)
Installation
# Clone the repository
git clone https://github.com/wesleybliss/cnvrt.git
cd cnvrt
# Verify Flutter installation
flutter doctor -v
# Install dependencies
flutter clean
flutter pub get
# Generate code (Riverpod providers, Drift database, etc.)
flutter pub run build_runner build --delete-conflicting-outputs
# Run the app
flutter run
Development Commands
# Clean and reinstall dependencies
flutter clean && flutter pub get
# Generate code (one-time)
flutter pub run build_runner build
# Watch for changes (continuous generation)
flutter pub run build_runner watch
# Run static analysis
flutter analyze
# Run tests
flutter test
# Build release APK
flutter build apk --release
Build Variants
CNVRT supports two build flavors to accommodate different distribution channels:
| Feature | Standard | FOSS |
|---|---|---|
| Firebase Crashlytics | ✅ | ❌ |
| Google Services | ✅ | ❌ |
| Distribution | Play Store, App Store | F-Droid, GitHub |
| Privacy | Remote error reporting | Local logging only |
Learn more about FOSS builds in the FOSS Builds documentation.
Documentation
Architecture
Learn about the technical architecture, code style guidelines, and project structure.
Contributing
Guidelines for contributing to the project, including setup, workflow, and coding standards.
FOSS Builds
Documentation on building FOSS-compliant variants for F-Droid and other open-source stores.
Get Involved
CNVRT is open source and welcomes contributions! Whether you want to report a bug, suggest a feature, or contribute code, we'd love to hear from you.