Overview
MelodAI is an AI music and media SaaS platform built with Laravel 13, Inertia.js, and a companion mobile app (melodai-app) using Expo SDK 56 and React Native.
The web app includes an installation wizard at /install, a shared login at /login (admins and users), and an admin panel at /admin for users with the admin role. It supports HTTP cron endpoints, database queue workers, and integrations for Suno, OpenAI, xAI, FAL, Stripe, Flutterwave, Revolut, Cryptomus, Cloudflare R2, YouTube OAuth, and more.
Technology stack
- Backend: PHP 8.3+, Laravel 13, MySQL/MariaDB, database queues (Horizon optional on Linux VPS)
- Frontend: Inertia.js, Vite, Tailwind CSS v4
- Mobile: Expo 56, React Native 0.85, Expo Router, TypeScript
- Media: FFmpeg (lyrics video and audio processing)
- Storage: Local disk or Cloudflare R2 (recommended for production)
Documentation guides
Local development
XAMPP/WAMP/Laragon, php.ini extensions, Composer, Node, migrations, queue worker, installer wizard.
Shared hosting (cPanel)
Hostinger/cPanel deploy, document root, HTTP cron URLs, PHP queue crons, SSL.
VPS deployment
Ubuntu, Nginx, FFmpeg via apt, Redis + Horizon, ZIP/SQL upload from Windows, SSL, Supervisor, Contabo troubleshooting.
API keys & providers
Step-by-step registration for every key in .env.example.
Expo 56 mobile app
Windows, macOS, Linux dev setup, Expo Go, production API URL, EAS builds, APK/AAB release.
Quick start (local)
- Install PHP 8.3+, Composer 2, Node.js 20 LTS, MySQL, and FFmpeg.
- Clone the project, copy
.env.exampleto.env, enable required PHP extensions. - Run
composer install,npm install,npm run build, and migrations. - Start dev stack:
composer run dev(app, queue worker, and Vite). - Complete the
/installwizard. - Mobile: set
EXPO_PUBLIC_API_URLinmelodai-app/.envand runnpx expo start.
Pre-launch checklist
Application
APP_ENV=production,APP_DEBUG=false,APP_URL=https://yourdomain.com- Admin → Settings → General → Site URL matches production HTTPS (used for cron URLs)
APP_KEYis set; never commit.env- Suno, R2 storage, and payment keys configured and tested
Operations
- HTTP cron jobs copied from Admin → Cron & Queue
- Queue workers running (Supervisor on VPS or cPanel PHP cron)
php artisan storage:link; writablestorageandbootstrap/cache- Mobile app built with production
EXPO_PUBLIC_API_URL
Post-launch verification
- Homepage, login, registration, and admin panel load over HTTPS
- Music generation end-to-end (queue processes job, user notified)
- Stripe, Flutterwave, Revolut (sandbox), and/or Cryptomus test payment, then one live payment per enabled provider
- Mobile app login against production API; YouTube connect if enabled
- Review
storage/logs/laravel.logand Admin → Queue Monitor