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:
An Android app for viewing and predicting the latest World Rugby rankings π
Home Page: https://play.google.com/store/apps/details?id=com.ricknout.rugbyranker
License: Apache License 2.0
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.
With the introduction of Coroutines in b49e037, it would be great to migrate some existing code to use them.
This would include:
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:
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).
See: https://developer.android.com/jetpack/androidx/androidx-rn#2018-nov-core
Notably:
activity
, fragment
, etc. Version shuffling will be required.SimpleTextWatcher
?OnBackPressedProvider
/OnBackPressedListener
.Also migrate to latest Material Components for Android:
https://github.com/material-components/material-components-android/releases/tag/1.1.0-alpha01
Other sport types include:
mrs
)mrs
)jmu
)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).
The current idea is for this to simply be a filter on the contents of the main screen (i.e. maintain tabs but filter rankings/fixtures/results/etc based on search text). The UI/UX for this is TBD.
The DB queries will need to be adjusted. Use the LIKE
operator or newly-added Room FTS (https://medium.com/@sienatime/enabling-sqlite-fts-in-room-2-1-75e17d0f0ff8).
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.
Most of the UI and resources for rankings should be in a separate :rankings
Gradle module, similar to :info
. This would include a separate rankings nav graph, which would need to be <include>
d in the main nav graph.
Currently blocked by this Navigation library bug:
https://issuetracker.google.com/issues/112513722
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.
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.
Occasionally, despite playing at a home venue, the home team appears as the away team. Not sure if this is a reporting mistake or if it is intentional.
An example from the Pacific Nations Cup 2019:
http://cmsapi.pulselive.com/rugby/match/27114
Implementation in wr-calc:
rawling/wr-calc@f179644
Will need to be somehow incorporated into rankings prediction calculations and UI.
It would be useful to know when the latest World Rugby rankings were last updated.
Ideas:
Using an Android App Bundle would lower the Play Store download size a bit, depending on device.
Currently blocked by this MotionLayout bug:
https://issuetracker.google.com/issues/112513722
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?
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.
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)
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.)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.