A cross-platform mobile application built with Flutter for tracking investment portfolios, monitoring crypto markets, and analyzing financial assets.
- 📊 Real-time crypto market data
- 💼 Portfolio management
- 📈 Investment analytics
- 🌐 Multi-currency support (USD, EUR, UAH)
- 🌍 Localization (English, Ukrainian)
- 📱 Offline-first architecture
The project follows a feature-first architecture with clean separation of concerns:
lib/
├── modules/ # Modules
│ ├── markets/ # Crypto markets feature
│ ├── portfolio/ # Portfolio management
│ ├── profile/ # User settings
│ └── analytics/ # Analytics and charts
├── core/ # Core infrastructure
│ ├── network/ # Network layer
│ ├── cache/ # Caching system
│ └── repository/ # Base repository
├── services/ # Global services
└── l10n/ # Localization
- Flutter SDK (latest stable)
- Dart SDK (latest stable)
- Android Studio / Xcode
- A CoinMarketCap API key
- Clone the repository:
git clone https://github.com/RusKryzhanovskiy/porfolio.git
cd porfolio
- Create a
.env
file in the project root:
COINMARKETCAP_API_KEY=your_api_key_here
- Install dependencies:
flutter pub get
- Run the app:
flutter run
- State Management: BLoC/Cubit + Provider
- Networking: Dio with custom error handling
- Local Storage: Hive for offline data
- Dependency Injection: Provider
- Localization: Flutter gen-l10n
- Navigation: GoRouter
- Create feature directory structure
- Implement domain models and interfaces
- Create data sources and repositories
- Add presentation layer with Cubit/BLoC
- Connect to global services if needed
- Add new strings to:
lib/l10n/app_en.arb
(English)lib/l10n/app_uk.arb
(Ukrainian)
- Run:
flutter gen-l10n
Run tests with:
flutter test
- Create a feature branch
- Make your changes
- Submit a pull request
- Offline-First: All network responses are cached for offline access
- Feature-First: Each feature is self-contained with its own layers
- Global State: Managed by Provider for app-wide settings
- Error Handling: Using sealed classes for type-safe error handling
This project is licensed under the MIT License - see the LICENSE file for details.