🏀 iOS and Android NBA app created with React Native

Overview

This Is Why We Play GitHub issues

Download on the App Store

Swish

An iOS and Android NBA app created with React Native. If you would like to request a feature, find a bug, have a question, or would like to leave feedback, open an issue! ⭐️ this repo to show support!

Download

  • iOS - Download here!
  • Android - Coming soon!

Features

  • Scores and stats for in-progress and completed games
  • Detailed play by play
  • Full team stats for a season
  • Full player stats for a season and over their career
  • Detailed player game stat graphs
  • Conference rankings
  • League leaders
  • Videos and highlights (coming soon)
  • Compare two players (coming soon)

Libraries Used

React Native

React Navigation

Redux

Redux Thunk

React-Native-SVG-Charts

React-Native-Modal-Dropdown

nba.js (custom and modified implementation to work with React Native)

Resources Used

Set Splash Screen iOS

Test your React Native App on your iPhone

How to Submit to the App Store

Getting Started

  • Fork (optional) and clone repo

    git clone https://github.com/jbkuczma/NBAreact.git && cd NBAreact
    
  • Install and link dependencies

    npm install
    
    npm link
    
  • Run

    npm run start:ios
    
    npm run start:iphoneX
    
    npm run start:android (an emulator must be running first)
    
Comments
  • Clicking on the current date in the navigation area causes a crash.

    Clicking on the current date in the navigation area causes a crash.

    date.split('/') is undefined.

    TypeError: date.split is not a function
    
    This error is located at:
        in ScoresScreen (created by Connect(ScoresScreen))
        in Connect(ScoresScreen) (at SceneView.js:17)
        in SceneView (at CardStack.js:385)
        in RCTView (at View.js:71)
        in View (at createAnimatedComponent.js:147)
        in AnimatedComponent (at Card.js:12)
        in Card (at PointerEventsContainer.js:39)
        in Container (at CardStack.js:414)
        in RCTView (at View.js:71)
        in View (at CardStack.js:348)
        in RCTView (at View.js:71)
        in View (at CardStack.js:347)
        in CardStack (at CardStackTransitioner.js:66)
        in RCTView (at View.js:71)
        in View (at Transitioner.js:142)
        in Transitioner (at CardStackTransitioner.js:19)
        in CardStackTransitioner (at StackNavigator.js:38)
        in Unknown (at createNavigator.js:13)
        in Navigator (at createNavigationContainer.js:214)
        in NavigationContainer (at SceneView.js:17)
        in SceneView (at TabView.js:30)
        in RCTView (at View.js:71)
        in View (at TabView.js:29)
        in RCTView (at View.js:71)
        in View (at TabViewPagerPan.js:251)
        in RCTView (at View.js:71)
        in View (at createAnimatedComponent.js:147)
        in AnimatedComponent (at TabViewPagerPan.js:238)
        in TabViewPagerPan (at TabView.js:117)
        in RCTView (at View.js:71)
        in View (at TabViewAnimated.js:194)
        in TabViewAnimated (at TabView.js:178)
        in TabView (at withCachedChildNavigation.js:44)
        in withCachedChildNavigation(TabView) (at TabNavigator.js:32)
        in Unknown (at createNavigator.js:13)
        in Navigator (at createNavigationContainer.js:214)
        in NavigationContainer (at App.js:29)
        in Provider (at App.js:28)
        in App (at renderApplication.js:35)
        in RCTView (at View.js:71)
        in View (at AppContainer.js:102)
        in RCTView (at View.js:71)
        in View (at AppContainer.js:122)
        in AppContainer (at renderApplication.js:34)
    handleException @ ExceptionsManager.js:65
    handleError @ InitializeCore.js:115
    reportFatalError @ error-guard.js:44
    __guardSafe @ MessageQueue.js:318
    callFunctionReturnFlushedQueue @ MessageQueue.js:117
    (anonymous) @ debuggerWorker.js:72
    
    bug 
    opened by fiveNinePlusR 4
  • Have tapping on a Tab button take you to the initial scene

    Have tapping on a Tab button take you to the initial scene

    In other apps when you tap on a tab button it will perform a function (ex: Instagram: search for a user, click their profile, click search tab button takes you back to the initial search screen).

    When you click the tab button while in a nested scene for that tab, you should go back to the root scene (ex: Scores screen -> game -> boxscore -> * tap scores tab button * -> back to Scores screen).

    Something along the lines of the following would go in navigationOptions({...}) of the tab navigator:

    tabBarOnPress: (scene, jumpToIndex) => { console.log('onPress:', scene) }

    source: https://reactnavigation.org/docs/tab-navigator.html#tabbaronpress

    enhancement 
    opened by jbkuczma 2
  • Career stats for player screen

    Career stats for player screen

    The player's screen currently only shows game stats for the current season. A great enhancement to this screen would be the option to show a player's career stats.

    enhancement feature 
    opened by jbkuczma 2
  • Detailed player game log

    Detailed player game log

    Right now in the player page, a list of their games is displayed along with points, rebounds, and assists for the game. Clicking on a game from the player page should go to a new page that displays more stats from that game.

    enhancement in progress feature 
    opened by jbkuczma 2
  • ios error

    ios error

    Bundling index.ios.js Transforming modules ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░ 99.0% (391/393)...(node:11817) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 668): UnableToResolveError: Unable to resolve module ./App/Assets/Images/back_button_white.png from /Users/open/NodeProjects/react-projects/NBAreact/App/NBAreact.js: Directory /Users/open/NodeProjects/react-projects/NBAreact/App/App/Assets/Images/back_button_white.png doesn't exist

    opened by sitexa 2
  • Individual player page does not load with historical data

    Individual player page does not load with historical data

    When the date is set to a date for a past season, the following happen:

    • Indivdual player page doesn't load
    • Player image does not render for the player cell

    Why? There is no player_id returned from the endpoints.

    bug 
    opened by jbkuczma 2
  • Team Stats Page

    Team Stats Page

    When a user clicks on the team logo from GameStatsTeam page, they will be taken to that team's own page. Possible ideas on what to include are season record, stat rankings, roster, player stats; will look into.

    enhancement to do 
    opened by jbkuczma 2
  • Add game info on press

    Add game info on press

    When one of the game cells are pressed on the scores page, provide more details. Ideas: points scored by quarter, team stats, maybe player stats. We'll see what direction this idea takes.

    enhancement in progress 
    opened by jbkuczma 2
  • The detail view of players and their stats should have a fixed column at the left that always shows that row's player.

    The detail view of players and their stats should have a fixed column at the left that always shows that row's player.

    when scrolling to the right you lose context of which player the stats are representing. might be nice to prevent diagonal scrolling as well as it makes it feel unpolished.

    enhancement 
    opened by fiveNinePlusR 1
  • Show game outcomes for team

    Show game outcomes for team

    Currently when looking at the TeamScreen only the Roster is shown. It would be nice to see the list of games played by the team and their outcome. Clicking on the game would take you to the DetailedGameScreen

    enhancement feature 
    opened by jbkuczma 1
  • Q&A: Why were the images taken out?

    Q&A: Why were the images taken out?

    As much as I loved having the team logos and player images in Swish, they had to be removed for release on the App Store. There is a branch (swish_with_images) that contains Swish before the images were taken out.

    As the development of Swish continues, I will try to update that branch as well with features that make it to master so the full app could still live on.

    In the future if I can acquire rights to use the actual team logos or some custom made alternative version, then I will add them back in.

    question 
    opened by jbkuczma 1
  • Cleanup code

    Cleanup code

    Title says it all. Ex:

    • Move similar styles into a common/styles.js file
    • Break up large components into smaller ones
    • Create stateless components when appropriate
    • Bind functions with functionName = () => {}
    • Remove props in class extends Component<Props>
    task 
    opened by jbkuczma 0
  • Look at differences between /games endpoint

    Look at differences between /games endpoint

    Currently the ScoresScreen is populated with data from data.nba.net. There is another endpoint from stats.nba.com that provides game info as well, sometimes with more information. This ticket is a place to gather info for if I want to change the source or even extend to include data from both sources.

    Example endpoints:

    |Source|URL| Notable Data | |-------|----|--------------| | data.nba.net | https://data.nba.net/prod/v2/20180507/scoreboard.json | - Faster data updates (not verified, based on observation)
    - All data for a game is contained in one object
    - Playoff matchup information | | stats.nba.com | http://stats.nba.com/stats/scoreboardV2/?gamedate=2018-05-07&leagueid=00&dayoffset=0 | - TeamLeaders for game
    - Playoff matchup information
    - Last Meeting
    - Win Probability (empty)

    task 
    opened by jbkuczma 1
  • Wrong team colors for game

    Wrong team colors for game

    Related to #62

    Steps:

    • standings tab -> select team -> team games -> select a game [1] -> scores tab -> select new game [2] -> standings tab
    • should be back at the game selected as [1]
    • game [1] team colors are now the team colors from game [2]

    Screenshots: [1]simulator screen shot - iphone x - 2018-04-26 at 11 08 36 [2]simulator screen shot - iphone x - 2018-04-26 at 11 08 47 [1]simulator screen shot - iphone x - 2018-04-26 at 11 08 56

    bug priority: medium backlog 
    opened by jbkuczma 3
