Code Monkey home page Code Monkey logo

rugby-ranker's Introduction

Hi there πŸ‘‹

I'm a Principal Software Engineer and UX/UI Designer.

My areas of focus are Android, Jetpack Compose, Design Systems and Kotlin Multiplatform.

I'm based in Cape Town, South Africa πŸ‡ΏπŸ‡¦

You can find me on:

rugby-ranker's People

Contributors

jacquessmuts avatar mayokunadeniyi avatar myricsept avatar ricknout avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rugby-ranker's Issues

Add video feed

The base URL to fetch World Rugby videos is:
https://cmsapi.pulselive.com/content/worldrugby/video/{lang}/ where lang is an ISO 2 letter language code (eg. en).

This is similar to that of the news feed and the same query params apply.

Reuse most of the UI from the news feed and make videos another tab under the news nav destination.

Migrate IO tasks to use Coroutines

With the introduction of Coroutines in b49e037, it would be great to migrate some existing code to use them.

This would include:

Display World Rugby fixtures and results

Fetch/cache matches from the World Rugby API. These would consist of fixtures (upcoming) and results (past) [there's also live matches, but that's outside the scope of this task].

Main screens for each sport (i.e. Men's, Women's, etc.) would need to now include tabs for rankings, fixtures and results, for example:

ui

For upcoming fixtures, a user should be able to tap the 'predict' button to pre-fill the rankings prediction input with the relevant teams and NHA/RWC flags.

As the amount of matches could be quite high, this presents an opportunity to use the Paging architecture component:
https://developer.android.com/topic/libraries/architecture/paging/

This would warrant at least a minor version bump (maybe even a major version).

Migrate to latest AndroidX updates

See: https://developer.android.com/jetpack/androidx/androidx-rn#2018-nov-core

Notably:

  • Separate libraries for activity, fragment, etc. Version shuffling will be required.
  • Minor core KTX update
  • "Added Kotlin extension functions for TextView TextWatcher actions." Can maybe remove SimpleTextWatcher?
  • "You can now register an OnBackPressedCallback via addOnBackPressedCallback to receive onBackPressed() callbacks without needing to override the method in your activity." Can remove OnBackPressedProvider/OnBackPressedListener.
  • Quite a few bug fixes and other minor improvements

Also migrate to latest Material Components for Android:
https://github.com/material-components/material-components-android/releases/tag/1.1.0-alpha01

Add support for more sport types

Other sport types include:

  • Men's 7s (mrs)
  • Women's 7s (mrs)
  • Junior Men's 15s (jmu)
  • Junior Women's 15s (jwu)

This may or may not require a navigation update, depending on the amount of new sports added.

Note: only the current sports (Men's 15s and Women's 15s) support rankings and this will need to be handled appropriately in the UI (no rankings tab or prediction input).

Add news feed

The base URL to fetch World Rugby news is:
https://cmsapi.pulselive.com/content/worldrugby/text/{lang}/ where lang is an ISO 2 letter language code (eg. en).

Other query params include:

  • tagNames (for the purpose of this feature, should be set to News)
  • pageSize (defaults to 10, does not seem to have the max 100 imposed by other endpoints)
  • page

Not sure if these should be periodically fetched/cached or just loaded on demand, given the large amount of data, paging, language (localization), etc.

Show live scores

This will be another tab on the main screen - "Live". This will still use the /match API but will need to include different states parameters:

  • L1: Live (first half)
  • LHT: Live (half time)
  • L2: Live (second half)

These results should not be cached, so slightly better network error handling and empty state support will need to be added.

While the fetching of live matches/scores should be tied to the relevant Android lifecycle, updates should be periodically fetched to give the "live" effect. Consider using Coroutines (https://stackoverflow.com/a/46890009/9283528) / RxJava (http://reactivex.io/documentation/operators/interval.html) / Handler for this.

Show team detail screen

This would be shown by tapping on a team in the list of rankings (and perhaps from elsewhere). The relevant API endpoint and design are still TBD.

Support dark theme

  • Switch to a MDC DayNight theme
  • Choose an adjusted dark color palette and add to -night resources
  • Adjust any remaining styles/layouts to use color references where possible
  • Maybe target Android Q?
  • Add a theme chooser to the Info screen

Show last updated time for latest World Rugby rankings

It would be useful to know when the latest World Rugby rankings were last updated.
Ideas:

  • Text: "Last updated DD-MM-YYYY" (maybe localise date format?)
  • Only show when not predicting rankings
  • Show as a subtitle underneath the "Latest Men's/Women's Rugby Rankings" title

F-Droid inclusion

Hi,

Since this app is Apache V2 licensed, are you considering the fact to add it to F-Droid? There is a strong community behind.

You can find some documentation here.

Otherwise, if you don't want to work on the inclusion of this app in F-Droid by yourself, would you still agree with the inclusion of your app in F-Droid by the maintainer team?

Show match detail screen

This would be shown by tapping on a match in the list of fixtures / results (and perhaps from elsewhere). The relevant API endpoint and design are still TBD.

onInterceptTouchEvent always returns false

Hello Nick I found an issue in the onInterceptTouchEvent function of OnBackgroundClickItemTouchListener.kt, it always returns false and doesn't return the value of gestureDetector.onTouchEvent(e)

Add swipe to refresh to rankings

At the moment, rankings are refreshed every 24hrs by WorkManager. However, it would still be useful to be able to refresh to get the latest rankings. This would be particularly useful when a lot of matches are being played (eg. November Internationals, Rugby World Cup, etc.)

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.