Skip to content

parents-in-tech/musicguru

Repository files navigation

MusicGuru - Gamified Music Learning App

A Flutter app for learning musical instruments with gamification elements. Start your musical journey with interactive piano lessons and progress tracking!

Features

🎹 Piano Learning

  • Interactive piano keyboard
  • Step-by-step lessons from beginner to advanced
  • Real-time feedback and progress tracking
  • Sound integration for authentic learning experience

🎮 Gamification Elements

  • Points and level system
  • Achievement badges
  • Daily streak tracking
  • Progress visualization

🎵 Multi-Instrument Support

  • Piano (fully implemented)
  • Guitar (coming soon)
  • Violin (coming soon)
  • Drums (coming soon)
  • Saxophone (coming soon)
  • Flute (coming soon)

📊 Progress Tracking

  • Lesson completion tracking
  • Performance analytics
  • Achievement system
  • Personal progress dashboard

Getting Started

Prerequisites

  • Flutter SDK (>=3.10.0)
  • Dart SDK (>=3.0.0)
  • Android Studio / VS Code
  • Android device or emulator

Installation

  1. Clone the repository:
git clone <repository-url>
cd musicguru
  1. Install dependencies:
flutter pub get
  1. Add sound assets:

    • Download piano note sound files (C4.mp3, D4.mp3, etc.)
    • Place them in assets/sounds/ directory
    • See assets/sounds/README.md for details
  2. Add fonts (optional):

    • Download Poppins font family
    • Place font files in fonts/ directory
  3. First time app build:

flutter create .
  1. Run the app:
flutter run

Project Structure

lib/
├── main.dart                 # App entry point
├── models/
│   ├── instrument.dart       # Instrument data models
│   └── lesson.dart          # Lesson and note models
├── providers/
│   └── progress_provider.dart # State management for progress
├── screens/
│   ├── home_screen.dart      # Main dashboard
│   ├── instrument_screen.dart # Instrument selection
│   └── piano_lesson_screen.dart # Piano lesson interface
└── widgets/
    ├── instrument_card.dart   # Instrument selection card
    ├── lesson_card.dart      # Individual lesson card
    ├── piano_keyboard.dart   # Interactive piano widget
    └── progress_header.dart  # Progress display header

Key Dependencies

  • provider: State management
  • shared_preferences: Local data persistence
  • audioplayers: Sound playback
  • flutter_animate: Smooth animations
  • confetti: Celebration effects
  • fl_chart: Progress charts

Customization

Adding New Instruments

  1. Add instrument to InstrumentType enum in models/instrument.dart
  2. Create instrument entry in Instrument.instruments list
  3. Implement lessons in respective model files
  4. Create dedicated lesson screen

Adding New Lessons

  1. Create lesson data in models/lesson.dart
  2. Add to respective instrument's lesson list
  3. Implement lesson logic in lesson screen

Customizing Gamification

  1. Modify point values in lesson models
  2. Update achievement criteria in ProgressProvider
  3. Add new achievement types and tracking

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests if applicable
  5. Submit a pull request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

  • Flutter team for the amazing framework
  • Music education community for inspiration
  • Contributors and testers

Future Enhancements

  • More instruments (guitar, violin, drums, etc.)
  • Advanced lesson types (chords, scales, songs)
  • Social features (leaderboards, challenges)
  • AI-powered feedback
  • Offline mode support
  • Tablet optimization
  • Web platform support

About

A Flutter app for learning musical instruments with gamification elements. Start your musical journey with interactive piano lessons and progress tracking!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors