- Overview
- Database Design
- Features
- Installation
- Screenshots
- Technologies Used
- Contributing
- License
- Resources
- Acknowledgments
Night Angle is a music app where users can share their own music and listen to music uploaded by others. Users can favorite tracks, search for music by name or artist, and discover new music. The app follows the MVVM architecture and includes features such as image and music caching, and background play similar to premium features in Spotify.
The Night Angle app uses a PostgreSQL database with Prisma as the ORM. The schema is designed to efficiently handle user data, songs, playlists, and favorites. Here's an overview of the schema:
Benefits of the Design
_ Efficiency: Indexes on frequently searched fields (like email, song_name, userId) improve query performance
- Flexibility: The design supports complex queries and relationships, allowing for features like playlists and favorites.
- Security: Storing user passwords securely (assuming proper hashing) and using unique constraints on sensitive fields like email.
The Night Angle app includes the following features:
- User authentication: Users can sign up and log in to the app
- Upload music: Users can upload their own music
- background play: Users can play music in the background
- Search: Users can search for music by name or artist
- Favorites: Users can favorite tracks
- Add to playlist: Upcoming feature
- Discover: Upcoming feature
- AI music generation: Upcoming feature
Prerequisites
- FastAPI: Ensure you have Python installed. You can install FastAPI using pip:
- Flutter: Follow the official Flutter installation guide to set up Flutter on your machine.
pip install fastapi
- PostgreSQL: Set up a PostgreSQL database. You can use services like Heroku or install PostgreSQL locally.
- Prisma: Install Prisma CLI:
npm install -g prisma
Steps
- the repository:
git clone https://github.com/mageshyt/night-angle.git
cd night-angle
- up the Backend:
- Navigate to the backend directory:
cd backend
- Run docker-compose to start the PostgreSQL database:
docker-compose up -d
- Run the Prisma migration to create the database schema:
prisma migrate dev
- Start the FastAPI server:
uvicorn app.main:app --reload
- up the Frontend:
- Navigate to the frontend directory:
cd frontend
- Install the dependencies:
flutter pub get
- Start the Flutter app:
flutter run
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
- Frontend: Flutter
- Backend: FastAPI
- Database: PostgreSQL
- ORM: Prisma
Contributions are welcome! Feel free to open an issue or submit a pull request if you have any ideas or suggestions.
This project is licensed under the MIT License - see the LICENSE file for details.
Special Thanks to Rivaan for his inspiration and guidance.