Releases(v2.5)
  • v2.4(Jun 3, 2018)

    Notable additions and changes:

    • Tapping a tab button will take you to its initial screen (#55)
    • Fix bug where the LeadTracker graph would not show overtime (#70)
    • Player name column in a boxscore is now fixed; only stats are now scrollable (#72)
    • Fixed bug where completed games were showing their tip-off time (#75)
    • Add iPad support (#68)
    Source code(tar.gz)
    Source code(zip)
  • v2.3(May 6, 2018)

    Notable additions and changes:

    • Added a new screen that displays graphs for various player stats during a specific game
    • Add refresh capabilities to the game detail screen
    • Show a circle with the team's name and team color in a game cell instead of just the team
      • Resolve a layout issue found on iPhone SE (#64) and makes the teams easier to read
    • Fixed a bug where clicking the date in the scores screen header would crash the app
    • Fixed a bug where the boxscore would scroll horizontally on iOS but not Android
    • Added Rubik font throughout the rest of the app
    Source code(tar.gz)
    Source code(zip)
  • v2.2(Apr 18, 2018)

    Notable additions and changes:

    • Career stats for players added
    • Past game scores for a team added
    • Check past game details such as boxscore and other stats
    • Only allow the games list to be refreshed on current date
    Source code(tar.gz)
    Source code(zip)
  • v2.1(Apr 12, 2018)

    Notable additions and changes:

    • Addition of the league leaders tab/page
    • Addition of a search bar to search for any player and go to their player page
    • Addition of the current matchup as the title in the navbar for a game
    • Refractor of PlayerScreen.js to allow navigation from the selection in the league leaders table and from the player search
    • Refractor of Boxscore.js
    • Various improvements to the codebase suggested by CodeClimate
    Source code(tar.gz)
    Source code(zip)
  • v2.0_official(Mar 25, 2018)

  • v2.0(Mar 14, 2018)

    Many changes to NBAreact compared to its original implementation Some notable changes:

    • UI (huge change and much better)
    • Tab based navigation
    • Uses Redux
    • App name: NBAreact -> Swish (repo will remain NBAreact)
    Source code(tar.gz)
    Source code(zip)
  • v1.6(Mar 12, 2018)

  • v1.1(Sep 14, 2016)

  • v1.0(Sep 1, 2016)

    The master branch has been stable with a fully working app while I make improvements on other branches. Figured I should have a release created for the app now that it is functional.

    Source code(tar.gz)
    Source code(zip)
Owner
James Kuczmarski
James Kuczmarski
React Native utility library around image and video files for getting metadata like MIME type, timestamp, duration, and dimensions. Works on iOS and Android using Java and Obj-C, instead of Node 🚀.

Qeepsake React Native File Utils Extracts information from image and video files including MIME type, duration (video), dimensions, and timestamp. The

Qeepsake 12 Oct 19, 2022
iOS's Stocks App clone written in React Native for demo purpose (available both iOS and Android).

FinanceReactNative iOS's Stocks App clone written in React Native for demo purpose (available both iOS and Android). Data is pulled from Yahoo Finance

kf 2k Dec 29, 2022
Blazing⚡️Fast BTC and ETH Wallet Generator library for React Native, Android and iOS

Blazing ⚡️ Fast BTC and ETH Wallet Generator library for React Native, Android and iOS.

Coingrig 3 Feb 21, 2022
React Native library that implements PayPal Checkout flow using purely native code (swift).

react-native-paypal-swift React Native library that implements PayPal Checkout flow using purely native code (swift). Installation npm install react-n

Tibb 6 Nov 28, 2022
Ported scrcpy for mobile platforms, to remotely control Android devices on your iPhone or Android phone.

scrcpy-mobile Ported scrcpy for mobile platforms, to remotely control Android devices on your iPhone or Android phone. Currently only supports control

Ethan 140 Jan 2, 2023
React Native Todo List example app which uses Redux for managing app state

react-native-redux-todo-list A sample todo list app developed by using React Native and Redux. How to run the app Install react-native If you don't ha

null 43 Oct 11, 2022
The source code to How to build a news app with react native 📰

Royal News · The source code to How to build a news app with react native article on NimreyCode, medium, and dev.to. Requirements: Android Studio or X

Mohammed Salman 96 Aug 16, 2022
Discover Movies and TV shows - React Native

movieapp Discover Movies and TV shows Download APK file Download from Google Drive - v2.2.1 What's included Name Description React Native Build Native

June Domingo 1.8k Dec 28, 2022
Bridge between onfido-auth and react-native

react-native-onfido-auth-sdk Table of contents Overview Installation Usage 1. Creating the SDK configuration 2. Parameter details 3. Success Response

null 1 Mar 30, 2022
iOS 15 share play API in react-native

react-native-shareplay iOS 15 share play API in react-native Installation yarn add react-native-shareplay And go to Xcode Capabilities and enable "Gro

Popshop Live 27 Oct 16, 2022
POC for a bug with react-native-webview crashing on IOS 16.1

POC Shared Worker issues with IOS 16.1 webview Apple Developers post with workaround Webkit confirmed issue Start a simple http server with shared wor

Mauri de Souza Meneguzzo 2 Oct 31, 2022
Allows you to emulate an Android native library, and an experimental iOS emulation

unidbg Allows you to emulate an Android native library, and an experimental iOS emulation. This is an educational project to learn more about the ELF/

Banny 2.5k Dec 30, 2022
A react native interface for integrating payments using Braintree

A react native interface for integrating payments using Braintree

eKreative 17 Dec 30, 2022
React Native 实现无侵入自定义下拉刷新组件

react-native-ly-refresh-control 下拉刷新 iOS 基于MJRefresh 通过RCTCustomRefreshContolProtocol实现RefreshControl组件封装 JS端可以无侵入自定义下拉刷新只需要替换对应的refreshControl Androi

少言 12 Jul 2, 2022
React Native package for interacting with HomeKit devices

React Native package for interacting with HomeKit devices

Ibrahim Berat Kaya 4 Dec 24, 2021
react native esptouch

react-native-esptouch One should know that This is a Unofficial project. The official demo is below: EsptouchForAndroid EsptouchForIOS Getting started

五毛共和国 Wumaoland 0 Oct 25, 2021
React Native Template for Taro

React Native Template for Taro requirement taro: @tarojs/cli@^3.2.0 framework: 'react' quick start install react native library install peerDependenci

null 1 Nov 20, 2021
A suite of IoT tools to use with React Native.

react-native-iot-tools WIP. A suite of IoT tools for React Native applications. Package iOS Android @react-native-iot-tools/bluetooth ✅ ❌ @react-nativ

Sara Pope 3 Oct 31, 2022
A testing MQTT react native library

react-native-awesome-testing abc Installation npm install react-native-awesome-testing Usage import { multiply } from "react-native-awesome-testing";

null 0 Nov 26, 2021