The idea of the Project is:
"Share knowledge in the form of podcasts, providing a simple way to learn".
PS: Podcasts was just the context chosen by me for this project, but all the code inside this app can be reused for any app that has audio-streaming as domain, so you can reuse everything here in your next music-player, podcast-library or anything inside this context!
On the Media 🤩: A review about this app (pt-BR 🇧🇷).
This project is part of my personal portfolio, so, I'll be happy if you could provide me any feedback about the project, code, structure or anything that you can report that could make me a better developer!
Email-me: stenio.wagner1@gmail.com
Connect with me at LinkedIn.
Also, you can use this Project as you wish, be for study, be for make improvements or earn money with it!
It's free!
1 - There's no functionality of Login/Register, the buttons and the forms in the Login Screen are only for UI matters.
2 - The only option that works at Settings screen it's toggle the Dark/Light theme, all the others are just for UI matters too.
If you want to test the App in the Production mode, the installers are listed below:
iOS .ipa installer: Soon!
-
Choose your interests (all, technology, philosophy, science, business, pop-culture or history - it will be used to make requests in order to have a personalized app with what the user want to hear about)
-
Get informations about a specific Author, with his New Releases/Featured Podcats and Related Authors
-
Get Informations about a specific Podcast, with its description and Author
-
Listen and download a single podcasts to listen offline (no need to create a playlist)
-
Playlists
- Create, Edit and Remove your Playlists
- Download Playlists to listen when the user goes offline
- Undownload Playlists
-
Player to listen the selected podcasts and also be able to:
- Shuffle Playlist
- Repeat Playist
- Repeat a single Podcast
- Download the current podcast
- Add the current Podcast to a Playlist
- Access the queue of next podcasts that will be played
- Remove podcasts from the queue
- Play/Pause the current Podcast
- Next/Previous podcast on the Playlist
-
Bottom Player
- Access the bottom player out of the Player screen in order to keep tracking the current podcast
- Get the Author and the Title of the current podcast
- Play/Pause/Forward the current podcast
- Track the timer of the current podcast
-
Discover
- A Dashboard with:
- Trending Authors
- Hottest Podcasts
- New Podcasts Released
- A Dashboard with:
-
Search
-
Search for Authors by name
-
Get information about a certain category, showing it's featured and trending podcats, and the authors that talk about this category
-
-
Library
-
Create Playlists, add podcasts and download it to listen offline
-
Access Your Podcasts (Downloaded + Podcasts saved on your Playlists) in the form of playlist
-
Access your Podcasts downloaded in the form of playlist
-
Access recently played podcasts in the form of playlist
-
Change your interests
-
-
Settings
- Choose between the Dark and Light theme
To run this project in the development mode, you'll need to have a basic environment to run a React-Native App, that can be found here.
Also, you'll need to the server running locally on your machine with the mock data. You can find the server and all the instructions to start the server here.
Cloning the Repository
$ git clone https://github.com/steniowagner/mindCast
$ cd mindCast
Installing dependencies
$ yarn
or
$ npm install
1 - Follow the instructions on the mindcast-server to have the server up and running on your machine.
2 - With the server up and running, go to the /.env.development file and edit the SERVER_URL value for the IP of your machine (you can have some issues with localhost if you're running on an android physical device, but you can use localhost safely on iOS).
It should looks like this:
SERVER_URL=http://IP_OF_YOUR_MACHINE:3001/mind-cast/api/v1
or
SERVER_URL=http://localhost:3001/mind-cast/api/v1
With all dependencies installed and the environment properly configured, you can now run the app:
Android
$ react-native run-android
iOS
$ react-native run-ios
- React-Native - Build the native app using JavaScript and React
- React-Navigation - Router
- Redux - React State Manager
- Redux-Saga - Side-Effect middleware for Redux
- Axios - HTTP Client
- ESlint - Linter
- React-Native-Dotenv - Configs from .env file
- Flow - Static Type Checker
- Prettier - Code Formatter
- Babel - JavaScript Compiler
- Reactotron - Inspector
- Styled-Components - Styles
- React-Native-Fast-Image - Image Loader
- React-Native-Linear-Gradient - Gradient Styles
- React-Native-SplashScreen - Splashscreen of the App
- React-Native-Vector-Icons - Icons
- React-Native-Side-Menu - Side Menu used on Player screen
- React-Native-Swipeout - Swipe for edit/remove playlists and remove podcasts inside some playlist
- React-Native-Video - Consume the audio files via streaming
- React-Native-FS - Handle download/undownload podcasts on file-system
- Image-Resize - Resize the Images
- Amazon S3 - Storage Service
You can send how many PR's do you want, I'll be glad to analyse and accept them! And if you have any question about the project...
Email-me: stenio.wagner1@gmail.com
Connect with me at LinkedIn
Thank you!
This project is licensed under the MIT License - see the LICENSE.md file for details