CNVRT App Icon

CNVRT

A fast, privacy-friendly converter for currencies and common units with full offline support

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.

View Architecture →

Contributing

Guidelines for contributing to the project, including setup, workflow, and coding standards.

View Guide →

FOSS Builds

Documentation on building FOSS-compliant variants for F-Droid and other open-source stores.

View FOSS Docs →

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.