Musync is a full-stack music streaming app built with Flutter (frontend) and FastAPI (backend). It supports music uploads, playback, playlists, favorites, user authentication, and cloud storage — all with clean, modular architecture.
- 🧭 Riverpod State Management – Scalable and testable architecture.
- 📱 Cross-Platform – Works on Android, iOS, and Web.
- 🎵 Music Player UI – Stream uploaded tracks with sleek playback design.
- 📂 File Picker – Upload music from device storage.
- 💚 Favorites – Organize and relisten easily.
- 🌐 Responsive UI – Optimized for multiple screen sizes.
- ⚡ FastAPI – Modern async Python backend.
- 🧠 SQLAlchemy ORM – Pythonic database models and queries.
- 🔐 JWT Authentication – Secure login/register.
- 🗃️ PostgreSQL – Relational database for tracks, users, playlists.
- ☁️ Cloudinary – Store and stream uploaded audio in the cloud.
- 🐳 Dockerized Setup – Run the entire backend via Docker.
![]() Login Screen |
![]() Signup Screen |
![]() Home Screen |
![]() Music Player |
![]() Favorites |
![]() Upload Music |
musync/
├── client/ # Flutter frontend
├── server/ # FastAPI backend (Docker-ready)
- Flutter SDK installed
- Emulator or Android/iOS device
- VS Code or Android Studio
cd client
flutter pub get
flutter run🧠 Make sure your backend URL in Flutter (e.g. ServerConstants) matches your host IP if testing on physical devices.
⸻
🖥️ FastAPI Backend Setup (Dockerized)
Prerequisites: • Docker & Docker Compose installed • Cloudinary account for music storage
Steps:
cd server
cp .env.example .env # Add DB + Cloudinary credentials
docker compose up --build📍 API docs available at: http://localhost:8000/docs
⸻
🔑 Environment Variables
Inside server/.env:
# PostgreSQL
DB_USER=postgres
DB_PASSWORD=your_password
DB_NAME=musync
DB_HOST=db
DB_PORT=5432
# JWT Secret
SECRET_KEY=your_jwt_secret
# Cloudinary Credentials
CLOUDINARY_API_KEY=your_key
CLOUDINARY_SECRET_KEY=your_secret📬 Contact
• GitHub: @Aman-chatterjee
• Email: amanchatterjee121@gmail.com
⸻
Thanks for checking out Musync! 🎧✨ Star ⭐ the repo if you like it!





