A comprehensive practice journal for musicians built with Flutter, featuring:
- Cross-platform UI using flutter_platform_widgets for seamless Material/Cupertino design adaptation
- Practice Session Tracking with timer, exercise logging, and progress analytics
- Customizable Metronome with presets and BPM history
- Exercise Library with categorization and favorites
- Progress Analytics with charts and statistics
- Weather Integration for practice environment tracking
- Mood & Wellness Metrics for holistic practice insights
This app follows Clean Architecture principles with:
- Domain Layer: Business logic and entities
- Data Layer: Repositories and data sources
- Presentation Layer: BLoC state management with platform-adaptive UI
- Seamless adaptation between Material Design (Android) and Cupertino (iOS)
- Platform-specific navigation patterns and interactions
- Consistent functionality across all platforms
- Start/pause/resume practice sessions
- Add exercises with BPM and duration tracking
- Rate exercises and add notes
- Weather data integration for environmental context
- Daily and weekly practice time charts
- Category-based practice breakdown
- BPM progression tracking
- Exercise popularity analytics
- Customizable BPM with visual and audio feedback
- Save and load presets
- Time signature support
- BPM history tracking
- Flutter SDK (>=3.0.0)
- Dart SDK (>=3.0.0)
- Clone the repository
- Install dependencies:
flutter pub get
- Generate dependency injection code:
flutter pub run build_runner build --delete-conflicting-outputs
- Configure Supabase environment variables in your deployment environment
- Run the app:
flutter run
Set these environment variables for Supabase integration:
SUPABASE_URL: Your Supabase project URLSUPABASE_ANON_KEY: Your Supabase anonymous key
flutter_bloc: State managementget_it&injectable: Dependency injectionflutter_platform_widgets: Cross-platform UI components
flex_color_scheme: Advanced theminggoogle_fonts: Typographyfl_chart: Data visualizationlottie: Animations
supabase_flutter: Backend as a servicehive: Local storageshared_preferences: Settings storage
just_audio: Metronome audioweather: Weather API integrationgeolocator: Location services
lib/
├── app/ # App configuration and routing
├── core/ # Core utilities and DI
├── features/ # Feature modules
│ ├── auth/ # Authentication
│ ├── dashboard/ # Main dashboard
│ ├── exercise_library/ # Exercise management
│ ├── metronome/ # Metronome functionality
│ ├── practice_session/ # Practice tracking
│ ├── progress/ # Analytics and charts
│ └── settings/ # App settings
└── main.dart # App entry point
Each feature follows Clean Architecture:
feature/
├── domain/
│ ├── entities/
│ ├── repositories/
│ └── usecases/
├── data/
│ ├── datasources/
│ ├── models/
│ └── repositories/
└── presentation/
├── bloc/
├── pages/
└── widgets/
- Follow the existing architecture patterns
- Use BLoC for state management
- Implement platform-adaptive UI with flutter_platform_widgets
- Write tests for business logic
- Follow Dart/Flutter style guidelines
This project is licensed under the MIT License.