Giter Club home page Giter Club logo

sobhanbera / sobyte-old Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 13.95 MB

Free music streamer and downloader made with love and developed with react-native framework. Download songs, listen to songs with offline songs, lyrics support, internationalization, attractive UI, optimized animations, playlist support and a vast number of features. Author - Sobhan Bera

Home Page: https://sobhanbera.github.io

JavaScript 7.66% TypeScript 89.73% Starlark 0.09% Java 1.35% Ruby 0.30% Objective-C 0.67% Shell 0.01% Vim Script 0.21%
music music-streamer i18n custom-themes awesome-ui songs theme-system dark-theme light-themes colorscheme

sobyte-old's Introduction

Sobyte Logo

Listen And Download Any Music Anytime, Anywhere. Let's Feel The Music.

Table of Contents
  1. App Features
  2. Get Started

App Features:

  • Free Music to listen
  • Free download any music!!!
  • Extremely easy to use
  • Minimilastic and Attractive UI
  • Theme System (Dark Theme, Light Theme, Custom Theme)
  • Different languages support (i18n)
  • Offline Capability
  • Many things are Customizable

TODO:

  • Work on App's performance issue.
  • Many parts of the app is laging due to state update and re-renderings. This need to be fixed.

Get Started:

Prerequisites

This is an example of how to list things you need to use the software and how to install them.

  • npm
npm install yarn@latest -g

or

npm install npm@latest -g

Environment Setup

  1. Fork this repository
  2. Clone the repository.
git clone https://github.com/[YOUR_GITHUB_USERNAME_HERE]/sobyte.git
  1. Run this command at the root of project directory.
yarn install
  1. To see the live demo of the app, follow this steps:
  • First run this command
yarn global add react-native
  • Now For physical device
    • Connect you device with computer using USB and enable USB Debugging in Developer Options
    • Then run this command
    react-native run-android
    
    • That's it wait for sometime to build the app and it will run automatically with live reload.
  • And For emulator
    • Run an emulator then run the same above command
    react-native run-android
    
  1. This step is crucial and important too.

    1. There is only one patch for now :-
    • Ctrl+Press on the TriggeringView Component imported from react-native-image-header-scroll-view package in any file (just search for it)

    • And change the follwing code componentWillMount to UNSAFE_componentWillMount and componentWillReceiveProps to UNSAFE_componentWillReceiveProps.

    • In short :-

           ...
      
      -    componentWillMount() {}
      +    UNSAFE_componentWillMount() {}
      
      -    componentWillReceiveProps() {}
      +    UNSAFE_componentWillReceiveProps() {}
           ...
           ...
  2. This is also a IMP setup for the music fetcher to work.

    1. Change the following lines in react-native-ytdl package info.js file :-
      const ytdl = (link, options) => {
          return ytdl.getInfo(link, options).then(info => {
      +       return info
      -       return getURLsFromInfoCallback(info, options);
          });
      };
  3. Step for vim/nvim users.

    1. Install ctags for the system.
    2. Run following command to generate tags file.
    • For full tags
    ctags -R .
    
    • For compressed size tags file.
    ctags -R --exclude=.git --exclude=.github --exclude=.github_src --exclude=.vim --exclude=.vscode --exclude=android --exclude=ios --exclude=node_modules --exclude=others .
    
    • For extended tags file.
    ctags -R --exclude=.git --exclude=android --exclude=.buckconfig --exclude=CODE_OF_CONDUCT.md --exclude=CONTRIBUTING.mddev_build.keystore --exclude=dev_build.keystore --exclude= --exclude= --exclude= --exclude= --exclude=.editorconfig --exclude=.env --exclude=.eslintignore --exclude=.git --exclude=.gitattributes --exclude=.github --exclude=.github_src --exclude=.gitignore --exclude=.gitmodules --exclude=init.vim --exclude=ios --exclude=.md --exclude=node_modules --exclude=.node-version --exclude=.npmrc --exclude=others --exclude=package.json --exclude=package-lock.json --exclude=.prettierignore --exclude=README.md --exclude=sobyte.session.sql --exclude=tags --exclude=tags_previous --exclude=tags_src --exclude=test.rest --exclude=.vim --exclude=.vimrc --exclude=.vscode --exclude=.watchmanconfig --exclude=yarn.lock .
    

