π΅ Music App
A Spotify-inspired music player built with Flutter, FastAPI, and Riverpod. This project aims to replicate core features of a music streaming app, including user authentication, song playback, and cloud storage integration.
π Features
Authentication: Sign up and log in to your account
Music Playback: Play, pause, and change songs; background playback supported
Favorites: Mark songs as favorites and manage your playlist
Upload: Upload your own songs to the platform
State Management: Utilizes Riverpod for efficient state management across the app
π§± Tech Stack
Frontend: Flutter (Dart)
Backend: FastAPI (Python)
Database: PostgreSQL
Cloud Storage: Cloudinary
State Management: Riverpod
π Project Structure Music_App/ βββ client/ # Flutter frontend βββ server/ # FastAPI backend βββ assets/ # Images and static files βββ README.md # Project documentation
π Getting Started Prerequisites
Flutter SDK
Python 3.8+
PostgreSQL
Cloudinary Account
Frontend Setup
Clone the repository:
git clone https://github.com/SouravMitra98/Music_App.git cd Music_App/client
Install dependencies:
flutter pub get
Run the app:
flutter run
Backend Setup
Navigate to the server directory:
cd Music_App/server
Create a virtual environment and activate it:
python -m venv venv
.\venv\Scripts\activate
source venv/bin/activate
Install dependencies:
pip install -r requirements.txt
Set up environment variables:
DATABASE_URL: PostgreSQL connection string
CLOUDINARY_URL: Cloudinary API URL
Run the server:
uvicorn main:app --reload
π§ͺ Known Issues
The library page doesn't automatically update after song uploads. This is a known issue and is being addressed.
πΈ Screenshots
Coming soon!
π Roadmap
Implement automatic library page updates
Add user profile management
Integrate music streaming APIs
Enhance UI/UX design
π€ Contributing
Contributions are welcome! Please fork the repository, create a new branch, and submit a pull request.
π License
This project is licensed under the MIT License.
Feel free to adjust any sections as needed, and let me know if you'd like to add any additional information or features!