Skip to content

voidbornfr/voidloop

Repository files navigation

🎵 VoidLoop

A sleek, feature-rich music streaming application built with Flutter. Stream music from multiple sources, create playlists, and enjoy seamless playback across mobile and desktop platforms.

VoidLoop


📸 UI Preview

Get a glimpse of VoidLoop's sleek interface:

Home Screen Search Screen Player Screen Playlist Screen

⚠️ Educational Purpose Only

This project is created for educational purposes only. Commercial use, redistribution for profit, or any commercial deployment of this application is strictly prohibited. This project is designed to demonstrate music streaming architecture, Flutter development practices, and integration with various music APIs.


👨‍💻 About

VoidLoop is developed by Rishab (@voidbornfr)

A passion project showcasing modern Flutter development with real-world features like music streaming, playlist management, and cross-platform support.


✨ Features

🎶 Music Streaming

  • Stream music from Deezer, JioSaavn, and ReccoBeats
  • High-quality audio playback with just_audio
  • Background playback support
  • Queue management and shuffle/repeat modes

📱 Cross-Platform Support

  • Mobile: Android with full background audio support
  • Desktop: Windows with Discord Rich Presence integration
  • Responsive UI that adapts to different screen sizes

🎵 Playlist Management

  • Create and manage custom playlists
  • Save liked songs
  • Browse curated playlists from music services
  • Persistent storage with Hive

🔍 Discovery & Search

  • Search across multiple music sources
  • Browse by artist, album, and genre
  • Personalized recommendations
  • Section-based discovery

🎮 User Experience

  • Sleek dark theme UI
  • Mini player for quick access
  • Full-screen player with album art
  • Song options and sharing capabilities
  • Smooth animations and transitions

🔗 Integrations

  • Supabase: Backend for user data and authentication
  • Discord RPC: Show what you're listening to on Discord (Windows)
  • Local Storage: Offline playlist and preference storage

⚙️ Advanced Features

  • Battery optimization for mobile
  • Audio session management
  • Permission handling
  • File picker for local content
  • Share functionality

🛠️ Tech Stack

Frontend

  • Flutter - Cross-platform UI framework
  • Provider - State management
  • Material Design - UI components

Backend & Services

  • Supabase - Backend-as-a-Service
  • Deezer API - Music streaming
  • JioSaavn API - Music streaming
  • ReccoBeats API - Music recommendations

Audio & Media

  • just_audio - Audio playback
  • audio_service - Background audio
  • audioplayers - Desktop audio support

Storage & Data

  • Hive - Local database
  • Shared Preferences - User preferences

Desktop Integration

  • win32 - Windows API access
  • Discord RPC - Rich presence

📋 Requirements

Development

  • Flutter SDK: >= 3.0.0
  • Dart SDK: >= 3.0.0
  • Android SDK: API 21+
  • Windows SDK: For desktop development

Runtime

  • Android 5.0+ (API 21+)
  • Windows 10+

🚀 Getting Started

Prerequisites

  1. Install Flutter
  2. Clone the repository:
    git clone https://github.com/voidbornfr/voidloop.git
    cd voidloop

Installation

  1. Install dependencies:

    flutter pub get
  2. Configure Supabase:

    • Update lib/config/supabase_config.dart with your Supabase credentials
    • Set up your Supabase database schema using supabase_schema.sql
  3. Generate code (for Hive models):

    flutter pub run build_runner build

Running the App

Mobile (Android):

flutter run

Desktop (Windows):

flutter run -d windows

Release Build:

flutter build apk --release
flutter build windows --release

📁 Project Structure

voidloop/
├── lib/
│   ├── config/              # Configuration files (Supabase, etc.)
│   ├── models/              # Data models (Song, Playlist, User, etc.)
│   ├── screens/             # UI screens
│   ├── services/            # Business logic & API integration
│   ├── widgets/             # Reusable UI components
│   └── main.dart            # App entry point
├── android/                 # Android-specific code
├── windows/                 # Windows-specific code
├── ios/                     # iOS-specific code
├── public/                  # Assets (logos, icons)
├── test/                    # Unit and widget tests
├── pubspec.yaml             # Dependencies
└── supabase_schema.sql      # Database schema

🔑 Key Services

AudioPlayerService

Manages audio playback, queue, and player state across the app.

SupabaseService

Handles backend communication, user authentication, and data synchronization.

PlaylistService

Manages playlist creation, modification, and persistence.

DeezerService / JioSaavnService

API integration for music streaming and search.

DiscordRPCService

Windows-only service for Discord Rich Presence integration.

LocalStorageService

Handles local data persistence using Hive.


🎨 UI Components

  • SongCard - Displays individual songs
  • PlaylistCard - Shows playlist information
  • SongListTile - List item for songs
  • MiniPlayer - Compact player widget
  • SongOptionsSheet - Context menu for song actions

📱 Screens

  • SplashScreen - App initialization
  • HomeScreen - Main feed and discovery
  • SearchScreen - Music search
  • PlayerScreen - Full-screen player
  • PlaylistDetailScreen - Playlist content
  • LibraryScreen - User's saved content
  • LikedSongsScreen - Favorite tracks
  • QueueScreen - Current playback queue
  • ArtistDetailScreen - Artist information
  • AlbumDetailScreen - Album content

🔐 Security & Privacy

  • User data is stored securely in Supabase
  • Local data is encrypted using Hive
  • No personal information is shared with third parties
  • API keys should be stored in environment variables

📝 License

This project is provided for educational purposes only.

Commercial use is strictly prohibited.

See LICENSE.txt for details.


🤝 Contributing

This is an educational project. While contributions are appreciated for learning purposes, please note:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Note: Contributions should maintain the educational nature of the project and not introduce commercial features.


🐛 Known Issues & Limitations

  • Discord RPC is Windows-only
  • Some music sources may have regional restrictions
  • Background playback on iOS requires additional configuration
  • Offline mode is limited to cached content

🚧 Future Enhancements

  • Offline download support
  • Lyrics display
  • Equalizer controls
  • Podcast support
  • Social features (sharing, following)
  • Advanced analytics
  • iOS support improvements

📞 Support & Contact

For questions, issues, or suggestions:


🙏 Acknowledgments

  • Flutter team for the amazing framework
  • Supabase for backend services
  • Deezer, JioSaavn, and ReccoBeats for music APIs
  • All contributors and testers

📚 Resources


Made with ❤️ by Rishab (voidborn)

VoidLoop - Your music, your way.