M2 Music is a fully self-hosted, white-label music streaming platform built for artists, fans, and platform owners. Artists upload singles, EPs, albums, and beats — then earn royalties from every verified stream. Fans discover music, build playlists, follow artists, subscribe to premium plans, and stream on the web or through the included Flutter mobile app for iOS and Android. You own the data, the brand, and the revenue. No per-stream SaaS fees. No third-party AI API required.
The package is a complete ecosystem: a Laravel 13 backend with REST API, a full admin panel, separate artist and fan web dashboards, a public marketing website with a built-in player, and a Flutter 3 mobile app (iOS + Android) that connects to the same API. Install once, run everywhere — web and mobile from one platform.
What’s Included
- Laravel 13 Backend (PHP 8.2+) — REST API (Sanctum), MySQL database, queued jobs, scheduled tasks, royalty engine, subscription system, and full server-side discovery — powers both web and mobile
- Flutter Mobile App (iOS + Android) — full-featured streaming app built with Flutter 3 and Dart; background audio, synced karaoke lyrics (LRC), offline downloads (premium), in-app subscriptions, tips, playlists, community, DMs, and artist tools — connects to the Laravel API
- Admin Panel — platform dashboard, user/artist management, track & release approvals, genres, subscriptions, payouts, DMCA, ads, announcements, insights, global search, and settings
- Artist Web Dashboard — upload singles/EPs/albums/beats, track management, earnings, insights, listener map, fans list, payout requests, community, and profile
- Fan Web Dashboard — personalized home feed, browse, daily mix, charts, library, playlists, history, artist pages, community, direct messages, and subscriptions
- Public Website — homepage with discovery sections, public artist profiles, track pages, playlist pages, marketing pages, legal pages, and built-in web player with queue
- Web Installer Wizard — requirements check, database setup, migrations, seeding, and admin account creation in one guided flow
- Full HTML Documentation — installation, Laravel setup, Flutter app configuration, APK/IPA build guide, payment gateway setup, rebranding, cron jobs, and troubleshooting
Flutter Mobile App (iOS + Android)
The included Flutter mobile app is a production-ready companion to the Laravel backend. One codebase builds for both iOS and Android and shares the same REST API, user accounts, subscriptions, and content as the web platform.
- Music Streaming — play, pause, seek, queue, shuffle, repeat, and background audio (Android via just_audio_background)
- Synced Karaoke Lyrics — time-synced LRC line highlighting in the mobile player
- Offline Downloads — premium subscribers download tracks for offline listening
- In-App Payments — subscriptions and artist tips via Stripe, PayPal, Paystack, and PawaPay with server-side verification
- Discovery — home feed, charts, new releases, artist radio, search, autocomplete, and personalized recommendations
- Playlists & Library — create playlists, like tracks, save to library, and view listening history
- Social — follow artists, community feed, direct messages, notifications, and reposts
- Artist Mode — upload tracks, view earnings and insights, and request payouts from the app
- Ads — configurable ad placements for free-tier mobile listeners
- Rebrandable — change app name, colors, API URL, and icons from
lib/config/app_config.dart
User Roles & Access
- Admin — full platform control via web admin panel
- Artist — upload music and manage career from web dashboard or Flutter app
- Producer / Label — dedicated registration roles with the same creator dashboard
- Fan — stream on web or Flutter app; like, follow, subscribe, playlist, message, and join the community
- Public Visitor — browse the website, play tracks, view profiles, and sign up to unlock web + mobile features
Artist Features (Web + Flutter App)
- Upload Singles, EPs, Albums & Beats — from web dashboard or Flutter app; audio (MP3, WAV, FLAC), cover art, genre, mood, BPM, lyrics, LRC file, featured artists, and release scheduling
- Track Management — edit metadata, view approval status, delete tracks, set free vs premium-only
- Scheduled Releases — future go-live date with automatic cron publishing
- Stream Royalties — earn per verified play with verified-artist and featured-track multipliers
- Earnings Dashboard — per-track breakdown, balance, pending vs paid, CSV export (web)
- Insights & Analytics — streams by day, top tracks, earnings by month, listener countries with world map (web)
- Payout Requests — withdraw via Mobile Money (PawaPay) or Bank Transfer (web + app)
- Community & DMs — post updates, receive engagement, message fans (web + app)
- Weekly Email Digest — automated streams and earnings summary
Fan Features (Web + Flutter App)
- Personalized Home Feed — quick access, made-for-you mixes, and recommendations
- Browse & Search — genre, mood, release type filters; autocomplete on mobile
- Daily Mix — up to three genre-based mixes from your taste profile
- Charts — weekly, monthly, and all-time rankings
- Library & Playlists — liked songs, followed artists, custom playlists (web + app)
- Artist Pages — follow, play, view discography, featured-artist credits, tip artists
- Community & DMs — posts, likes, comments, 1-to-1 messages with read receipts
- Subscriptions — free tier with ads or premium with ad-free, HQ audio, and offline downloads on mobile
- Notifications — follows, announcements, and activity alerts (web + app)
Public Website
- Homepage — trending, featured, new releases, popular tracks, albums, top artists, genres
- Public Profiles — artist pages, track pages, playlist pages with built-in player
- Web Player — queue, shuffle, repeat, like, seek, and autoplay
- Marketing & Legal Pages — About, Services, Contact, Privacy, Terms, DMCA, and more
- Dark / Light / Auto Theme — visitor theme toggle
- PWA-Ready — web app manifest for add-to-home-screen on mobile browsers (complements the native Flutter app)
Admin Panel
- Dashboard — KPIs, stream trends, pending approvals, top tracks
- User & Artist Management — verify, suspend, create, delete
- Content Moderation — approve/reject tracks and releases, flag content, bulk actions
- Finance — earnings overview, payout approval, CSV export, subscription plans, free-tier rules
- Marketing — announcements, ads manager (banner, video, audio preroll), InMobi/Audiomob settings
- Compliance — DMCA review queue, community moderation
- System — feature toggles, branding, SMTP, gateway tester, admin 2FA, global search
Payments & Monetization (Web + Flutter App)
- 4 Payment Gateways — Stripe, PayPal, Paystack, PawaPay (web checkout + Flutter in-app checkout)
- Subscriptions — recurring billing, plan tiers, trials, free-tier play limits
- Artist Tips — fans tip artists from web profiles or the Flutter app
- Stream Royalties — automatic per-play earnings with multipliers
- Artist Payouts — Mobile Money (PawaPay) and Bank Transfer with admin approval
- Multi-Currency & Country Matrix — per-gateway currencies and payout country controls
- Ad-Supported Free Tier — play caps with ads on web and mobile
Recommendations & Discovery — No External AI API Required
Daily Mix, Artist Radio, and Recommendations run on your server using database queries — genre matching, play history, follower graphs, and popularity scoring. No OpenAI, Gemini, Claude, or any AI API key is required. Works identically on web and Flutter app.
Music Player & Audio
- Web Player — queue, shuffle, repeat, like, seek, autoplay
- Flutter Mobile Player — background audio, queue, shuffle, repeat, synced LRC karaoke lyrics, offline playback (premium)
- Audio Pipeline — MP3/WAV/FLAC upload, getID3 duration extraction, optional FFmpeg transcoding to 192kbps MP3 via queued jobs
- Community Feed — posts, images, likes, comments, reposts (web + app)
- Direct Messages — 1-to-1 inbox with read receipts (web + app)
- Artist Verification Badge — admin-granted with higher royalty multiplier
- DMCA Workflow — public form + admin review queue
- Track Approval — all uploads reviewed before going live on web and app
- Play Throttling — API rate limiting to reduce fake-stream abuse
- Admin Email 2FA — optional two-factor for admin login
Feature Switches (No Code Changes)
Toggle from admin: Charts, Artist Radio, Synced Lyrics, Tips, Downloads, Recommendations, History, Search, Community, DMs, and Playlists — applies to web and mobile API.
Email & SEO
- Transactional Emails — welcome, track approved/rejected, subscription, payout, and more
- Weekly Digests — automated artist and fan email summaries (cron)
- Dynamic Sitemap — auto-generated
sitemap.xml - White-Label Branding — app name, logos, colors on web; rebrandable Flutter app config
Tech Stack
- Backend: Laravel 13, PHP 8.2+, MySQL 8.0+
- Mobile App: Flutter 3.27+, Dart 3.x, just_audio, just_audio_background — iOS + Android from one codebase
- API: Laravel Sanctum REST API (shared by web dashboards and Flutter app)
- Payments: Stripe, PayPal, Paystack, PawaPay
- Audio: getID3 + optional FFmpeg
- Web: Blade, vanilla JS, Hotwire Turbo
Files Included
- Laravel backend source code (PHP, Blade, CSS, JavaScript)
- Flutter mobile app source code (Dart) — complete iOS & Android project
- Full HTML documentation — Laravel install + Flutter setup + APK/IPA build guide
- Database migrations and idempotent seeders
- Web installer wizard
- PWA manifest and app icons
Browser & Device Support
Web: Chrome, Firefox, Safari, Edge (latest). Flutter Mobile App: Android 5.0+ / iOS 13+. Server: Linux hosting, PHP 8.2+, MySQL, optional FFmpeg, cron support.
⚠ Third-Party Payment Gateway Fees — Important Disclosure
M2 Music integrates with external payment gateways on web and in the Flutter app. Each requires its own merchant account. Fees are separate from this item and deducted by the provider:
- Stripe — approx. 2.9% + $0.30 per transaction — stripe.com/pricing
- PayPal — approx. 3.49% + fixed fee — paypal.com/fees
- Paystack — 1.5% + ₦100 local / 3.9% international — paystack.com/pricing
- PawaPay — mobile money payouts — pawapay.io
All fees are approximate and subject to change. Gateway fees are not collected by this script.
Requirements
- PHP 8.2+, MySQL 8.0+, Composer, writable storage directories
- Flutter SDK 3.27+ for building the iOS and Android app
- Xcode (macOS) for iOS builds; Android Studio / SDK for Android builds
- FFmpeg optional (audio transcoding)
- Cron job support (releases, digests, queue worker, subscription expiry)