Giter VIP home page Giter VIP logo

smithereens's Introduction

Smithereens

Smithereens is a digested open-source data visualizer tool for your Smash Ultimate results.

Why use Smithereens?

  • Smithereens is accessible both via CLI, and web app.
  • Smithereens is open-source, meaning there is no barrier to entry to contribute and improve it based on what you want to see in the app.
  • Smithereens is not afilliated with any organization or sponsor, which I hope will increase the resilience of the project in the scene.
  • Smithereens is free and there are no ads anywhere in the platform.
  • Smithereens was thoroughly tested. First, by ensuring we're always at over 50% local test coverage, and, second, by running it via CLI non-stop for multiple days as 300 parallel jobs on a Kubernetes cluster without failure while aggregating player results. This allowed me to ensure we handle all edge cases (e.g., even load intensive requests for players like rm8, whose profile actually does not load on platforms similar to this).
  • Smithereens has cool features like:
    • Twitter share (i.e., share your result on Twitter as a Twitter Card - no more need for screenshotting),
    • fun metrics (e.g., what competitor type you are (0-2er, 1-2er, 2-2er, etc.)), and
    • more!

Installing the CLI

Please, check the build from source pre-requisites section before proceeding.

git clone https://github.com/danbugs/smithereens
cd smithereens
cargo build --release
cargo install --path .
smithe --help

Contributing

Please, check the build from source pre-requisites section before proceeding.

To get setup for contributing, run:

git clone https://github.com/danbugs/smithereens
cd smithereens
cargo build --release
cargo test --package smithe_lib --no-default-features -- --exact --nocapture --test-threads=1

If all tests pass, you should be good to go!

Building from source pre-requisites

  • Rust toolchain with the wasm32-unknown-unknown target,
  • Diesel-Rs,
  • Trunk-Rs, and
  • Postgres (system library).

If you run into any issues while setting this up, please considering making a PR (or at least an issue) to improve this document and help avoid others having to go through the same hurdles you did. It's been a while since I had to get setup from scratch for this project, so this section could be missing required steps or items.

smithereens's People

Contributors

cerlgit avatar danbugs avatar dependabot[bot] avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Forkers

cerlgit

smithereens's Issues

Make release announcement about Smithereens on Twitter

Describe the solution you'd like
For this, I was thinking of maybe reaching out to some prominent community figures to help get the word out there :)

Additional context
The pre-requisite of this is having the site actually deployed and working ๐Ÿ˜…

#2 subtask: implement player_id-to-gamer_tag mapping

I want to allow people to search results and whatnot based on their gamer tag. Considering StartGG doesn't allow searching by gamer tag (because they are not unique), I need to create a database that maps player ids (i.e., something that is searchable) to gamer tags (i.e., what I want to search by).

improve README

add clarification on:
(1) what the binary can currently do, and
(2) the fact that a website will exist in the future.

aside from that, add a "getting started" section.

Improve seeding display

Describe the solution you'd like
Our current seeding display is sorta wrong - it should show the first seeding you had at the event rather than the one from the last bracket phase you participated in.

Additional context
n/a

make website

Describe the solution you'd like
to start off, the website should have the exact same features as the CLI.

this will involve:

  • making the backend, and
  • making the frontend.

Additional context
n/a

Improve load times

