{"id":24277165,"url":"https://github.com/indiecodermm/songify","last_synced_at":"2025-03-14T10:23:04.091Z","repository":{"id":201136903,"uuid":"704364718","full_name":"IndieCoderMM/songify","owner":"IndieCoderMM","description":"A Spotify-clone app built with React Native, Firebase, and the Deezer music API ","archived":false,"fork":false,"pushed_at":"2023-10-19T05:51:14.000Z","size":2890,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-16T00:02:44.149Z","etag":null,"topics":["expo","firebase","firestore","react-native"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IndieCoderMM.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-10-13T05:33:11.000Z","updated_at":"2024-12-28T09:48:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"86cf8aed-2d63-4aeb-bb1c-6bfb1d3752c8","html_url":"https://github.com/IndieCoderMM/songify","commit_stats":null,"previous_names":["indiecodermm/songify"],"tags_count":0,"template":false,"template_full_name":"IndieCoderMM/expo-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IndieCoderMM%2Fsongify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IndieCoderMM%2Fsongify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IndieCoderMM%2Fsongify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IndieCoderMM%2Fsongify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IndieCoderMM","download_url":"https://codeload.github.com/IndieCoderMM/songify/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243559100,"owners_count":20310697,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["expo","firebase","firestore","react-native"],"created_at":"2025-01-15T23:28:46.593Z","updated_at":"2025-03-14T10:23:04.069Z","avatar_url":"https://github.com/IndieCoderMM.png","language":"JavaScript","readme":"\u003cdetails\u003e \n  \u003csummary\u003eTable of Contents\u003c/summary\u003e\n\n- [Songify](#songify)\n  - [Technologies Used](#technologies-used)\n  - [Features](#features)\n  - [Development](#development)\n  - [Getting Started](#getting-started)\n  - [Future Features](#future-features)\n  - [Contact](#contact)\n  - [License](#license)\n\n\u003c/details\u003e\n\n# Songify\n[![Version](https://img.shields.io/github/package-json/v/indiecodermm/songify)](https://github.com/indiecodermm/songify)\n[![License](https://img.shields.io/github/license/indiecodermm/songify)](https://github.com/indiecodermm/songify/blob/main/LICENSE)\n[![Last Commit](https://img.shields.io/github/last-commit/indiecodermm/songify)](https://github.com/indiecodermm/songify/commits)\n\n**Songify** is a feature-rich Spotify Clone that allows users to play music, search for songs, and create their favorite playlists. Songify is built with React Native and Expo, and utilizes the Deezer API to fetch songs data.\n\n![Songify](./screenshot.png)\n\n## Technologies Used\n\n- React Native\n- Firebase: Authentication and Firestore\n- [Expo Router](https://expo.github.io/router/docs): File-based routing for Native apps\n- [Expo Auth Session](https://docs.expo.dev/versions/latest/sdk/auth-session/): Auth Provider for Google and Facebook\n- [Expo Av](https://docs.expo.dev/versions/latest/sdk/av/): For playing audio\n- [RN Async Storage](https://github.com/react-native-async-storage/async-storage): Local storage for user data\n- [Pullstate](https://lostpebble.github.io/pullstate/): Lightweight global state management \n- [Deezer API](https://rapidapi.com/deezerdevs/api/deezer-1): Fetch songs data\n\n## Features\n\n- Secure user authentication\n- Login with Google or Facebook\n- Play songs with interactive player\n- Search and filter for songs\n- Add songs to favorites\n- Spotify-like UI\n- Intuitive tab navigation\n\n## Development\n\nThis app was developed using the latest technologies and best practices. The codebase is highly modularized and organized for easy maintenance and scalability.\n\n\u003cdetails\u003e \n  \u003csummary\u003eProject Structure\u003c/summary\u003e\n\nWith a focus on clean code and maintainability, the project structure is organized into the following folders:\n\n```py\n.\n├── app/\n│   ├── (auth)/     # Authentication screens\n│   │   ├── sign-up.js\n│   │   └── ...\n│   ├── (routes)/   # Main app screens\n│   │   ├── home.js\n│   │   ├── player.js\n│   │   └── ...\n│   ├── _layout.js\n│   └── index.js\n├── assets\n├── components/     # Reusable components grouped by page\n│   ├── home\n│   ├── player\n│   └── index.js\n├── constants\n├── hooks\n├── store/          # Global state management\n│   ├── auth.js\n│   └── player.js\n├── styles          # Reusable styles\n├── utils\n├── index.js\n└── firebase-config.js\n\n```\n\n\u003c/details\u003e\n\n## Getting Started\n\nTo run this project locally, follow these steps:\n\n1. Clone the repo to your local machine.\n   \n```sh\ngit clone git@github.com:IndieCoderMM/songify.git\n```\n\n2. Change into the project directory and install dependencies with:\n\n```sh\nnpm install\n```\n\n3. Create a `.env` file in the root directory and add the following environment variables:\n\n```sh\nEXPO_PUBLIC_FIREBASE_API_KEY=\u003cyour-firebase-api-key\u003e\nEXPO_PUBLIC_FIREBASE_AUTH_DOMAIN=\u003cyour-firebase-auth-domain\u003e\nEXPO_PUBLIC_FIREBASE_PROJECT_ID=\u003cyour-firebase-project-id\u003e\nEXPO_PUBLIC_FIREBASE_STORAGE_BUCKET=\u003cyour-firebase-storage-bucket\u003e\nEXPO_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=\u003cyour-firebase-messaging-sender-id\u003e\nEXPO_PUBLIC_FIREBASE_APP_ID=\u003cyour-firebase-app-id\u003e\nEXPO_PUBLIC_RAPID_API_KEY=\u003cyour-rapid-api-key\u003e\nEXPO_PUBLIC_IOS_CLIENT_ID=\u003cyour-ios-client-id\u003e\nEXPO_PUBLIC_ANDROID_CLIENT_ID=\u003cyour-android-client-id\u003e\nEXPO_PUBLIC_FACEBOOK_CLIENT_ID=\u003cyour-facebook-client-id\u003e\n``` \n\n4. Start the Expo server with the following command:\n\n```sh\nnpx expo start\n```\n\n*Expo-CLI will start a server and generate a QR code. You can scan this code to run the app on your mobile device. Alternatively, you can run the app on an emulator.*\n\n## Future Features\n\nThe following features are planned for future updates:\n\n- [ ] Create playlists\n- [ ] Add songs to playlists\n- [ ] Background audio playback\n- [ ] Play songs in shuffle/repeat mode\n- [ ] Play local songs\n\n\n## Contact\n\nI am always looking for ways to improve my project. If you have any suggestions or ideas, I would love to hear from you.\n\n[![Github](https://img.shields.io/badge/GitHub-673AB7?style=for-the-badge\u0026logo=github\u0026logoColor=white)](https://github.com/IndieCoderMM)\n[![Linkedin](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white)](https://linkedin.com/in/hthantoo)\n[![Gmail](https://img.shields.io/badge/Gmail-D14836?style=for-the-badge\u0026logo=gmail\u0026logoColor=white)](mailto:hthant00chk@gmail.com)\n\n## License\n\nThis project is licensed under the MIT License. See [LICENSE](./LICENSE) for more information.","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Findiecodermm%2Fsongify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Findiecodermm%2Fsongify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Findiecodermm%2Fsongify/lists"}