Code Monkey home page Code Monkey logo

harmonoid's Introduction

A music app with a beautiful UI to play all your music.

Download APK [v0.0.8]


Animations

Contribute

As of now, the project contains OVER 10K LINES OF CODE.

Recently, it is migrated to use Provider for its state management. At few, places StatefulWidgets are still present.

The project supports sorting of music based on media metadata tags & native playback directly from file explorer etc. The whole user interface strictly follows the material design guidelines.

Checkout project structure to get started.

The plan of project is to bring the best, cross platform music experience for all users.

Features

  • Powerful music collection generation

    • Music automatically gets arranged into albums, artists & tracks.
  • Time synced lyrics

    • Get time synced lyrics for all your saved music.
    • See lyrics of currently playing song directly in your notifications.
  • Play local music

    • Play music saved on your device either from the collection in the app or using file browser.
  • Beautiful user interface

    • Every element on screen beautifully animated & very strictly follows material.io guidelines.
  • Ads free forever

    • No advertisements! No profits associated with the project.
  • Playlists

    • Make own playlists & play your favorite music on the go.
  • Freedom

    • Share music from the app to other devices with a single tap.
  • Personalization

    • Change accent color & theme of the app.
  • Download music

    • A personal dedicated server is required for downloading music. [NOT INCLUDED IN APP]

Loving the project? Consider starring the repository ⭐

Contributors

Developer

Collaborators

Translators

Language Provider
Russian @raitonoberu
Slovenian @mytja
Portuguese @bdlukaa
Hindi @alexmercerind
German @MickLesk
Dutch @kebabinjeneus
Swedish Max Haureus
French @gaetan1903

You can see the app running in your own language by providing me translations.

For that purpose, you can add your changes to this file on the repository. You can translate this, even if you have little to no knowledge of Dart.

Google Play

The app is available on Google Play, your positive rating will be appreciated.

Get it on Google Play

Workings

The majority of the logical & core code of this app is here in the repository.

Acknowledgements

Thanks to following people & organizations for their indirect contribution.

Package Maintainer
provider rrousselGit
assets_audio_player florent37
media_metadata_retriever alexmercerind
flutter_local_notifications MaikuB
permission_handler Baseflow
animations flutter
http flutter
path flutter
path_provider flutter
share flutter
url_launcher flutter

Structure

Glad you're interested in contributing to the project, here is the project structure for guiding you to this codebase.

Labels marked with * have scope for improvement in future.

harmonoid/lib
β”‚
β”‚   main.dart                     [Everyone knows this.]
β”‚
β”œβ”€β”€β”€core                          [Internal application logic.]
β”‚       collection.dart           [For sorting, discovering, handling, updating, refreshing etc. of music.]
β”‚       fileintent.dart           [For dealing with intents to open audio files.]
β”‚       configuration.dart        [For saving application configuration.]* (Can be improved.)
β”‚       discover.dart             [For interacting with server.]
β”‚       download.dart             [For fetching content.]
β”‚       mediatype.dart            [Various media structures used within application.]
β”‚       playback.dart             [For playback using assets_audio_player or dart_vlc.]* (Yet to be done for desktop.)
β”‚
β”œβ”€β”€β”€interface                     [Application user interface.]
β”‚   β”‚
β”‚   β”œβ”€β”€β”€collection                [Widgets & screens related to music collection.]
β”‚   β”‚
β”‚   │───settings                  [Widgets & screens related to application settings.]
β”‚   β”‚
β”‚   └───discover                  [Widgets & screens related to music discovery.]* (Yet to be migrated to Provider.)
β”‚    
β”‚       nowplaying.dart           [Now playing widgets & screen.]
β”‚       harmonoid.dart            [Root Widget of application.]
β”‚       home.dart                 [Child of Harmonoid widget, contains tabs for different screens.]
β”‚       exception.dart            [A minimal MaterialApp to replace Harmonoid in case of any exception.]
β”‚       changenotifiers.dart      [General ChangeNotifiers for state management.]
β”‚
│───utils
β”‚       methods.dart              [General utility methods used across the application.]
β”‚       widgets.dart              [Various Widgets that bring application to life.]
β”‚
└───constants                     [General globalization related classes.]* (Can be improved.)
        language.dart
        strings.dart

License

GNU General Public License v3

harmonoid's People

Contributors

alexmercerind avatar mytja avatar raitonoberu avatar bdlukaa avatar gaetan1903 avatar kebabinjeneus avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.