A Flutter application featuring timeline events UI, Pokemon browsing, and chat functionality with modern UI/UX design.
- Modern Design: Card-based layout with timeline visualization
- Search & Filter: Real-time search with debouncing
- Infinite Scroll: Automatic pagination with smooth loading
- Scroll to Top: Quick navigation with floating action button
- Cached Images: Fast image loading with caching
- Real-time Messaging: Instant message display
- Bot Simulation: Automated responses with typing indicator
- Flutter SDK: Version 3.32.1 or higher
- Dart SDK: Version 3.8.1 or higher
- IDE: VS Code, Android Studio, or IntelliJ IDEA
- Device/Emulator: iOS Simulator, Android Emulator, or physical device
-
Clone the repository
git clone <repository-url> cd caremixer
-
Install dependencies
flutter pub get
-
Verify Flutter installation
flutter doctor
Ensure all required components are installed.
Run on connected device/emulator:
flutter runRun on specific device:
# List available devices
flutter devices
# Run on specific device
flutter run -d <device-id>Run in release mode:
flutter run --releaseVS Code:
- Open the project in VS Code
- Press
F5or click "Run > Start Debugging" - Select your target device from the status bar
Android Studio:
- Open the project in Android Studio
- Select your target device from the device dropdown
- Click the "Run" button or press
Shift + F10
cd ios
pod install
cd ..
flutter runNo additional setup required. Just run:
flutter run- flutter_riverpod (^2.6.1) - State management
- dio (^5.7.0) - HTTP client for API calls
- retrofit (^4.4.1) - Type-safe REST client
- cached_network_image (^3.4.1) - Image caching
- intl (^0.20.2) - Date formatting
- connectivity_plus (^6.1.0) - Network connectivity monitoring
- go_router (^16.0.0) - Screen routing
lib/
├── data/ # Data layer
│ ├── models/ # Data models
│ │ ├── pokemon.dart
│ │ └── timeline_event.dart
│ └── repositories/ # Data repositories
│ └── pokemon_repository.dart
├── domain/ # Business logic layer
│ └── usecases/ # Use cases
├── ui/ # Presentation layer
│ ├── chat/ # Chat feature
│ │ ├── models/
│ │ ├── providers/
│ │ └── widgets/
│ ├── core/ # Shared UI components
│ │ ├── constants/ # App-wide constants
│ │ │ └── app_colors.dart
│ │ └── ui/ # Reusable widgets
│ ├── home/ # Home screen with navigation
│ ├── pokemon_list/ # Pokemon feature
│ │ ├── providers/
│ │ ├── utils/
│ │ └── widgets/
│ └── timeline_list/ # Timeline feature
│ └── widgets/
├── utils/ # Utility functions
└── main.dart # App entry point
This project uses Flutter Riverpod for state management.
-
Compile-time Safety
- Catches errors at compile time, not runtime
- Type-safe provider access
- No
BuildContextrequired for most operations
-
Performance
- Fine-grained reactivity - only rebuilds affected widgets
- Automatic disposal of unused providers
- Efficient state updates
-
Developer Experience
- Clear separation of concerns
- Easy to understand and maintain
- Immutable State: All state classes use immutable properties
- Single Responsibility: Each provider has one clear purpose
- Separation of Concerns: Data, UI, and business logic are separated
- Provider Composition: Providers can depend on other providers
- Automatic Disposal: Providers are automatically disposed when not needed
- Error Handling: Proper error states in all providers
flutter build apk --releaseflutter build ios --releaseThe app uses the PokeAPI (https://pokeapi.co/) for Pokemon data:
- Endpoint:
https://pokeapi.co/api/v2/pokemon - Pagination: 20 items per page
Logesh Sharma