MusicUp is a Flutter-based application designed to help users manage their extensive music collections efficiently. Whether you're a music enthusiast organizing your CDs and vinyls or an artist managing your discography, MusicUp offers a seamless experience for importing, exporting, and maintaining your album data.
- Features
- Screenshots
- Installation
- Packaging for Debian
- Usage
- Testing
- Motivation
- Contributing
- License
- Contact
- Add Albums: Easily add new albums with details such as name, artist, genre, year, medium, and digital availability. Starting from version 1.3.1, you can also fetch song title information from folder structures. This works by pressing the folder button in the Add Album section and selecting a folder. The album name is extracted from the folder name, and MP3 files in the folder must be formatted as '01 - Tracktitle.mp3'. The track titles and track numbers are then automatically fetched from the files in the folder.
- Edit Albums: Modify existing album information to keep your collection up-to-date.
- Import/Export: Support for importing and exporting album data in JSON, CSV, and XML formats.
- Duplicate Prevention: Automatically avoids adding duplicate albums during import.
- Search & Filter: Quickly find albums using search and filter functionalities.
- User-Friendly Interface: Intuitive design for effortless navigation and management.
Main Screen displaying a list of albums.
Add Album screen with form fields.
Exporting albums in different formats.
- Flutter SDK: Ensure you have Flutter installed. Follow the official installation guide if you haven't set it up yet.
- Dart SDK: Comes bundled with Flutter.
- Git: To clone the repository.
-
Clone the Repository:
git clone https://github.com/hiphopconnect/music_up.git cd music_up
-
Install Dependencies:
flutter pub get
-
Run the App:
flutter run
To create a .deb
package for MusicUp, ensure you have all dependencies installed, then follow these steps:
-
Make the script executable:
chmod +x create_deb.sh
-
Run the script to build the Debian package:
./create_deb.sh
This will generate a .deb
package, which you can install on any Debian-based system.
Once installed, MusicUp can be launched from your system's application menu. You can add, edit, and manage your music collection easily from the user interface. Import or export your collection to/from JSON, CSV, or XML formats as needed.
You can run the tests for MusicUp using Flutter's built-in testing framework. To run all tests, use:
flutter test
This will execute all unit and widget tests available in the repository.
The idea for MusicUp came from my personal need to organize a large collection of CDs and vinyl records. Initially, I used a paid app that allowed scanning albums, but it often failed to find certain CDs, requiring manual entries. As a result, I decided to build MusicUp, focusing on ease of use and customization. Scanning is a feature I may consider adding in the future, but for now, manual input is still a reliable option.
Currently, I have only tested the Linux desktop version, specifically on Linux Mint.
Contributions are welcome! If you have ideas or improvements, feel free to fork the repository and submit a pull request. Make sure to follow best practices when contributing.
I also have a repository with a Swift version of this software, which I originally developed on Swift/IOS. My initial thought was, "Great! Just one codebase, and I can publish on all platforms." However, I quickly ran into dependency issues that became difficult to resolve.
As a result, I developed the mobile version of the software for my iPhone in Swift.
- A Kotlin version for Android.
- A Flutter version for Android, iOS, Windows, and Mac.
- Adding a scanner to load data from a database like CDDB.
MusicUp is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
- Freedom to use, modify, and distribute: You are free to use, modify, and distribute this software, as long as you adhere to the GPLv3 conditions.
- Copyleft: Any modifications or derived works must also be distributed under the GPLv3 license.
- Source code availability: If you distribute the software, you must make the full source code available, including any modifications.
- Patent protection: The license prevents any patent claims against users of the software.
- No "Tivoization": Hardware that uses GPLv3 software must allow installation of modified software by users.
For more information, please refer to the official GPLv3 license.
For any inquiries or feedback, feel free to contact me at Nobo.