Describe the solution you'd like
This will involve creating something like the username/data updater ( #31 ), to compile every player's results before the site going live. This should be a one time run.

Additional context
n/a

Improve head to head section

Describe the solution you'd like
Currently, the head-to-head section is very basic. There's tons of improvements that could be made to it, like (these are listed in order or priority):
(1) rn, we are querying based on the opponent_tag_with_prefix - this is terrible because if someone does just as much as change their prefix, they will show up as a different player in the head-to-head. We should query based on ID - I don't remember specifically why I didn't do that in the past, but it might have been something related to entrant IDs vs. actual user IDs. Perhaps, we can use game data (which does have IDs) to make that better by correlating it back to the set.
(2) display list of sets they've played.
(3) visual - make it look nicer.
(4) allow clicking on the opponent to view their profile (would be easy if we had opponent IDs).

Other than that, it could be cool to make displays for smt like: "your bracket demon" (i.e., whoever beats you the most), "you are a bracket demon to" (i.e., whoever you beat the most), etc.

Additional context
n/a

Make Share on Twitter Work on Mobile Too

Describe the solution you'd like
Currently, the "Share on Twitter" feature is blocked on mobile because of the way we're currenty screenshotting the DOM w/ html2canvas. If enabled, mobile shares look wonky like:
image

... so it was disabled. To fix this, we'd probably have to make some sort of changes to the CSS to generate smt that works regarless of screen size but is still optimal for a Twitter card.

Additional context
Side note: W/ this, let's also investigate it possibly not working on medium screen sizes. I tried setting the screensize to the iPad Pro option, but I get an error from the image-upload-backend w/:
image

Side note 2: The wonky example was actually captured from my computer w/ an emulation of the phone size. On the phone, for some reason, the image-upload-backend also fails and this probably warrants more investigation too.

update readme

Describe the solution you'd like
update status messages on what the cli can do

Additional context
n/a

Get ready to deploy frontend, and backend

Describe the solution you'd like
This includes:

  • creating the necessary Dockerfiles,
  • creating the necessary K8s yml files, and
  • updating CI.

Additional context
n/a

Visiting a profile should also trigger a profile (e.g., tag, photo, etc.) update

Describe the solution you'd like
I thought I had done this already, but that doesn't seem to be the case. Visiting https://smithe.net/player/2191110 shows the "Captinricard" tag but this user has changed their tag to "bool went0_2 = true;". This is a pretty easy issue to fix because it just requires making a backend route to call update (

async fn update_player_in_pidgtm_db(pti: &SGGPlayer) -> Result<()> {
) when someone visits that player's profile.

Additional context
n/a

Modify our current search engine

Describe the solution you'd like
This involves two things:
(1) I'd like exact matches of a tag searched to display at the top (e.g., when searching "tenant", we should get the result exactly matching that on the first page rather than on the third one behind tons of "lieutenants").
(2) Allow to search by ID/user slug (related to #106)

Additional context
n/a

Create table for `player_page_views`

Describe the solution you'd like
This will allow me to see which player has the most viewed profile and stuff like that, which are fun metrics.

Additional context
n/a

Remove nightly dependency

Describe the solution you'd like
As of now, our version of Rocket depends on nightly. It's probably outdated, so we can update it to fix this issue.

Additional context
n/a

Use pidgtm data to create real-time all-time ranking

Describe the solution you'd like
The idea here was to use this as an opportunity to learn more about ML and try to train a model to look at the million data points I have for games/sets/tournaments/players and compile a ranking.

Additional context
n/a

create update function on pidgtm cli

Describe the solution you'd like
This function will update existing data on the pidgtm db~ It will also help to add new data onto it.

Additional context
n/a

rename simple_smash_stats

simple_smash_stats is too long of a website name to type for when it becomes a website, and sss (i.e., its' acronym) isn't memorable enough.

players that never changed their prefix where not being added to pidgtm db

Description of the bug
players that never changed their prefix have a value of null for the prefix attribute. Initially, I thought that was an empty string, but that's only the case for players that have changed their prefix to something in the past and then back to nothing. I wasn't handling the case where players have never changed their prefix, and, due to that, a bunch of players were ignored when adding to the db.

To Reproduce
n/a

Additional context
n/a

Improve README docs

Describe the solution you'd like
Currently, our README docs don't really reflect proper setup because you need access to the PIDGTM database (which is not currently public) - it might be helpful to improve these docs w/ information on how to setup a mock database and run pidgtm compile to populate it a bit.

Additional context
n/a

Make `smithe.net` multi-page

Describe the solution you'd like
Currently, we're a single-page app. I'd like it to be multi-page to allow people to share a players' profile.

Additional context
n/a

Create Twitter Share

Describe the solution you'd like
I was imagining something that allows people to quickly share the result of a tourney, and watermark the bottom w/ smithe.net or smt like that (even as a way of organically advertising the site).

Additional context
n/a

Implement CI

Describe the solution you'd like
I want to create a GH Action that runs on every pull-request that does the following:

  • run make improve,
  • run make test, and
  • run make build.

Additional context
This should use caching to speed up build times.

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.