Introduction • Features • Screenshots • Getting Started • Downloads • Installation • Technologies • Project Architecture • Development • Roadmap • Contributing • License • Acknowledgements • Contact • Documentation
Welcome to Rate Me!, an app designed for music lovers to discover, rate, and manage your favorite albums effortlessly. With Rate Me!, you can explore a wide variety of albums, rate each song individually, and get an overall view of the album's quality based on your personal ratings.
- Multi-Platform Support: Rate albums from Apple Music, Spotify, Deezer, Discogs, and Bandcamp
- Track-by-Track Rating: Rate individual tracks on a 0-10 scale
- Custom Lists: Organize albums into custom lists (e.g., "Best of 2023", "Prog Rock", etc.)
- Album Notes: Save personal reviews, thoughts, and observations for each album
- Data Export/Import: Easily backup and restore your collection
- Share as Images: Generate beautiful images of your ratings to share on social media
- Offline Support: Access your saved albums and ratings without an internet connection
- SQLite Database: Fast performance and reliable data storage
- Track Duration Support: View track lengths from various platforms including Discogs
- Cross-Platform Matching: Easily find your albums across different music services
- API Key Support: Secure user-provided API keys for Spotify and Discogs services
- Clipboard Detection: Automatically detects music platform URLs from clipboard
- Cross-Platform Streaming: Buttons for Spotify, Apple Music and Deezer with context menu options
- Universal EP/Single Handling: Consistent album format detection across all platforms
- Dark Mode: Choose between light, dark, or system themes
- Custom Colors: Personalize the app with your preferred color scheme
- Pull-to-Refresh: Update content with a simple swipe down gesture
- Skeleton UI: Beautiful loading placeholders while fetching content
- Drag and Drop List Management: Reorder custom lists and saved albums with intuitive controls
![]() |
![]() |
![]() |
- Search for Albums: Enter an artist or album name to search, or paste a URL from Apple Music, Bandcamp, Spotify, Deezer or Discogs
- Rate Albums: Open an album and use the sliders to rate each track from 0-10
- Create Lists: Organize your music by creating custom lists
- Add Album Notes: Write personal reviews or observations about each album
- Share Your Ratings: Generate beautiful images of your ratings to share
| Platform | Format | Download |
|---|---|---|
| Windows | Installer | RateMe_1.1.7-1.exe |
| Windows | Portable | RateMe_1.1.7-1_portable.zip |
| macOS | Universal | RateMe_1.1.7-1.dmg |
| Format | Architecture | Download |
|---|---|---|
| AppImage | x86_64 | RateMe_1.1.7-1.AppImage |
| DEB | amd64 | RateMe_1.1.7-1_amd64.deb |
| RPM | x86_64 | RateMe_1.1.7-1_x86_64.rpm |
| Flatpak | Universal | RateMe_1.1.7-1.flatpak |
| Arch Linux | - | AUR Instructions |
| Platform | Version | Download |
|---|---|---|
| Android | Universal | RateMe_1.1.7-1.apk |
| Android | arm64-v8a | RateMe_1.1.7-1_arm64-v8a.apk |
| Android | armeabi-v7a | RateMe_1.1.7-1_armeabi-v7a.apk |
| Android | x86_64 | RateMe_1.1.7-1_x86_64.apk |
- Installer: Run
RateMe_1.1.7-1.exeand follow the installation wizard- Or -
- Portable: Extract
RateMe_1.1.7-1_portable.zipand runRateMe.exe
-
Choose the correct version:
- APK-Universal: Works on most devices
- APK-arm64-v8a: Modern phones (2017+)
- APK-armeabi-v7a: Older phones
- APK-x86_64: Some tablets/ChromeOS
-
Install:
- Download the chosen APK
- If "Install from unknown sources" appears:
- Go to Settings > Security
- Enable "Unknown sources" or
- Allow "Install unknown apps" for your browser
- Open the downloaded APK and follow the steps
Note: If you're not sure which version to use, install APK-Universal
- Download
RateMe_1.1.7-1.dmg - Open the DMG file
- Drag RateMe to your Applications folder
- First time running:
- Right-click (or Control+click) on RateMe in Applications
- Select "Open" from the menu
- If blocked, go to System Settings -> Privacy & Security
- Scroll down and click "Open Anyway" next to RateMe
- Click "Open" on the final security dialog
Note: If you see "app is damaged" message, open Terminal and run:
xattr -cr /Applications/RateMe.appThen try opening the app again. This removes macOS security quarantine.
- Download
RateMe_1.1.7-1.AppImage - Make it executable:
chmod +x RateMe_1.1.7-1.AppImage- Run it:
./RateMe_1.1.7-1.AppImageNo installation needed - the AppImage is portable and works on most Linux distributions.
sudo apt install ./RateMe_1.1.7-1_amd64.debsudo dnf install ./RateMe_1.1.7-1_x86_64.rpm-
Download the Flatpak package from releases
-
Install required runtime (if not already installed):
flatpak install flathub org.freedesktop.Platform//21.08- Install RateMe:
flatpak install ./RateMe_1.1.7-1.flatpak- Run RateMe:
flatpak run com.example.RateMeflatpak uninstall com.example.RateMegit clone https://github.com/ALi3naTEd0/RateMe.git
cd RateMe
makepkg -si- Flutter: Used for developing the user interface, Flutter provides a flexible and intuitive framework for creating visually appealing applications.
- Dart: As the primary programming language, Dart powers the logic and functionality of the Rate Me! application.
- SQLite: Local database for efficient album and track storage.
- iTunes API: Utilized to search for albums and retrieve detailed album data.
- Spotify API: Integration for searching and retrieving Spotify albums and tracks.
- Deezer API: Music streaming platform API for album and track discovery.
- Discogs API: Deep integration with Discogs for comprehensive album and track information.
- JSON Parser for Bandcamp: A JSON parser is used to search and retrieve detailed album data from Bandcamp links.
- Search for Albums: Enter an artist or album name to search, or paste a URL from Apple Music, Bandcamp, Spotify, Deezer or Discogs
- Rate Albums: Open an album and use the sliders to rate each track from 0-10
- Create Lists: Organize your music by creating custom lists
- Add Album Notes: Write personal reviews or observations about each album
- Share Your Ratings: Generate beautiful images of your ratings to share
RateMe provides several options for managing your data:
- Standard Backup: Export/import your entire collection with ratings, custom lists, and notes
- Album Exchange: Share individual albums with friends who use RateMe
- Date Fixing Utility: Batch fix missing or incorrect album release dates
- Platform Match Cleaner: Fix incorrect associations between albums on different platforms
- Database Optimization: Vacuum and analyze database for improved performance
- Database Integrity: Check and repair potential issues with album data
- Database Migration: Seamless upgrade from older versions with progress tracking
- Track Management: Fix duplicate tracks and refresh missing track information
- Android
- Windows
- macOS
- Linux
RateMe uses a unified data model that ensures consistent handling of music from different platforms. This model:
- Works across multiple music platforms (Apple Music, Spotify, Deezer, Discogs, and Bandcamp)
- Maintains backward compatibility with previous versions
- Provides consistent field naming and data access
- Standardizes album data format between different music platforms
- Normalizes album name variations (EP, Single, etc.) across platforms
- Improves reliability and error handling
- Supports cascading deletes and proper relationships
- Enables cross-platform album matching and lookup
RateMe respects your privacy:
- All data is stored locally on your device
- No personal information is collected or transmitted
- No tracking or analytics
- API keys are securely stored in the local database
This Flutter project follows a clean architecture pattern with clear separation of concerns. The main components are described below:
/home/x/RateMe/lib/
├── core/ # Core layer (domain & application logic)
│ ├── api/
│ │ └── api_keys.dart # API key management abstraction
│ ├── models/
│ │ └── album_model.dart # Domain entities and models
│ ├── services/
│ │ ├── logging.dart # Application-wide logging service
│ │ ├── search_service.dart # Search functionality across platforms
│ │ ├── theme_service.dart # Theme management
│ │ └── user_data.dart # Repository-like service for user data
│ └── utils/
│ ├── clipboard_detector.dart # URL detection from clipboard
│ ├── color_utility.dart # Color conversion and manipulation
│ ├── date_fixer_utility.dart # Date standardization
│ └── version_info.dart # App version tracking
│
├── database/ # Data persistence layer
│ ├── api_key_manager.dart # API credentials storage
│ ├── backup_converter.dart # Import/export functionality
│ ├── cleanup_utility.dart # Database maintenance
│ ├── database_helper.dart # SQLite abstraction
│ ├── data_migration_service.dart # Data migration utilities
│ ├── json_fixer.dart # JSON repair tools
│ ├── migration_utility.dart # Schema migration
│ ├── preferences_migration.dart # Settings migration
│ ├── search_history_db.dart # Search history storage
│ └── track_recovery_utility.dart # Track data recovery
│
├── features/ # Feature modules
│ ├── albums/
│ │ ├── details_page.dart # Album details screen
│ │ ├── saved_album_page.dart # Saved album view
│ │ └── saved_ratings_page.dart # Album collection view
│ ├── custom_lists/
│ │ └── custom_lists_page.dart # Custom collection management
│ ├── notifications/
│ │ └── global_notifications.dart # App-wide messaging
│ ├── platforms/
│ │ ├── model_mapping_service.dart # Platform data normalization
│ │ ├── platform_data_analyzer.dart # Platform data analysis
│ │ ├── platform_service.dart # Platform service abstractions
│ │ └── platform_ui.dart # Platform-specific UI
│ ├── preload/
│ │ └── preload_service.dart # Resource preloading
│ ├── search/
│ │ └── platform_match_widget.dart # Cross-platform matching UI
│ └── settings/
│ ├── migration_util.dart # Settings migration utility
│ ├── settings_page.dart # App settings UI
│ └── settings_service.dart # Settings management
│
├── navigation/ # Navigation layer
│ └── navigation_util.dart # Navigation service
│
├── platforms/ # Platform integrations
│ ├── middleware/
│ │ ├── deezer_middleware.dart # Deezer data enhancement
│ │ └── discogs_middleware.dart # Discogs data enhancement
│ ├── apple_music_service.dart # Apple Music integration
│ ├── bandcamp_service.dart # Bandcamp integration
│ ├── deezer_service.dart # Deezer integration
│ ├── discogs_service.dart # Discogs integration
│ ├── platform_service_base.dart # Base service class
│ ├── platform_service_factory.dart # Service provider
│ └── spotify_service.dart # Spotify integration
│
├── ui/ # UI layer
│ ├── themes/
│ │ └── color_reset_utility.dart # Theme color management
│ └── widgets/
│ ├── footer.dart # App footer with version info
│ ├── platform_match_cleaner.dart # Platform match fixing UI
│ ├── share_widget.dart # Rating sharing functionality
│ └── skeleton_loading.dart # Loading UI placeholders
│
└── main.dart # Application entry point
The clean architecture provides several key advantages:
- Separation of Concerns: Each layer has distinct responsibilities, making the codebase more organized and maintainable
- Testability: Core business logic is isolated from external dependencies for easier testing
- Modularity: Features are encapsulated in their own modules for better code organization
- Scalability: Easy to add new features without disrupting existing functionality
- Dependency Management: Clear flow of dependencies from outer layers inward
-
Core Application
- Main: Entry point and root widget handling theme state
- ThemeService: Centralized theme management with reactive updates
- GlobalNotifications: App-wide messaging system
- Footer: Consistent layout component with version info and links
- NavigationUtil: Page navigation and route handling utility
-
Data Models
- AlbumModel: Core data model for albums, tracks, and unified platform handling
- UserData: High-level data operations and persistence
- ApiKeyManager: Secure credentials storage and validation
- ModelMappingService: Data conversion between different format models
-
User Interface
- SearchPage: Album search interface with platform integration
- DetailsPage: Album details and rating interface
- SavedAlbumPage: Individual saved album view and editing
- SavedRatingsPage: Album list management and ratings display
- CustomListsPage: Custom collections management
- SettingsPage: Application configuration and preferences
-
UI Components
- PlatformMatchWidget: Cross-platform streaming service integration buttons
- ShareWidget: Album rating image generation for social sharing
- SkeletonLoading: Loading state placeholders for UI elements
- PlatformMatchCleaner: Interface for fixing incorrect platform associations
-
Database Layer
- DatabaseHelper: Central SQLite database interaction
- MigrationUtility: Database and model version upgrades
- BackupConverter: Data import/export and format conversion
- SearchHistoryDb: Search history tracking and management
-
Platform Services
- PlatformServiceFactory: Service provider for multiple music platforms
- PlatformMiddleware: Enhanced album data processing (Discogs, Deezer)
- SearchService: Cross-platform search operations
- PlatformUI: Platform-specific UI elements and styling
- PreloadService: Resource and data preparation utility
-
Utilities
- Logging: Diagnostic and error tracking
- ColorUtility: Color management and conversion tools
- DateFixerUtility: Album date corrections and standardization
- ClipboardDetector: URL detection and processing
- JsonFixer: JSON data structure normalization and repair
- DebugUtil: Development debugging tools
- CleanupUtility: Database and resource maintenance
-
Environment Setup:
- Ensure you have Flutter installed and added to your PATH. If not, follow the official Flutter installation guide.
- Once Flutter is set up, follow the steps in the Getting Started section above to set up the project.
-
Code Conventions: We follow the official Dart style guide and Flutter style guide. Please ensure your contributions adhere to these guidelines.
-
Building the App: Run the following commands to build the app for your target platform:
flutter pub get flutter build <platform>
Where
<platform>can beapk,windows,macos, orlinux.
- Advanced search filter options
- Search history implementation and management
- Advanced query optimization for large datasets (10,000+ albums)
- Database telemetry and performance monitoring
- Album notes export and import functionality
- Bulk editing tools for ratings and album data
- Custom tags for albums and tracks
- Local music file integration
- Statistics and listening insights
- Cross-device sync via private cloud storage
- Rating trends and history visualization
- iOS version (pending Apple Developer subscription)
Contributions to the project are welcome! If you encounter any issues or wish to request a new feature, feel free to inform us through GitHub issues.
To contribute:
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
The MIT License is a permissive license that is short and to the point. It allows people to do anything with your code with proper attribution and without warranty.
- http - HTTP requests and API integration
- shared_preferences - Local data storage
- sqflite - SQLite database support
- sqflite_common_ffi - SQLite FFI implementation for desktop platforms
- html - HTML parsing for structured data
- url_launcher - External URL handling
- intl - Date formatting
- path_provider - File system access
- file_picker - File selection dialogs
- share_plus - Content sharing
- package_info_plus - App version info
- flutter_svg - SVG rendering for platform icons
- logging - Application logging
- flex_color_picker - Color selection utilities
- flutter_launcher_icons - App icon generation
- path - File path manipulation
- flutter_lints - Lint rules for clean code
- flutter_distributor - App distribution helpers
- build_runner - Build system for code generation
- json_serializable - JSON serialization utilities
Project Link: https://github.com/ALi3naTEd0/RateMe
Developed with ♥ by ALi3naTEd0