File Structure (Tree)

Main Project Directory

app
├── MainApp.tsx
├── api
│   ├── MusicFetcher.tsx
│   ├── PlayerControls.tsx
│   ├── index.js
│   ├── parsers.js
│   ├── playerServices.js
│   └── utils.js
├── assets
│   ├── animations
│   │   └── logo_loading.gif
│   ├── fonts
│   │   ├── Elika Gorica.ttf
│   │   ├── Helvetica.ttf
│   │   ├── LucidaGrande.ttf
│   │   ├── Roboto-Bold.ttf
│   │   ├── Roboto-Regular.ttf
│   │   ├── Tahoma Regular font.ttf
│   │   ├── Ubuntu Bold.ttf
│   │   ├── Ubuntu Light.ttf
│   │   ├── Ubuntu.ttf
│   │   └── verdana.ttf
│   └── images
│       ├── icons
│       │   └── setting.png
│       ├── logo_name.png
│       ├── phone_screen.png
│       └── sobyte_logo_white.png
├── components
│   ├── AnimatedGradient
│   │   └── index.js
│   ├── Area
│   │   └── index.tsx
│   ├── AuthButton
│   │   └── index.tsx
│   ├── BottomSheet
│   │   └── index.tsx
│   ├── DoubleTap
│   │   └── index.tsx
│   ├── FullScreenLoading
│   │   └── index.tsx
│   ├── GlobalLoading
│   │   └── index.tsx
│   ├── GradientBackground
│   │   └── index.tsx
│   ├── Header
│   │   └── index.tsx
│   ├── HeaderCollapsible
│   │   └── index.tsx
│   ├── HeaderMain
│   │   └── index.tsx
│   ├── HeaderProfile
│   │   └── index.tsx
│   ├── HeaderSearch
│   │   └── index.tsx
│   ├── HeartBeatView
│   │   └── index.tsx
│   ├── HighPaddingView
│   │   └── index.tsx
│   ├── MusicPlayer
│   │   └── ProgressSlider.tsx
│   ├── Prompt
│   │   └── index.tsx
│   ├── Scaler
│   │   └── index.tsx
│   ├── ScalerAuthButton
│   │   └── index.tsx
│   ├── SobyteAlert
│   │   └── index.tsx
│   ├── SobyteTextInput
│   │   └── index.tsx
│   ├── T_C_PrivacyPolicy
│   │   └── index.tsx
│   └── index.ts
├── constants
│   ├── fakemails.ts
│   └── index.js
├── context
│   ├── Settings.tsx
│   └── index.ts
├── controller
│   ├── AppInside.tsx
│   ├── AppStartingPoint.tsx
│   ├── Authentication.tsx
│   ├── ExploreStack
│   │   └── index.tsx
│   └── ProfileStack
│       └── index.tsx
├── i18n
│   ├── en.json
│   ├── hi.json
│   └── index.js
├── interfaces
│   └── index.ts
├── rules
│   └── index.ts
├── screens
│   ├── Home.tsx
│   ├── authentication
│   │   ├── ForgotPassword.tsx
│   │   ├── Help.tsx
│   │   ├── Intro.tsx
│   │   ├── Login.tsx
│   │   └── Register.tsx
│   └── main
│       ├── Explore
│       │   └── Explore.tsx
│       ├── MusicPlayer.tsx
│       └── Profile
│           ├── Profile.tsx
│           └── Setting.tsx
├── styles
│   └── global.styles.ts
├── themes
│   ├── DarkTheme.ts
│   ├── ThemeProps.ts
│   ├── ThemeProvider.tsx
│   └── Themes.ts
└── utils
    ├── Colors.ts
    ├── Objects.ts
    ├── index.ts
    └── storage.ts

License

Distributed under the MIT License. See LICENSE for more information.

Author

sobhanbera (https://github.com/sobhanbera)

Contact


     

        

Sobyte Logo

sobyte-old's People

Contributors

sobhanbera avatar

Stargazers

 avatar

Watchers

 avatar

sobyte-old's Issues

Implement Theme System

Theme System

At least a Dark and a Light Theme for the initial stage of application is needed.

These are some images from the previous version of the app.

Screenshot 1 Screenshot 2 Screenshot 3 Screenshot 4 Screenshot 5

Music Player UI Needed

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Play song depending on the internet connection

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Implement a better feature in music player to change track.

Updated feature

Currently, we are scrolling to the next index of the flat list to trigger the "playback-track-changed" event of react-native-track-player and then change the song according to that. Instead of this approach we could directly play a song after detecting which song index was ended lastly and according to that play the next song and find the song index in the flat list variable and scroll to that particular index.

This approach will help us to play the track/song in some cases where the device is locked or the application is running in the background and not in front of the user on the screen itself.

More Data in explorer tab

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Implement i18n

Implementation of i18next

This feature will enable the use of different languages throughout the whole application.
The Documentation for this feature implementation is available here

Refrence Image

This feature implement would take some time. Then for the rest of adding languages will take time.

search tab should have two scrollview

The main scroll will be horizontal with data like songs list, artists list, playlist cards, etc.
These lists will consist of the list in the vertical direction and finally, they would form a virtual tab-like design.

Major-Changes

This is not an issue. This is the list of all the PRs, commits that are important to future builds.

Song are not played with that existing function

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

Splash-Screen

Splash Screen Issue:

  • While the react-native does not fetch the local user data and decides whether the user is logged in or not we have to show the Splash Screen.
  • Currently, because the splash screen hides before the user data fetching unwanted warnings are occurring like (Can't perform a React state update on an unmounted component).
  • After this, the app will wait some time but will not lag after launching the application.

Implement feature to read QR Code

This feature is dependent on the feature implementation at this issue #37.
After the QR Code for each and every user's profile is generated implement a feature to use phone camera and read the QR Code and get to the profile of the user.

Implement Animated Lyrics Text

Currently

When the line of lyrics is changed then the next line becomes large instantly. There is no transition between lines changing.

About this feature

When any of the lines of the lyrics change the main (current) lyrics line should fade up the font with bright colour.

Implementation

we can use the following implementation to achieve this task.

// current index is the index of current line based on the lrc string
const color = Animated.interpolate(currentIndex, {
    input: [currentIndex - 1, currentIndex, currentIndex + 1],
    output: ['any_semi_dark_visual_color', 'totaly_visible_color', 'any_semi_dark_visual_color']
})
    
// same for font size...
const fontSize = Animated.interpolate(currentIndex, {
    input: [currentIndex - 1, currentIndex, currentIndex + 1],
    output: [20, 24, 20]
})

return (
    ...
    <Text
        style={{
            fontSize,
            color,
            ...
        }}
    >
        {currentLyricsLine}
    <Text/>
    ...
    ...
)

Implement QR Code generation for profile.

QR Code:

In the user's profile, a QR code must also be provided by which he or she can share it and share their accounts/profile with other users over the sobyte application.

Play next song when a song ended

Play the next song after a song ended.

This feature may look easy but it isn't.

To play the next track when the current track/song is ended we should create a trigger point when the track ended and then scroll one element down in Music Player. After auto-scrolling to the next song, the song will play automatically.

The typical part here is the scrolling animation to take place.

Song Details tab design

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Music Player with scrollview songs list

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.